- 締切済み
SESSIONの削除について
SESSIONを使用し、問い合わせフォームを作っています。 最後に問い合わせ完了をした際にSESSIONの削除をおこなっているのですが、 どのSESSION削除方法がよいかわからずご質問させていただきました。 ・unset(); ・$_SESSION = array(); フォームから受け取るSESSIONは $_SESSION['contact']['key']; $_SESSION['contact']['data']['name']; $_SESSION['contact']['data']['email']; としており、 unset($_SESSION['contact']); としています。 ところが、ユーザーAとユーザーBが同時にお問い合わせページに入力をおこなったとし、ユーザーAが先に完了した場合ユーザーBのSESSIONも削除される(切れる?)といった現象がおきており、困っております。(もしかしたら別問題かもしれませんが・・・) 自分の認識では unset()は個別に削除でき、ユーザーAのSESSIONのみ削除する。 $_SESSION = array();はユーザーA、ユーザーB両方のSESSIONを初期化(削除)すると認識しております。 間違っておりませんでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
全く違います。session_id関数を利用して無理やり他人のセッションIDに変更しない限り、他人のセッションに干渉することはありえません。 unset($_SESSION['var']) → 自分のセッション変数のvarキーを削除する $_SESSION = array() → 自分のセッション変数を空にする というわけで「別問題」説が濃厚となります。 備考: PHPでセッションを完全に破棄する方法 http://d.hatena.ne.jp/Kappuccino/20080726/1217049706
- yambejp
- ベストアンサー率51% (3827/7415)
状況がよくわからないのですがセッションIDはどのように発行していますか?
補足
session_start(); if(!isset($_SESSION['contact']['key'])) { $_SESSION['contact']['key'] = md5(uniqid(mt_rand(), TRUE)); } としています。