- 2009-09-08 (火) 17:10
- PHP
パスワードフィールドに入力された文字列を設定されたパスワードと照合し、一致していたらログイン後画面に飛ばす
簡単なログイン処理のサンプルソースです。
CookieとSession両方晒しておきます。
phpファイルを二つ用意しますが、便宜的に
- login.php → ログイン画面
- admin.php → ログイン後画面
としています。
先頭行にパスワードを設定する定数がありますが、
ファイル数の多いスクリプトではconfig.phpなどを作ってincludeすることが多いです。
ログイン処理の流れは大体こんな感じです。
- パスワードフィールドに文字列入れて送信
- 送信された文字列が設定されたパスワードと一致するか確認
- 一致していたらクッキー、またはセッションに暗号化したパスワードを保存して次のページへ遷移
- 一致していなかったらエラーメッセージを出す
ログアウト処理について追記しました
Cookie版
login.php
-
<?php
-
-
if(PASSWORD=== $_POST["password"]){//パスワード確認
-
-
}else{
-
message();//エラー表示
-
}
-
}
-
?>
-
<?php
-
function message(){
-
print "パスワードが違います";
-
}
-
?>
-
<form action="" method="post"><input name="password" type="text" value="pass" /><input name="action" type="submit" value="login" /></form>
admin.php
セッション版
login.php
-
<?php
-
-
if(PASSWORD === $_POST["password"]){//パスワード確認
-
-
}else{
-
message();
-
}
-
}
-
-
?>
-
<?php
-
function message(){
-
print "パスワードが違います";
-
}
-
?>
-
<form action="" method="post"><input name="password" type="text" value="pass" /><input name="action" type="submit" value="login" /></form>
admin.php
うっかりsession_start()抜けてたの修正
setcookie()もsession_start()もブラウザに何か出力を行う前にコールする必要があります。
<?phpの上に空白行があるだけでもエラーになるので要注意。
ハッシュ化する関数はmd5のほかにsha1があります。
ログアウト処理
このサンプルでのログイン条件は、「SessionまたはCookieに保存されている値が暗号化されたパスワードと一致しているか」です。
なのでログアウトしたい場合には、その保存されているSessionやCookieを破棄した上でトップにリダイレクトすればいいということになります。
まずはボタン。nameをlogoutとしときます。(共通)
admin.phpに追加する処理。
Cookie版
やる事はログイン失敗時の処理と同じです。
Session版
マニュアルそのままです。
-
-
// セッション変数を全て解除する
-
-
// セッションを切断するにはセッションクッキーも削除する。
-
// Note: セッション情報だけでなくセッションを破壊する。
-
$params["path"], $params["domain"],
-
$params["secure"], $params["httponly"]
-
);
-
}
-
-
//セッションを破壊してリダイレクト
-
}
関連記事
- Newer: [php] 正規表現サンプル
- Older: [js] 文字列を縦書きに変換する