- 締切済み
メールとパスワードのログイン認証
メールとパスワードのログイン認証のプログラムがいまいちできません。 訂正すべき箇所がお分かりになる方よろしくお願いします。 尚、下記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']); } } ?>
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- agunuz
- ベストアンサー率65% (288/438)
<?php print crypt('abcdefg'); ?> を実行してみれば(リロードさせてみれば)自明だと思います。 cryptの第二引数を指定してください。 http://php.net/manual/ja/function.crypt.php