我有一个脚本,用于在用户登录时设置我的 uid 和电子邮件 session 。
在 2 个变量中:
$_SESSION["uid"] = $user_id;//1,2,3 etc..
$_SESSION["email"] = 'my@email.com';
我有一个功能,用户可以通过 ajax 发布一些数据。 但是当数据被发送到服务器并且请求完成时,我的电子邮件 session 的值就会被删除,这会导致我的用户无法执行某些操作。
我搜索了我的整个脚本,但找不到任何内容
$_SESSION["email"] = '';
在 ajax 请求完成后或其他任何地方。
有什么线索吗?
编辑: _SESSION 的 var_dump:
array(2) { ["email"]=> &string(0) "" ["uid"]=> &string(11) "91283921834" }
解决方案: 我的主机显示 5.2.17 作为默认 php 版本,所以我不得不调用
AddType application/x-httpd-php53 .php
在我的 .htaccess 文件中,让它将 5.3.5 视为实时 php 版本,删除了引用,现在它工作正常。
最佳答案
你在某个地方通过引用你的 session 来分配一个变量,你可以在你的 var_dump
中用 &
字符看到这一点:
array(2) { ["email"]=> &string(0) "" ["uid"]=> &string(11) "91283921834" }
# ^^^ ^^^
PHP 中的引用意味着,在您的情况下 $_SESSION['email']
已成为其他一些变量的别名。如果那个 other 变量改变了,$_SESSION['email']
也会改变,因为它只是一个别名。
因此,您不仅需要查看您更改 $_SESSION['email']
的代码,更重要的是,哪些部分使其成为别名以及别名在哪里发生更改。
这只是一个猜测,但搜索 &$email
或只是 $email
。查找通过引用接受参数 (&$parameter
)、通过引用返回或通过引用使用参数调用的函数。
关于ajax请求后php session 值被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6789274/