PHPでSESSIONが引き継がれない。
Q&A
Closed
PHPでSESSION['customer']が引き継がれません。
送信元でVAR_DUMPしたところ、$_SESSION['customer']が生きているころを確認しましたが、送信先で同様にVAR_DUMPすると、下記のエラーになります。
Warning: Undefined array key "customer" in C:\xampp\htdocs\Portfolio\password_reissue_update.php on line 17
NULL
Warning: Undefined array key "customer" in C:\xampp\htdocs\Portfolio\password_reissue_update.php on line 18
Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\Portfolio\password_reissue_update.php on line 18
NULL
他の自分で書いたソースで、上手くいっているものと比較すると、違いは送信元でheader関数で遷移していることなので、検索して、
https://mgmgblog.com/post-2461/
を確認しましたが、exitも併用しています。
送信先で新たにCSRF対策用のSESSIONを作成していることが気になると言えば気になるのですが。
原因究明にご協力いただければ幸いです。
ソースコードを添付します。
送信元
<?php
require_once('db_connect.php');
require_once('password_db.php');
function escape($val)
{
return htmlspecialchars($val, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}
$mailAddress = escape($_POST['mail']);
$sql = ("select
*
from
customer
where convert(AES_DECRYPT(UNHEX(mail_address), '" . $password . "')USING utf8) = :mail_address");
$stmt = $pdo->prepare($sql);
$stmt -> bindValue(':mail_address', $mailAddress);
$stmt -> execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($row as $data){
if(isset($data)){
$_SESSION['customer']=[
'customer_id'=>$data['customer_id']
];
}
}
var_dump($data);
var_dump($_SESSION['customer']);
if(isset($_SESSION['customer'])){
header('Location: password_reissue_update.php', true, 303);
exit();
}
else{
header('Location: login_failed.php', true, 303);
exit();
}
?>
送信先
<?php
session_start();
header('Expires:-1');
header('Cache-Control:');
header('Pragma:');
function generateToken(){
$bytes = openssl_random_pseudo_bytes(16);
return bin2hex($bytes);
}
$token = generateToken();
$_SESSION['token'] = $token;
function escape($val)
{
return htmlspecialchars($val, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}
var_dump($_SESSION['customer']);
var_dump($_SESSION['customer']['customer_id']);
?>
<!doctype html>
<html lang=ja>
<head>
<meta charset="utf-8">
<title>パスワード再発行申請</title>
<meta name="description" content="ヘッドセラピーを中心としたセラピーのサービスを提供しております。">
<!--リセットcss-->
<link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
<!--css-->
<link href="css/password_reissue.css" rel="stylesheet">
<!--レスポンシブ対応-->
<meta name="viwport" content="width=device-width, initial-scale=1">
<!--Googleフォント-->
<link href="https://fonts.googleapis.com/css2?family=Sawarabi+Gothic&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500&display=swap" rel="stylesheet">
</head>
<body>
<?php require_once('header.php')?>
<h1>パスワード再発行申請</h1>
<form class = "menu" id="confirm" method="post" action="password_reissue_update_conf.php">
<input type="hidden" name="token" class="token" id="token" value="<?=$token?>">
<div class = "new_password" id="new_password">
<label for = "new_pass">新パスワード</label>
<input type = "password" name = "password" id = "password">
</div>
<div class = "new_password_con" id="new_password_con">
<label for = "password">新パスワード(確認)</label>
<input type = "password" name = "password_con" id = "password_con">
</div>
<div class="button">
<button type="return" class="return" name="return" id="return" onclick="history.back()">戻る</button>
<button type = "submit" class="send" name = "send" value="send" id="send">送信</button>
</div>
</form>
<?php require_once('footer.php')?>
<?php require_once('js/password_reissue_update_js.php')?>
</body>
</html>
自分で試したこと
ここに問題・エラーに対して試したことを記載してください。
0