問題
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>
参照
以下のサイトが、より詳しく解説してくれています。
【【PHPで簡易ログイン機能】DBを使わず固定文字列で取り敢えずログイン機能の実装 – CroughtBlog】
http://crought.com/blog/%E3%80%90php%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E6%A9%9F%E8%83%BD%E3%80%91db%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%9A%E5%9B%BA%E5%AE%9A%E6%96%87%E5%AD%97%E5%88%97%E3%81%A7%E5%8F%96%E3%82%8A%E6%95%A2-82/
コメント