jackytom
@jackytom

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

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

1Answer

本件、自己解決しました。

var_dump($data)

したところ、ここまでは問題なかったので、

$data['last_name']

$data["convert(AES_DECRYPT(UNHEX(last_name), '" . $password . "')USING utf8)"]

とすることで問題なくセッションが作成されました。
お騒がせして申し訳ありませんでした。

0Like

Your answer might help someone💌