問題 × 解決策

PHPの簡易的なログイン機能の実装方法

問題

PHPで簡易的なログイン機能を実装するには?

解決策

  • ユーザー名とパスワードのフォームを用意する。
    ※フォームの送信先を同じファイルに設定する。
  • 事前にユーザー名とパスワードを設定しておく。
    ※パスワードはMD5での変換後の文字列にしておく。
  • ユーザー名とパスワードが合っていたら、セッションを持たせる。
  • セッションを持っていた場合、ログインフォームの代わりにログアウトボタンを表示させる。

PHPの簡易的なログイン機能

PHPの簡易的なログイン機能の実装方法をご紹介します。

ユーザー名とパスワードのフォームを用意する。

ユーザー名とパスワードのフォームを用意します。
※フォームの送信先は同じファイルに設定しておきます。

index.php

<form method="post" action="./">
    <label for="user">ユーザー名</label>
    <input id="user" type="text" name="user">
    <br>
    <label for="password">パスワード</label>
    <input id="password" type="password" name="password">
    <br>
    <input type="submit" name="login" value="ログイン">
</form>

事前にユーザー名とパスワードを設定しておく。

事前にユーザー名とパスワードを設定しておきます。
※パスワードはMD5での変換後の文字列にしておきます。

index.php

$user = 'ユーザー名の文字列';
$password = 'パスワードをMD5に変換した文字列';

ユーザー名とパスワードが合っていたら、セッションを持たせる。

フォームから送信されたユーザー名、パスワードと、事前に設定しておいたユーザー名、パスワードを比較し、合っていたらセッションを持たせます。

index.php

session_start();
if(isset($_POST['login'])){
    if ($_POST['user'] == $user && md5($_POST['password']) == $password){
        $_SESSION["LOGIN"] = 'ON';
        $message = 'ログインしました。';
    }
    else{
        $message = 'ユーザー名かパスワードが間違っています。';
    }
}

セッションを持っていた場合、ログインフォームの代わりにログアウトボタンを表示させる。

セッションを持っていた場合、ログインフォームの代わりにログアウトボタンを表示させます。

index.php

<?php
if( !empty( $_SESSION["LOGIN"] ) && $_SESSION["LOGIN"] == "ON" ):
?>
<div class="section">
<p style="color: red;"><?php echo $message; ?></p>
	<form method="post" action="./">
    <input type="submit" name="logout" value="ログアウトする">
	</form>
</div>
<?php
else:
?>
<div class="section">
<p style="color: red;"><?php echo $message; ?></p>
<form method="post" action="./">
    <label for="user">ユーザー名</label>
    <input id="user" type="text" name="user">
    <br>
    <label for="password">パスワード</label>
    <input id="password" type="password" name="password">
    <br>
    <input type="submit" name="login" value="ログイン">
</form>
</div>
<?php
endif;
?>

簡易的なログイン実装機能の一通りの記述例

上記を元に、簡易的なログイン実装機能の一通りの記述例は以下になります。

<?php
session_start();
$message = '';
$user = 'ユーザー名の文字列';
$password = 'パスワードをMD5に変換した文字列';
if(isset($_POST['login'])){
    if ($_POST['user'] == $user && md5($_POST['password']) == $password){
        $_SESSION["LOGIN"] = 'ON';
        $message = 'ログインしました。';
    }
    else{
        $message = 'ユーザー名かパスワードが間違っています。';
    }
}
if( !empty( $_SESSION['LOGIN'] ) && $_SESSION['LOGIN'] == "ON" ):
$message = 'ログインしています。';
endif;
if(isset($_POST['logout'])){
    if( !empty( $_SESSION['LOGIN'] ) && $_SESSION['LOGIN'] == "ON" ):
        session_destroy();
		session_start();
        $message = 'ログアウトしました。';
    endif;
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>ログイン認証</title>
</head>
<body>
<h1>ログイン認証</h1>
<?php
if( !empty( $_SESSION["LOGIN"] ) && $_SESSION["LOGIN"] == "ON" ):
?>
<div class="section">
<p style="color: red;"><?php echo $message; ?></p>
	<form method="post" action="./">
    <input type="submit" name="logout" value="ログアウトする">
	</form>
</div>
<?php
else:
?>
<div class="section">
<p style="color: red;"><?php echo $message; ?></p>
<form method="post" action="./">
    <label for="user">ユーザー名</label>
    <input id="user" type="text" name="user">
    <br>
    <label for="password">パスワード</label>
    <input id="password" type="password" name="password">
    <br>
    <input type="submit" name="login" value="ログイン">
</form>
</div>
<?php
endif;
?>
</body>
</html>

参照

以下のサイトが、より詳しく解説してくれています。

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

8 − 3 =

「問題 × 解決策」
月別アーカイブ一覧

「問題 × 解決策」
月別アーカイブ一覧