こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

メールとパスワードのログイン認証

メールとパスワードのログイン認証のプログラムがいまいちできません。
訂正すべき箇所がお分かりになる方よろしくお願いします。

尚、下記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']);
}
}
?>

投稿日時 - 2013-11-14 17:59:52

QNo.8347278

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

<?php
print crypt('abcdefg');
?>

を実行してみれば(リロードさせてみれば)自明だと思います。


cryptの第二引数を指定してください。

http://php.net/manual/ja/function.crypt.php

投稿日時 - 2013-11-15 08:59:18

あなたにオススメの質問