2016-10-28 7 views
0

私はクッキーの章を学び、それらをいつ使うべきか理解する必要があります。この例では、ユーザーに情報を入力させてから[送信]をクリックします。その後、彼の情報が表示されます。しかし、私はログアウトボタンを持っており、彼がこれを押すと、ディスプレイメッセージをデフォルトに戻したい。ユーザをログアウトするためにクッキーを設定する方法

(これが不完全である)が、これまでのところ、私は唯一の私test.phpをファイルに次のように書かれている:

<?php 
    session_start(); 
    if(isset($_GET['submit'])) { 
     $fn = $_GET['fname']; 
     $ln = $_GET['lname']; 
     $stunum = $_GET['stunum']; 

     $_SESSION['firstname'] = $fn; 
     $_SESSION['lastname'] = $ln; 
     $_SESSION['studentNumber'] = $stunum; 
    } 

    setcookie ('logout', "Logout", time()-3600); 
    session_destroy(); 

?> 

<html> 
    <body> 
     <form action ="message.php" method="get"> 
      Firstname:<br><input type="text" name="fname"><br> 
      Lastname:<br><input type="text" name="lname"><br> 
      Student ID:<br><input type="number" name="stunum"><br> 
      <input type="submit" name="submit"> 
     </form> 
    </body> 
</html> 

そしてmessage.php中:

<?php 
    include('test.php'); 

    $firstname = $_SESSION['firstname']; 
    $lastname = $_SESSION['lastname']; 
    $studentNumber = $_SESSION['studentNumber']; 
    echo "Hi " . $firstname . " " . $lastname . "." . "Your student number is " . $studentNumber; 

    setcookie('logout', "Logout", time() + 3600); 
    if (isset($_COOKIE['logout'])) { 
     setcookie('logout', "Logout", time() - 3600); 
     session_destroy(); 
    } 
    ?> 

    <html> 
     <body> 
      <button name="logout">Logout</button> 
     </body> 
    </html> 

答えて

0

あなたは必要ありません。この「ログアウト」クッキーはまったくありません。ユーザーはセッションを介してログインしていますので、session_destroy();が十分です。あなたが定義したセッション変数( 'firstname'、 'lastname'、 'studentNumber')のみを "破棄"(設定解除)し、他のスクリプトからのデータを含むことができるセッション全体を破棄しないことです。だから、

ユーザーあなたの「ログアウト」ボタン 周りのフォームを作成し、POSTを経由して、いくつかの変数を送信ログアウトする場合:ユーザーがそのフォームを送信した場合

<form action="" method="post"> 
<button name="logout">Logout</button> 
<input type="hidden" name="logout" value="true" /> 
</form> 

そして、未設定のセッション変数を:

if(isset($_POST['logout'])) { 
    unset($_SESSION['firstname']); 
    unset($_SESSION['lastname']); 
    unset($_SESSION['studentNumber']); 
} 

これは良いコード例ではありませんが、あなたの教育に役立つことを願っています。

関連する問題