こんにちは、前回の「送信の続きからデータベース接続」に引き続き
今回は、ログイン処理からページ遷移をやっていこうと思います。
これは、前回までのです。
ログイン処理からページ遷移まで、ログイン処理その3「PHP」
今日は、
前回のログイン処理が完了後のページなので
前回までのプログラムは前回の確認をお願いします。
<?php
session_start();
?>
<!DOCTYPE html>
<html lang=“ja”>
<head>
    <meta charset=“UTF-8”>
    <title>Document</title>
</head>
<body>
<h2>ログイン状況</h2>
<hr>
<?php
 
まず、新規のとんだページにはこのように書きます。
こちらでは、初めに
<?php
session_start();
?>
 
セッションの処理をしています。
絶対に忘れないようにしましょう!
次に
if(isset($_SESSION[‘OK’])){ }
 
こちらの処理をしていきます。
前回、僕のプログラムでは「OK」もセッションで
サーバに保存しているのでそのデータがあれば処理を開始する感じです。
この中に
<form action=”” method=”POST”>
    <input type=”hidden” name=”hid” value=”hid”>
<input type=”submit” value=”ログアウト”>
</form>’;
 
こちらを入力しました。
ログアウトボタンの作成ですね。
PHPの中に書きましたが、
外に書いてもOKです。
else{
echo “ログインしていません</br></br>”;
echo ‘<a href=”login.php”>Login画面へ</a>’;
}
 
遅くなりましたが、先ほどのセッションで「OK」が読み取れなかったときの
処理です。
次に下のようなのを書きます。 
if(isset($_POST[‘hid’])){
$_SESSION=array();
if(isset($_COOKIE[session_name()])){
    setcookie(session_name(),”,time()–3600,‘/’);
    } session_destroy();
    header(“Location:ログアウトのページ.php”);
exit();
}
 
一応、こっちの処理は
先ほど作ったフォームのログアウトボタンを
押したときの処理になります。
セッション変数を破棄して、
cookieセッションIDを破棄、セッションを破棄しています。
セッション変数の破棄はusen()でもよいです!
time()でもよいでのですが念のために-3600と
ガバット削除します。
ログイン後の画面のまとめ
<?php
session_start();
?>
<!DOCTYPE html>
<html lang=“ja”>
<head>
    <meta charset=“UTF-8”>
    <title>Document</title>
</head>
<body>
<h2>ログイン状況</h2>
<hr>
<?php
if(isset($_SESSION[‘OK’])){
echo “現在ログイン中です。”,“</br></br>”;
echo “ID : “,$_SESSION[‘id’],“</br>”,“名前 : “,$_SESSION[‘name’],“</br>”;
echo ‘<br>
<form action=”” method=”POST”>
    <input type=”hidden” name=”hid” value=”hid”>
<input type=”submit” value=”ログアウト”>
</form>’;
}else{
echo “ログインしていません</br></br>”;
echo ‘<a href=”login.php”>Login画面へ</a>’;
}
if(isset($_POST[‘hid’])){
$_SESSION=array();
if(isset($_COOKIE[session_name()])){
    setcookie(session_name(),”,time()–3600,‘/’);
    } session_destroy();
    header(“Location:ログアウトのページ.php”);
exit();
}
?>
</body>
</html>
 
次は、ログアウトしたときのページです。
<?php
session_start();
?>
<!DOCTYPE html>
<html lang=“ja”>
<head>
    <meta charset=“UTF-8”>
    <title>ログアウト</title>
</head>
<body>
  <h2>ログイン状況</h2>
<hr>  
<?php
if(isset($_SESSION[‘OK’])){
    echo “ログアウト失敗”;
}else{
    echo “LOGOUTしました。</br></br>”;
    echo ‘<a href=”ログイン画面.php”>Login画面へ</a>’;
}
?>
</body>
</html>
 
シンプルですね!
一応、セッションが破棄されたかの確認をしています。
セッションが破棄されていたらログアウト成功
OKが保存されていたり、読み取ったらならログアウトは失敗という訳です。
これで完結です!!
その1~その4までありましたが
最後の方は駆け足だったので
分かりにくかったと思いますが、すみません。。
僕自身この記事を書くことで理解できたことや、
まだまだ分からないのもあるので
これからもきちんと取り組みたいと思いました!
それでは、ありがとうございました!!
 
コメント