###前提
phpでログイン機能実装中
ログアウトボタン押下で、セッション削除し、ログインページを表示したい。
###質問点
セッションが切れません、以下のコード参照
ご助言いただきたく宜しくお願いいたします。
php
1<?php 2session_start(); 3 4if (!isset($_SESSION["NAME"])) { 5 header("Location: 403.php"); 6 exit; 7} 8 9try { 10 $db = new PDO('mysql:host=〇〇;dbname=〇〇;charset=utf8', '〇〇’, '〇〇'); 11 $stt = $db->prepare('SELECT sdate FROM userdata'); 12 $stt->execute(); 13 } catch(PDOException $e) { 14 die('エラーメッセージ:'.$e->getmessage()); 15 } 16 17?> 18<!doctype html> 19<html> 20 <head> 21 <meta charset="UTF-8"> 22 <title>メイン</title> 23 24 <link rel="stylesheet" href="test.css"> 25 </head> 26 <body> 27 <div class="parent"> 28 <h1></h1> 29 30 31 <?php 32 echo('最終ログイン時間'); while ($row = $stt->fetch()) 33 echo $row["sdate"];?> 34 <div class="kakko" > 35 36 <form method="POST" action="session.php"> <input type="submit" id="logout" name="logout" value="logout" /> 37 38 39<?php 40 if (isset($_POST["logout"])) { 41 42$_SESSION = array(); 43if (isset($_COOKIE[session_name()])) { 44 setcookie(session_name(), '', time()-42000, '/'); 45} 46session_destroy(); 47 header("Location: login.php"); 48 49} else { 50 $errorMessage = ""; 51} 52} 53?> 54 55 </div> 56 <p>※当サイトは3分間で強制ログアウトされます。</p> 57 </div> 58 <ul> 59 60 61 </body> 62 </form> 63</html> 64 65 66
「セッションが切れていない」はどのように確認されたのでしょうか?提示のコードはどのような位置付けのコードですか?
提示のコードがこのファイルのすべてとしたらsession_start()が宣言されていないようですがコピペ漏れでしょうか
記載漏れ失礼いたしました。お忙しい中返信ありがとうございます。 log out ボタン押下→セッション削除→ログイン画面表示 なのですが、log outボタン押下→セッション削除(おそらくできていない)→403ページ(直接my pageを叩いた場合のページに飛んでしまいます)
提示コードは実際のコードそのままですか?全角の’が入っているのでそもそもエラーになると思いますが・・
遅くまで、返答にお付き合いいただき感謝いたします。。。記載場所のミスでした。
超私事ですが今週はかなり遅い夏休みがとれたので若干時間に余裕があります。ところで、$_SESSION["NAME"]ってどこで定義されるのでしょうか?提示されたコード内には見当たりませんが・・てことは!isset()は常にtrueなので403.phpへのリダイレクトは避けられないと思います
回答2件
あなたの回答
tips
プレビュー