メールとパスワードのログイン認証
メールとパスワードのログイン認証のプログラムがいまいちできません。
訂正すべき箇所がお分かりになる方よろしくお願いします。
尚、下記php以外に、ログイン記録用のcgiファイルがありますがそちらはちゃんと記録されます。
希望のプログラムの流れは、メールとパスワードが記録されてなかったら登録してほしい画面を出します。クッキーもしくは投稿したメールとパスワードどちらか間違っていたら、「メールアドレスかパスワードが違います」と出します。
<?php
#=====================================
# パスワード設定
#=====================================
#エラー画面(エラー処理)
#DispError(TITLE,TOPIC);
function disperror($title, $topic) {
?>
<html>
<head>
<title><?=$title?></title>
</head>
<body>
<?=$title?>
<?=$topic?>
</body>
</html>
<?php
exit;
}
header("Content-Type: text/html; charset=Shift_JIS");
$passfile = "passfile.cgi";
$admin_array = @file($passfile);
if (!isset($admin_array[0])) $admin_array[0] = '';
$admin = rtrim($admin_array[0]);
list($adminmail,$adminpass)=explode("<>",$admin);
if (!isset($_COOKIE['adminpass'])) $_COOKIE['adminpass'] = '';
if (!isset($_POST['adminpass'])) $_POST['adminpass'] = '';
if (!isset($_COOKIE['adminmail'])) $_COOKIE['adminmail'] = '';
if (!isset($_POST['adminmail'])) $_POST['adminmail'] = '';
if ($adminmail and $adminpass) {
if (!$_COOKIE['adminpass'] and !$_POST['adminpass']) {
?>
<html><head>
<title>パスワード認証</title>
</head>
<body>
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="POST">
メールアドレスを入力してください。<br>
<input type="email" name="adminemail" ><br>
管理パスワードを入力してください。<br>
<input type="password" name="adminpass" ><br>
<input type="submit" value="送信">
</form>
</body></html>
<?php
exit;
}
if ($_COOKIE['adminpass']) {
if ($_COOKIE['adminmail'] !== $adminmail) {
disperror("ERROR!", "メールアドレスかパスワードが違いますa");
exit;
}
if (crypt($_COOKIE['adminpass'],$adminpass) !== $adminpass) {
disperror("ERROR!", "メールアドレスかパスワードが違いますb");
exit;
}
}
if (!$_COOKIE['adminpass'] and $_POST['adminpass']) {
if ($_POST['adminmail'] !== $adminmail) {
disperror("ERROR!", "メールアドレスかパスワードが違いますc");
exit;
}
if (crypt($_POST['adminpass'], $adminpass) !== $adminpass) {
disperror("ERROR!", "メールアドレスかパスワードが違いますd");
exit;
}
setcookie("adminmail",$_POST['adminmail']);
setcookie("adminpass",$_POST['adminpass']);
}
}
else{
if(!isset($_POST['setpass']) or !$_POST['setpass']) {
?>
<html>
<head>
<title>パスワード設定</title>
</head>
<body>
<div align="center">
パスワードが登録されていません。<br>
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="POST">
メールアドレスを入力してください。<br>
<input type="email" name="setmail" ><br>
新しいパスワードを入力してください。<br>
<input type="password" name="setpass" ><br>
<input type="submit" value="登録"><br>
</form>
</div>
</body></html>
<?php
exit;
}
else {
$admin = $_POST['setmail'] . "<>" . crypt($_POST['setpass']);
$fp = @fopen($passfile, "w");
fputs($fp, $admin);
fclose($fp);
setcookie("adminmail",$_POST['setmail']);
setcookie("adminpass",$_POST['setpass']);
}
}
?>
お礼
テストした結果思惑通りになりました。 ありがとうございました。 今後とも活用させていただきます。 LancerVII様 本当にありがとうございました。