ページを超えてID情報を引き継ぐコードを書いていました。
JavaSciptでAjaxを用いてセッション変数に値を保存するphpページにPOST送信を行って、同じように別のページでAjaxでセッション変数に保存した値を取得するコードを書いたのですが、セッションIDが異なっており、取得できません。どうすればいいでしょうか。
デバッグ環境はChromeでPHPのバージョンは5.6.24です。
以下はセッション変数保存のためのPHPページを呼び出すJavaScriptコードと呼び出されるPHPコードです。
JavaScript
1var startSession = function(id){ 2 fetch("php/setSession.php", { 3 method: 'POST', 4 body: 'id=' + id, 5 headers: new Headers({ 6 'Content-type': 'application/x-www-form-urlencoded' 7 }) 8 }).then(function (response){ 9 return response.json(); 10 }).then(function(json){ 11 if(json.isSuccess == true){ 12 console.log("set session success"); 13 } 14 else{ 15 console.log("set session failed"); 16 } 17 }) 18}
php
1<?php 2session_start(); 3 4function setSession(){ 5 $result = array('isSuccess' => false, 'sessionId' => null); 6 if(isset($_POST['id'])){ 7 $id = $_POST['id']; 8 $_SESSION['id'] = $id; 9 $result['isSuccess'] = true; 10 $result['sessionId'] = session_id(); 11 } 12 return json_encode($result); 13} 14 15echo setSession(); 16?>
以下はセッション変数を取得するJavaScriptコードとPHPコードです。
JavaScript
1 2var getSession = function(){ 3 fetch("php/getSession.php", { 4 method: 'POST', 5 headers: new Headers({ 6 'Content-type': 'application/x-www-form-urlencoded' 7 }) 8 }).then(function (response){ 9 return response.json(); 10 }).then(function(json){ 11 if(json.isSuccess == true){ 12 console.log("get session success"); 13 return json.id; 14 } 15 else{ 16 console.log("get session failed"); 17 return null; 18 } 19 }) 20}
PHP
1<?php 2session_start(); 3 4function getSession(){ 5 $result = array('id' => null, 'isSuccess' => false, 'sessionId' => null); 6 $result['sessionId'] = session_id(); 7 if(isset($_SESSION['id'])){ 8 $result['id'] = $_SESSION['id']; 9 $result['isSuccess'] = true; 10 } 11 return json_encode($result); 12} 13 14echo getSession(); 15 16?>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/12 05:22
2018/03/12 05:26
2018/03/12 07:40
2018/03/12 10:36
2018/03/12 10:42
2018/03/13 01:24