<?php
/* まず POST 変数の受けとり。
PHP 4.2.0 以降はグローバル変数でいきなりPOSTで受け取った内容を
使うような下品なことはデフォルトでできないようになりました */
$f_username = $_POST['f_username'];
$f_passwd = $_POST['f_passwd'];
/* user 名が空だったら SQL 回すまでもないのでトラップ */
if ( $f_username == "" ) {
echo <<< EOT
<HTML>
<HEAD>
<TITLE>Authentication Falure</Title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc_jp">
</HEAD>
<body>
Authentication Failure : Cannot specify your username.<br>
<br>
ユーザ名が指定されていません。認証は失敗しました。<br>
<br>
<br>
<div align="center">
<a href="login.php">戻る</a></div>
EOT;
exit;
}
/* ここからセッション開始 */
session_start();
@$con = pg_connect("dbname=mod_auth_pgsql");
if ($con == false) {
print("認証データベースへの接続に失敗しました。理由;$php_errormsg<br>\n");
exit;
}
$table = "users"; /* ユーザ情報が入っているテーブル名 */
$unamefield = "name"; /* ユーザ名が入っているフィールド名 */
$pwfield = "pass"; /* パスワードフィールド名 */
$sql = "SELECT * FROM $table WHERE $unamefield LIKE '" . addslashes($f_username) . "'";
@$result = pg_query($con,$sql);
if ($result == false) {
print("SQL文 $sql が実行できませんでした。理由:" . pg_errormessage($con));
sessin_destroy();
exit;
}
if ( pg_numrows($result) > 1) {
/* ユーザ名が重複している? */
echo <<< EOT
<HTML>
<HEAD>
<TITLE>Authentication Falure</Title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc_jp">
</HEAD>
<body>
Authentication Failure<br>
<br>
データベース内部エラーにより認証は失敗しました。管理者に連絡してください。<br>
<br>
<br>
<div align="center">
<a href="login.php">戻る</a></div>
</body></html>
EOT;
session_destroy();
exit;
}
$d_passwd = pg_result($result,0,$pwfield);
/* 該当するユーザ名がない場合には NULL が返ってくる */
if ( ($d_passwd == NULL) || ($f_passwd != $d_passwd) ) {
/* パスワードが一致しない */
echo <<< EOT
<HTML>
<HEAD>
<TITLE>Authentication Falure</Title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc_jp">
</HEAD>
<body>
Authentication Failure<br>
<br>
認証は失敗しました。<br>
<br>
<div align="center">
<a href="login.php">戻る</a></div>
EOT;
session_destroy();
exit;
}
/* ここまできたら認証成功の時の処理を行う */
/* まずセッション変数の登録 */
/* もちろんパスワードなんかは登録しない */
session_register($ses_username);
$ses_username = $f_username;
/* 自動的に main.php へ画面遷移する */
header("Location: main.php");
?>
/* Location ヘッダを認識してくれないブラウザの場合にはリンクを表示 */
<html>
<head></head>
<body>
Authentication Completed!<br>
<br>
認証に成功しました。<br>
<br>
<a href="main.php">進む</a>
</body>
</html>
|