如何在两个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
相关产品推荐
相关产品推荐

