お世話になります。
前提・実現したいこと
$_SESSION情報の維持
プログラム全体の目的は、ユーザーが既に登録したメールアドレスを変更するとき、
新しいメールアドレスに、ランダムな文字列を送り、これをフォームに入力させて
新しいメールアドレスが、確かに本人の物であると確認する、というものです。
発生している問題・エラーメッセージ
ログイン直後、1ページ目にログインした旨を示す文字列を
$_SESSION['login']に格納しました。このページからの
遷移ではこの文字列が$_SESSION['login']に残っていますが、
その次の遷移後に$_SESSIONが空になっています。
該当のソースコード
1ページ目
php
1<?php 2session_start(); 3session_regenerate_id(true); 4//ログイン手続きは長いので省略 5$_SESSION['login']="login"; 6?> 7 <p>変更後のメールアドレス:</p> 8 <form action="2ページ目のURL" method="post"> 9 <input type="email" name="Newmail" size="60" maxlength="255"> 10<input type="submit" value="メールアドレスを変更"> 11</form> 12 13
2ページ目
php
1<?php 2session_start(); 3require "random.php";//乱数を作る手製ライブラリ 4$sessionname=generate_password(32); 5session_name($sessionname); 6session_regenerate_id(true); 7var_dump($_SESSION);//この時点ではセッション情報が残っている 8 9 10$pass=generate_password(10);//10文字の乱数を作る 11 12//ここで$passをデータベースにpassword_hashを通して保存 13 14mb_send_mail($_POST['Newmail'],"メール変更キー送付 ご利用をありがとうございます。",$pass);//キーをメールで送付 15 16?> 17<p>キーを入力</p> 18<form action="3ページ目のURL" method="post"> 19<input type="password" name="NewmailKey" size="60" maxlength="255"> 20<input type="submit" value="メールアドレスを変更"> 21</form> 22
3ページ目
php
1session_start(); 2session_regenerate_id(true); 3var_dump($_SESSION);//ここで消えたことが確認された
どうすれば、セッション情報が安全に継続されますか。
回答2件
あなたの回答
tips
プレビュー