ajax请求后php session 值被删除

标签 php ajax session request

我有一个脚本,用于在用户登录时设置我的 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/

相关文章:

php - Ajax 调用 (jQuery) 中的错误处理不起作用

php - 重置/清除对象?

php - MySQL PHP | "SELECT FROM table"使用 "alphanumeric"-UUID。速度与索引整数/索引字符

php - Mysql 分隔符在 mysql 中有效,但在 PHP 中无效

php - CentOS 7 PHP 7.2.3 Apache 2.4 : Apache is running a threaded MPM, 但您的 PHP 模块未编译为线程安全的。你需要重新编译PHP

php - 在 AJAX 中使用一次后重新绑定(bind)点击事件

jquery ajax 调用 asp.net mvc 应用程序获得两个未经授权的响应,然后确定

ruby-on-rails - 在站点之间共享 session 数据?

php - HDD 上的旧 PHP session 文件

python - 如何测试使用 SQLAlchemy 的 Flask 应用程序?