【问题标题】:Passing php session variables to multiple pages将php会话变量传递给多个页面
【发布时间】:2013-09-03 15:24:08
【问题描述】:

我在我的网站上传递会话变量时遇到问题。我可以在 adser/page2.php 上回显我的会话变量,但是当我转到第三页时,会话就消失了。

有人可以帮我解决这个问题吗?

login.php

session_start();

$_SESSION['account_id']= $account_id;
$_SESSION['user_email']= $user_email;

广告商/page2.php

session_start();

广告商/page3.php

session_start();

这是我的 phpinfo() 上的设置

Directive   Local Value Master Value

session.auto_start  Off Off

session.bug_compat_42   Off Off

session.bug_compat_warn On  On

session.cache_expire    180 180

session.cache_limiter   nocache nocache

session.cookie_domain   no value    no value

session.cookie_httponly Off Off

session.cookie_lifetime 0   0

session.cookie_path /   /

session.cookie_secure   Off Off

session.entropy_file    no value    no value

session.entropy_length  0   0

session.gc_divisor  100 100

session.gc_maxlifetime  1440    1440

session.gc_probability  1   1

session.hash_bits_per_character 5   5

session.hash_function   0   0

session.name    PHPSESSID   PHPSESSID

session.referer_check   no value    no value

session.save_handler    files   files

session.save_path   no value    no value

session.serialize_handler   php php

session.use_cookies On  On

session.use_only_cookies    Off Off

session.use_trans_sid   0   0

【问题讨论】:

  • 在您完成session_start() 之后检查所有页面中session_id() 的值。如果您获得不同的 ID,那么您的会话 cookie 设置不正确,或者 cookie 以某种方式丢失。副手,你的 session.save_path 是空白的,这可能不好。如果没有明确指定,不知道 PHP 会如何反应。
  • 谢谢,我实际上在故障排除时检查了我的 ID,这很奇怪,因为我得到了相同的 ID,这在这种情况下很好。我仍然可以弄清楚为什么会话没有通过。
  • 然后检查保存路径。也许 php 无法实际保存会话文件。
  • 谢谢马克。我会试一试的。
  • 我在 php5.ini 文件 session.save_path = "webroot/tmp" 中添加了以下路径,但出现以下错误。警告:session_start() [function.session-start]: open(webroot/tmp/sess_qttb31r4d4q7b1eder40ati5h1, O_RDWR) failed: No such file or directory (2) in /home/content/22/9958722/html/advertisers/campaigns.php在第 2 行

标签: php session session-storage


【解决方案1】:

我在使用 PHP 时遇到过多次这个问题,这很令人沮丧,

我不使用 session_id([new_session_id]) 将会话 ID 设置为字符串的 MD5 (http://php.net/manual/en/function.md5.php) 哈希,例如用户名与任意字符串的组合。用户名始终与用户数据相关联。

始终会重新计算会话 ID(这可能是最低的性能成本),但您始终可以在需要时找到会话,因为结果是确定性的。

我不确定这是否是最好的方法,但是在处理 PHP 中的会话时,围绕这个想法的某些东西似乎从来没有让我失望过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2012-07-24
    相关资源
    最近更新 更多