我有一个包含我所有页面的集中索引页面。在这个索引页面中,我开始了我的会话。我通过回显所有变量来测试它,它有效。
在 AJAX php 脚本上,我尝试调用会话变量,它似乎打印出任何内容:甚至没有会话 ID。根据我的研究,您需要在 AJAX 脚本上调用 session_start() 。我这样做了,它启动了会话,但使用不同的 ID 并且无法访问主网站上设置的会话变量。我在 Google 的前 5 页上没有发现任何重复我的问题的内容。
如果我将 mysqli 查询的'".$_SESSION['usr']."'部分更改为我的用户名,它就可以工作。这也证明了事实上,AJAX 脚本没有看到会话变量。
我该怎么做才能让 AJAX 脚本查看主网站上的会话而不是它自己的没有数据的会话?
代码:
阿贾克斯:
$(document).ready(function(){
// Moving North
$('#moveNorth').on('click', function(){
var value = $(this).text();
$.ajax({
url: "ajax/moveNorth.php",
type: "POST",
data: {data : value},
cache: false,
success: function(result) {
$('#coordinate-y').html(function(i, val) { return +val+1 });
},
error: function() {
alert("Something went wrong. Please email an admin.");
}
});
});
});
PHP 脚本:
<?php
$sessionTest = session_id();//$_SESSION['usr'];
echo "Session Test | " . $sessionTest . " |";
$mysqli = new mysqli("db_host", "db_user", "db_password", "db_name");
if($mysqli->connect_errno)
{
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
else
{
$mysqli->query("UPDATE table_name SET coord_x = coord_x - 1 WHERE username = '".$_SESSION['usr']."'");
}
?>
调用 AJAX 的页面:
<?php
$sessionTestID = session_id();//$_SESSION['usr'];
echo $sessionTestID;
?>