すべてのページを含む一元化されたインデックス ページがあります。このインデックス ページ内で、セッションを開始しました。すべての変数をエコーアウトしてこれをテストしましたが、動作します。
AJAX php スクリプトで、セッション変数を呼び出そうとしましたが、セッション ID ではなく、何かが出力されたようです。私の調査によると、AJAX スクリプトで session_start() を呼び出す必要があります。私はそうしました、そしてそれはセッションを開始しますが、IDが異なり、メインのWebサイトで設定されたセッション変数にアクセスできません. Google の最初の 5 ページで、私の問題を再現しているものは見つかりませんでした。
'".$_SESSION['usr']."' mysqli クエリの部分を自分のユーザー名に変更すると、機能します。これは、実際には AJAX スクリプトがセッション変数を認識していないことの証拠でもあります。
AJAX スクリプトを取得して、データのない独自のセッションではなく、メインの Web サイトにあるセッションを表示するにはどうすればよいですか?
コード:
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;
?>