我知道这个问题看起来好像被问了很多次,但请继续阅读.
问题是,与标题建议一样,当我向另一个页面发出POST请求时,会话数据没有保存在我的PHP脚本中.
session_start();在第一行.两个脚本都在同一台服务器上.
我将展示我编辑的代码,以显示它的作用.
脚本A.
<?
session_start();
echo session_id()."<br>";
print_r($_SESSION);
require_once __DIR__ . '/include/config.php';
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);
session_set_cookie_params(
0,
ini_get('session.cookie_path'),
ini_get('session.cookie_domain'),
isset($_SERVER['HTTPS']),
true
);
$_SESSION['haygsdb18'] = true;
$_SESSION['user_name'] = '';
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
$_SESSION['REMOTE_ADDR'] = md5($_SERVER['REMOTE_ADDR']);
$include_path = str_replace($_SERVER['DOCUMENT_ROOT'],'',__DIR__);
?>
$.post(
"<?=$include_path?>/include/ScriptB.php",
{OTP: OTP},
function(data) {
alert(data);
}
);
Run Code Online (Sandbox Code Playgroud)
脚本B
<?
session_start();
$msg = session_id()."\n";
$msg .= print_r($_SESSION,true);
exit($msg);
?>
Run Code Online (Sandbox Code Playgroud)
这样我就在调试.脚本B显示相同的会话ID,但没有会话变量.
我试图弄明白我已经失去了理智.令我吃惊的另一件事是服务器中另一个文件夹中的相同脚本(完全相同,复制粘贴)完美无缺.
请帮忙......我的想法用完了.
更新:更多调试信息
我在终端中查看sess了php创建的文件tail -f.加载脚本A时,变量将写入文件中,当进行AJAX调用时,文件将被清空(不删除,只是清空).
当脚本A执行时$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);,sess文件被写入HTTP_USER_AGENT|s:32:"2589a220583546006658f54ada687b45";,但是当脚本B执行$_SESSION['TEST'] = '1';时,sess文件中的所有内容都被替换为C1Hw6hhbpX-jWhvbRfz_reKX4tT66bcNpYGLGzxEg7I.
很多调试......发现了一个奇怪的事情
我比较了session_handler在我使用相同登录脚本的其他系统中编写sess文件的方式.在其他系统中,脚本A和脚本B正在将加密信息写入文件.问题是在这个特定的系统中,脚本A没有使用任何加密来编写文件,但脚本B是.
我怀疑脚本B期望会话信息是加密的,所以因为它不是它无法读取变量而它们已经消失了.当试图将变量从脚本B保存到脚本A时也会发生同样的情况.
所以现在我的问题是,当我没有告诉他们这样做时,脚本A和脚本B如何使用不同的session_write处理程序?我如何强迫他们使用相同的?
Alv*_*ndo 11
我终于明白了.
正如我在问题中发布的那样,问题是session_handler正在用不同的编码编写sess文件.因此,两个尝试读取文件的脚本都没有正确读取变量.
我有一个php.ini文件用于更改指令的默认字符集
default_charset = "iso-8859-1"
Run Code Online (Sandbox Code Playgroud)
我不得不使用这个指令,因为服务器管理员做了一些更改.我.user.ini在根目录中创建了一个文件以使用ISO编码,但我忘了删除此php.ini文件.
可能是charset正在搞乱编码/解码过程,因为php.ini文件只影响其中一个脚本(另一个脚本位于不同的文件夹中).所以我删除了该指令,问题就消失了.
希望这个问题能够帮助将来的某个人.
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |