PHPプログラミング

ワークショップ

ひと言掲示板を作る(22)

管理ページにログアウトを実装する

「ひと言掲示板」の管理ページからログアウトする機能を実装します。

この記事のポイント

  • 大事ではないデータの送信にはGETパラメータを使う
  • セッションの削除はunset関数で行う

目次

ログアウトするボタンを設置する

前回は掲示板に書き込まれた投稿を削除するページを作成しました。
今回は管理ページからログアウトをする機能を実装していきます。

以下のように、管理ページの下部にログアウトボタンを設置します。

管理ページにログアウトボタンを設置

こちらのボタンを押すとログアウトを実行し、ログインページに移動します。

ログインページの表示例

「ひと言掲示板を作る」の概要については「ひと言掲示板を作る」をご覧ください。
デモはこちら

前回までに作成したコードはこちら:Github

ログアウトする仕組み

管理ページはログインした際に次のようなセッションを作成しました。

コード例

$_SESSION['admin_login'] = true;

現在はこのログインセッション$_SESSION[‘admin_login’]の値でログイン状態を判断し、ログイン済みの場合は管理ページを表示して、そうでない場合にはログインページを表示するようになっています。

そこで、ログアウトの処理ではこのログインセッションを明示的に削除する形で実装します。
セッションの削除は変数などの削除と同様にunset関数を使用します。

コード例

unset($_SESSION['admin_login']);

以上の仕組みを踏まえて、実際にログアウトボタンを設置していきましょう。

ログアウトボタンを追記する

まずはログアウトボタンをHTMLとして追記します。
admin.php」を開き、以下のコードを追記してください。

コード例

<?php

-- 省略 --

<?php if( !empty($message_array) ){ ?>
<?php foreach( $message_array as $value ){ ?>
<article>
	<div class="info">
		<h2><?php echo $value['view_name']; ?></h2>
		<time><?php echo date('Y年m月d日 H:i', strtotime($value['post_date'])); ?></time>
		<p><a href="edit.php?message_id=<?php echo $value['id']; ?>">編集</a>  <a href="delete.php?message_id=<?php echo $value['id']; ?>">削除</a></p>
	</div>
	<p><?php echo nl2br($value['message']); ?></p>
</article>
<?php } ?>
<?php } ?>

<form method="get" action="">
    <input type="submit" name="btn_logout" value="ログアウト">
</form>
<?php else: ?>

-- 省略 --

form要素の中に送信ボタンとしてログアウトを設置しました。
ログアウト自体には機密データは含まれませんので、GETパラメータとして送信するようにします。

続いて、CSSにもログアウトボタンのための追記を行います。

コード例


-- 省略 --

input[type="submit"] {
	appearance: none;
    -webkit-appearance: none;
    padding: 10px 20px;
    color: #fff;
    font-size: 86%;
    line-height: 1.0em;
    cursor: pointer;
    border: none;
    border-radius: 5px;
    background-color: #37a1e5;
}
input[type=submit]:hover {
    background-color: #2392d8;
}

input[name=btn_logout] {
	margin-top: 40px;
	background-color: #666;
}
input[name=btn_logout]:hover {
	background-color: #777;
}


hr {
	margin: 20px 0;
	padding: 0;
}

-- 省略 --

以上でログアウトボタンの設置が完了しました。
試しに管理ページにログインすると、上記のようにページ下部にログアウトボタンが表示されます。

ログインセッションを削除する

続いて、PHPでセッションの削除を行います。

コード例

<?php
-- 省略 --

session_start();

if( !empty($_GET['btn_logout']) ) {
	unset($_SESSION['admin_login']);
}

if( !empty($_POST['btn_submit']) ) {

	if( !empty($_POST['admin_password']) && $_POST['admin_password'] === PASSWORD ) {
		$_SESSION['admin_login'] = true;
	} else {
		$error_message[] = 'ログインに失敗しました。';
	}
}

-- 省略 --

まずはempty関数でGETパラメータ「btn_logout」が渡されているかを確認します。
もしデータが渡されている場合はログアウトボタンが押されたと判断し、if文の中でunset関数を実行します。

ここでログインセッションは削除されます。
そして続くコードでもログインセッションがない状態として進み、結果としてログインページが表示されます。

以上でログアウトするための機能が実装できました。
実際にログアウトができるか試してみてください。

今回作成したコード:Github

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。