PHPでNULLのセッションが作られる。
Q&A
Closed
会員登録画面を作成しています。
流れは下記の通りです。
(1)名前、メアド、パスワードを入力
(2)(1)で入力されたメアドに本登録画面のリンク付きのメールを送信
(3)会員登録
(3)の会員登録ですでに登録されている名前はデフォルト表示させようとセッションを作ったのですが、NULLで作成されるセッションがあります。
一部のセッションは問題なくできています。
nullのセッションは複合化したデータが元になっています
var_dumpとセッションファイルでそのように判断しました。
NULLで作成される原因を検索したら、session_startが冒頭にないと発生するときがあるとのことでしたが、それには該当してないと思います。
NULLで作成される原因の調査ポイントがあればご教示いただきたいです。
ソースコードを添付します。
<?php
session_start();
unset($_SESSION['customer']);
require_once('db_connect.php');
require_once('password_db.php');
function escape($val)
{
return htmlspecialchars($val, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}
$sql = ("
select
customer_id,
convert(AES_DECRYPT(UNHEX(last_name), '" . $password . "')USING utf8),
convert(AES_DECRYPT(UNHEX(first_name), '" . $password . "')USING utf8),
convert(AES_DECRYPT(UNHEX(last_name_kana), '" . $password . "')USING utf8),
convert(AES_DECRYPT(UNHEX(first_name_kana), '" . $password . "')USING utf8),
gender,
convert(AES_DECRYPT(UNHEX(mail_address), '" . $password . "')USING utf8),
password
from
customer
where
convert(AES_DECRYPT(UNHEX(mail_address), '" . $password . "')USING utf8)=?
");
$stmt = $pdo->prepare($sql);
$stmt -> execute([escape($_POST['mail_address'])]);
foreach($stmt as $data){
var_dump($data);
if(password_verify($_POST['password'], $data['password'])){
$_SESSION['customer'] =
['customer_id'=>$data['customer_id'],
'last_name'=>$data['last_name'],
'first_name'=>$data['first_name'],
'last_name_kana'=>$data['last_name_kana'],
'first_name_kana'=>$data['first_name_kana'],
'gender'=>$data['gender'],
'mail_address'=>$data['mail_address'],
'password'=>$data['password']];
}}
if(isset($_SESSION['customer'])){
header('Location: customer_create.php', true, 303);
exit();
}
else{
header('Location: login_failed.php', true, 303);
exit();
}
?>
0