• 締切済み

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を初期化(削除)すると認識しております。 間違っておりませんでしょうか?

みんなの回答

noname#244856
noname#244856
回答No.2

全く違います。session_id関数を利用して無理やり他人のセッションIDに変更しない限り、他人のセッションに干渉することはありえません。 unset($_SESSION['var']) → 自分のセッション変数のvarキーを削除する $_SESSION = array() → 自分のセッション変数を空にする というわけで「別問題」説が濃厚となります。 備考: PHPでセッションを完全に破棄する方法 http://d.hatena.ne.jp/Kappuccino/20080726/1217049706

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

状況がよくわからないのですがセッションIDはどのように発行していますか?

imakaradesuyo
質問者

補足

session_start(); if(!isset($_SESSION['contact']['key'])) { $_SESSION['contact']['key'] = md5(uniqid(mt_rand(), TRUE)); } としています。