You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在两个PHP文件间通过session传递参数并设置cookie存储偏好值

实现方案

一、原有代码问题整理

  • 会话启动顺序错误:session_start() 必须放在所有操作$_SESSION的代码之前,你原代码先赋值$_SESSION再启动会话,变量不会被正确存储
  • Cookie设置逻辑错误:你当前的setcookie()把编程语言值作为Cookie名、操作系统值作为Cookie值,不符合分别存储两个偏好的需求
  • 第二个接收文件未启动会话,无法读取$_SESSION中的参数

二、修正后的完整代码

first.php(发送端)

<?php
// 先配置会话Cookie参数,再启动会话
$lifetime = 60 * 60 * 24 * 14;
$path = '/';
session_set_cookie_params($lifetime, $path);
session_start();

// 存储需要跨文件传递的session变量
$_SESSION['fullname'] = 'Jeyanthi Meenakshisundaram';
$_SESSION['courseid'] = 'IT-2600';

// 设置两个偏好存储Cookie
$favlanguage = 'JavaScript';
$favoperatingsystem = 'iOS';
$expire = strtotime('+1 year');
// 分别存储编程语言和操作系统偏好
setcookie('fav_language', $favlanguage, $expire, $path);
setcookie('fav_os', $favoperatingsystem, $expire, $path);
?>

second.php(接收打印端)

<?php
// 接收端必须先启动同配置的会话,才能读取session值
session_set_cookie_params(60 * 60 * 24 * 14, '/');
session_start();

// 打印session传递的两个参数
echo "传递的Full name:" . $_SESSION['fullname'] . "<br/>";
echo "传递的CourseID:" . $_SESSION['courseid'] . "<br/><br/>";

// 打印存储的Cookie内容
echo "存储的偏好Cookie内容:<br/>";
print_r($_COOKIE);
?>

三、使用说明

  • 先访问first.php完成会话初始化和Cookie设置
  • 再访问second.php就能看到跨文件传递的两个session参数,以及存储的两个偏好Cookie值
  • 会话Cookie有效期为14天,偏好存储Cookie有效期为1年,全站路径可访问

内容的提问来源于stack exchange,提问作者JeyanthiRanjit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:36:06