MJ-WAVE.COM

  1. MJ-WAVE.COM
  2. Web開発
  3. PHPでの簡易ログインフォームの作成

PHPでの簡易ログインフォームの作成

ツイート
このエントリーをはてなブックマークに追加

簡易ログインフォームを作成してみた。
ログインフォームのPHPファイルとログイン後のPHPファイルを作成して、
ログイン後のページにログインフォームをインクルードして、
ログイン済み、ログイン成功等をチェックする。

インクルードするログインフォームのソース↓

<?php
session_start();

define("LOGINID", "mj");
define("LOGINPASS", "xxxxxxxx");
define("AUTHADMIN", "1");

if(!chk_auth()) {
disp_login();
exit();//スクリプトを終了
}

function disp_login() {
?>
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>ログイン画面</title>
</head>
<body>
<h1>ログイン画面</h1>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<dl>
<dt>ログインID:</dt>
<dd><input type="text" name="l_id" /></dd>
<dt>パスワード:</dt>
<dd><input type="password" name="l_pass" /></dd>
</dl>
<p><input type="submit" name="submit" value="ログイン" /></p>
</form>
</body>
</html>
<?php
}
function chk_auth() {
if (isset($_POST["l_id"]) and isset($_POST["l_pass"])) {
if ($_POST["l_id"] == LOGINID and $_POST["l_pass"] == LOGINPASS) {
$_SESSION["auth"] = AUTHADMIN;
return TRUE;
}
else {
return FALSE;
}
}
else {
if (!isset($_SESSION["auth"])) {
return FALSE;
}
else {
if ($_SESSION["auth"] == AUTHADMIN) {
return TRUE;
}
else {
return FALSE;
}
}
}
}
?>

ログイン後、リロードしたらログアウトしてた。なんてことがないよう
セッション情報をつかってログイン状態を保持しなくてはならない。
セッション情報を扱うにはまず、2行目のsession_start()関数を実行する。
これでページ推移をしたさいにデータを保持できる。
$_SESSIONでセッション変数にデータをセットすることが可能になる。

define("LOGINID", "mj");
define("LOGINPASS", "xxxxxxxx");
define("AUTHADMIN", "1");
[/code]
define()は定数定義。定数定義はあとから上書き、変更することができないので、
注意が必要。変更、上書きしようとするとFALSEが返ってくる。

[code language="php"]
if(!chk_auth()) {
disp_login();
exit();//スクリプトを終了
}

ifの条件式で関数を指定するとその関数を実行して返ってきた値で条件を指定している。
この場合、FALSEが返ってきたら実行する。

function disp_login() {
?>
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>ログイン画面</title>
</head>
<body>
<h1>ログイン画面</h1>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<dl>
<dt>ログインID:</dt>
<dd><input type="text" name="l_id" /></dd>
<dt>パスワード:</dt>
<dd><input type="password" name="l_pass" /></dd>
</dl>
<p><input type="submit" name="submit" value="ログイン" /></p>
</form>
</body>
</html>
<?php
}

関数の途中で<?php?>タグを閉じて、HTMLを関数内に組み込むことも可能。
セッション情報が空、ログインID&パスワードが入力されてなければ、上記関数が実行される。

function chk_auth() {
if (isset($_POST["l_id"]) and isset($_POST["l_pass"])) {
if ($_POST["l_id"] == LOGINID and $_POST["l_pass"] == LOGINPASS) {
$_SESSION["auth"] = AUTHADMIN;
return TRUE;
}
else {
return FALSE;
}
}
else {
if (!isset($_SESSION["auth"])) {
return FALSE;
}
else {
if ($_SESSION["auth"] == AUTHADMIN) {
return TRUE;
}
else {
return FALSE;
}
}
}
}
?>

chk_auth()ユーザー定義関数でログインID、パスワードの入力の有無、セッション情報にログイン情報がセットされているかをチェックして、表示を分岐する。

<?php
require_once("auth.php");
$p_title = "認証済みのユーザーのみに表示するページ";
?>
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title><?php echo $p_title?></title>
</head>
<body>
<p>認証済みのユーザーに表示されます。</p>
</body>
</html>

ブラウザでアクセスするページは上記のページだが、require_once()関数で、auth.phpをインクルードしている。
require()関数require_once()関数があるが、
require()関数でインクルードすると、同じものを呼び出す際の回数制限がなく、
require_once()関数は同じものは呼び出せない。
(ただし、ほとんどの場合、外部ファイルは一度しか呼び出さないので、require_once()を優先的に使った方がいい。)

実際に作成してみた簡易ログインフォームはこちら。

もし、この記事が役に立ったらシェアしてくださいね!

ツイート
このエントリーをはてなブックマークに追加
タグ
, ,
カテゴリ

RECOMMEND BOOKS 筆者オススメ!! この記事に関連する書籍一覧

この記事に関連する書籍はありません