对不起,如果这是一个愚蠢的问题,但最近我一直在为客户设计一个网站,我的会话发生了一些奇怪的事情。
该网站有一个 PayPal 按钮,可将用户重定向到 PayPal,以便他们在再次重定向到该网站之前确认付款。
在重定向用户之前,会保存大量会话变量。其中一些与 PayPal 有关,另一些与我网站上的内容有关,例如确定哪个用户登录的变量、他们的购物车项目等。
现在,这就是事情出错的地方......
用户从 checkout.php 重定向到 PayPal。在它们被重定向之前,站点的所有会话变量都存在(由 var_dump 和 print_r 显示)。这可以。
用户从 PayPal 返回到 orderreview.php,但 var_dump 和 print_r 现在显示站点会话变量丢失,但所有 PayPal 变量都在那里。
我通过删除“session_start();”解决了这个问题 从 orderreview.php 的顶部。
所以我的问题是,为什么删除该行可以解决问题?为什么以前不能用?
我以为我理解 PHP 会话,但显然我并不像我想象的那样理解它们。
我在某处读过这个:
“从 PHP 4.3.3 开始,在会话已经启动时调用 session_start() 将导致 E_NOTICE 级别的错误。此外,第二次会话启动将被忽略。”
所以我假设在脚本顶部调用 session_start 不会影响任何会话,如果会话已经更早启动。
感谢您的任何回答,如果这是一个愚蠢的问题,我再次道歉。