• 締切済み
  • すぐに回答を!

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

メールとパスワードのログイン認証のプログラムがいまいちできません。 訂正すべき箇所がお分かりになる方よろしくお願いします。 尚、下記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
  • 閲覧数320
  • ありがとう数0

みんなの回答

  • 回答No.1
  • agunuz
  • ベストアンサー率65% (288/437)

<?php print crypt('abcdefg'); ?> を実行してみれば(リロードさせてみれば)自明だと思います。 cryptの第二引数を指定してください。 http://php.net/manual/ja/function.crypt.php

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • パスワードはどこですか?

    自分でパスワードを決めると思うのですが、さっぱりです。どこに書けばいいのか教えてください 知識がある方にとっては簡単だと思いますがどうぞよろしくお願いします。 #▼入室フォーム###### sub FM{ print "Content-type: text/html\n\n"; print "<html><head><title>$TITLE</title></head><body><form method=post action=$ADMIN_CGI><input type=hidden name=M value=C>管理室<hr>\n"; print " 管理者ID<BR><input name=ID'' size=8><BR> パスワード<BR><input name=PASS'' size=8><BR> <input type=submit value=入室>\n"; print "</form></body></html>\n"; exit; }

    • ベストアンサー
    • CGI
  • クッキー認証>クッキー削除ができない!!

    今回は、クッキー認証画面を作成している際、 エラーが出てしまって先に進めず投稿しました。 下記にプログラム記載 ----H_01.html---------------------------------- <html> <head> <title>クッキー認証</title> </head> <body> <center> <form method="POST" action="H_02.php"> 名前<input type="text" name="name"> パスワード<input type="Password" name="pass"> cookieを記録する<input type="checkbox" name="chk"> <input type="submit" value="送信"> <input type="reset" value="リセット"> </form> </center> </body> </html> ------------------------------------------------ -----H_02.php---------------------------------- <?php $name = $_COOKIE['name']; $pass = $_COOKIE['pass']; $cnt = $_COOKIE['chk']; if ($cnt == True) { $lim = time()+7*24*60*60; //有効期限1週間 setcookie('name',$name,$lim); setcookie('pass',$pass,$lim); } else { setcookie('name'); setcookie('pass'); } ?> ------------------------------------------------ else文内の、setcookie二行にエラーが出ます。 htmlでチェックボックスにチェックが施されていない場合、クッキーを削除。 調べてみたのですが、どうしたらよいのかわからず 投稿しました。よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpでメール送信

    phpでメール送信を行ってもメールが来ません。 普通のメールアドレスです。使っているサーバーはちゃんとphpが つかえるようです。ソースは下記です。訂正するところなどありまし たらよろしくお願いします。 ソース:(ホーム)<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>sample</title> </head> <body> <form action="1.php" method="post"> ホームページの名前:<br> <input type="text" name="subject" size="30" value=""><br> ホームページのアドレス:<br> <input type="text" name="name" size="30" value=""><br> メールアドレス:<br> <input type="text" name="mail" size="30" value=""><br> ホームページの紹介文:<br> <textarea name="message" cols="30" rows="5"></textarea><br> <br> <input type="submit" value="送信する"> </form> </body> </html> 送信側:<?php mb_language("Japanese"); mb_internal_encoding("SHIFT-JIS"); $message = "ホームページのアドレス:" . $_POST["name"] . "\nホームページの紹介文:" . $_POST["message"]; if (!mb_send_mail("めーるアドレス@メールアドレス.jp", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("メールの送信に失敗しました。"); } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>sample</title> </head> <body> <p>メールが送信されました。</p> </body> </html>

  • 管理パスワードによる認証

    既存のファイルに管理者による認証を付加したいと思いますが、下記のコードではうまくいきません。アドバイス下さい。 <?php //パスワードの設定 $password = "admin"; //パスワードチェック passchk(); function passchk(){ global $password, $post; $p = $post['pass']; if ($p == $password) { echo "認証成功!"; // return; } else { echo<<<EOM <p>パスワードを確認して下さい。</p><br> <form action="login.php" method="post"> パスワード:<input type="password" name="pass" size="8"> <input type=submit value="ログイン" /> </form> EOM; exit; } } ?>

    • 締切済み
    • PHP
  • フォーム入力パスワードとランダム生成されたパスワードを比較

    現在フォームから入力パスワードと PHP でランダム生成された パスワードを比較するスクリプトを組んでます。 スクリプト自体はテスト用ですので フォーム入力用のパスワードは HTML 上に表示されるように なっており、それをコピー&ペーストすれば 良いようにはなっているのですが、どうやっても 比較結果が true になりません。 もはやどこが間違っているのかわかりません。 どなたかお教え頂ければ大変助かります。 何卒、宜しくお願い致します。 ファイル構成は 3つです↓ ran_pass.html ran_pass.php kekka.php --<< 1. フォーム入力 HTML [ ran_pass.html ] ↓ >>------------------------------------------------------------------------------- <html> <head> <title>名前入力</title> </head> <body> <u>名前入力</u><br> <form action="ran_pass.php" method="post" name=""> 名前 : <input type="text" name="name" size="24" border="0"> <input type="submit" name="" value="実行" border="0"> </form> </body> </html> --<< 2. ランダムパスワード生成 [ ran_pass.php ] ↓ >>--------------------------------------------------------------------------- <html> <head> <title>ランダムパスワード生成</title> </head> <body> <?php //フォームからのデータを $name に代入↓ // $name = $_POST[name]; //ランダムパスワードを生成 ↓// function rand_passwd($len = 8, $str = '0123456789abcdefghijklmnopqrstuvwxyz'){ $password = ''; srand ((float) microtime() * 10000000); for($i = 0; $i < $len; $i ++){ $password .= substr($str, rand(0, strlen($str) - 1), 1); } return $password; } //生成されたランダムパスワードを $rpass に代入 ↓// $rpass = rand_passwd(8) . "\n"; $htm = <<< EOD <u>ランダムパスワード生成</u><br> <form action="kekka.php" method="post" name=""> 名前 : $name さん<br><br> パスワード : <input type="text" name="ran_pass" size="24" border="0"> <input type="submit" name="" value="実行" border="0"><br> <input type="hidden" name="name" value="$name" border="0"> <input type="hidden" name="rpass" value="$rpass" border="0"><br> ( ※ パスワードは $rpass です。) </form> EOD; print $htm; ?> </body> </html> --<< 3. パスワード比較 [ kekka.php ] ↓ >>-------------------------------------------------------------------------------------- <html> <head> <title>パスワード認証結果</title> </head> <body> <?php //フォームからのデータを代入↓ // $name = $_POST[name]; $ran_pass = $_POST[ran_pass]; $rpass = $_POST[rpass]; //ランダムパスワードを生成 ↓// if($ran_pass == $rpass){ $kekka = "【 成功 】 パスワードが一致しました。";} else{$kekka = "【 失敗 】 パスワードが一致しませんでした。";} print $kekka; ?> </body> </html>

    • ベストアンサー
    • PHP
  • 作ったメールフォームが返信されません

    自分のHPに以下のタグのメールフォームを作成しました。 けど返信が戻ってきません。何か問題があるのでしょうかお手数ですが教えていただけたらうれしいです。 <html> <head> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>なぜ?</title> </head> <body> <form name="myFORM" method="post" action="mailto:私のメールアドレス" enctype="text/plain"> <br> ご意見などお願いします。? <br> <input type="text" NAME="data"><br> <input type="submit" VALUE="送信"><br> </form> </body> </html>

  • 認証画面について

    PHPにて認証画面を作ろうと思っております。 index.htmlより入力したデータをPOSTで飛ばし、PHPスクリプトにてIF文で認証判定をすると言う物なのですが…… ↓index.html <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis"> <TITLE>PHP認証システム</TITLE> </HEAD> <BODY> <form action="./practice.php" method="POST"> <h2>認証システム</h2> <input type="text" name="id" value=""><br> <input type="submit" name="ninsyo" value="認証"><br> </form> </BODY> </HTML> ↓practice.php <?php echo $_POST["id"]; $num = intval($_POST["id"]); if ($num = 25) { echo '成功'; }else { echo '認証失敗'; } ?> どんな数値を入力しても、成功と表示されてしまいます。 何故でしょうか? 根本的に間違っているのでしょうか?

    • ベストアンサー
    • PHP
  • パスワード認証ページ作りたい(basic認証でない)

    フリーのものを使ってパスワード認証ページ(basic認証でない)を作ろうとしています。しかし、うまく動いてくれません…何がいけないのでしょうか?どうかご教授下さい。ちなみにここのサンプルです。 http://www.jetman.jp/passwd.php <?php $user_pass = "test"; $ok = "ok.htm"; $error = "error.htm"; $script = "login.php"; $doc_title = "テスト"; if(!isset($ver)) { $ver = '1.05.1'; } if(!isset($pass)) { $pass = $user_pass; // パスを指定 if($passwd == $pass) { header("Location: $ok"); // OKなら } elseif($passwd) { header("Location: $error"); // NGなら } } ?> <html> <head> <title><?php echo $doc_title; ?></title> <meta http-equiv="Content-Type" content="text/html;Charset=Shift_JIS"> <script type="text/javascript"> <!-- function check() { if(document.formxx.passwd.value.length == 0) { alert("パスワードが入力されてません"); return false; } return true; } //--> </script> </head> <body> <h3><?php echo $doc_title; ?></h3> <form action="<?php echo $script; ?>" method="post" name="formxx"> <input type="password" name="passwd" size="15"> <input type="submit" value=" login " onClick="check()"> <form> <p style="font-size:10px"><a href="http://www.jetman.jp/">プチログイン version:<? echo $ver; ?></a></p> </body> </html>

    • ベストアンサー
    • PHP
  • PHPを使用してパスワード認証の画面を作成したいと思っております。

    現在運営しているWEBサイトのページに、パスワードのみのログイン画面へのリンクを張り、 パスワード認証が成功した場合は会員専用ページ(yes.html)に飛び、失敗の場合はエラーページ(no.html)に飛ばすようにしたいと思っております。 他でソースを教えていただいて、下記のように作成してみたのですが、 56行目の</html>の行でエラー(Parse error: on line 56)が出てしまいます。 私はまったく知識がありませんので、どこがおかしいのか見当がつきません。 知識をお持ちの方、どなたかご教示いただけませんでしょうか。 よろしくお願い申し上げます。 <?php //まずパスワード受け取ってない //かりにPOSTで送られているとすると $post_pass = $_POST['password']; $user_pass = "1111"; $ok = "./yes.html"; $error = "./no.html"; $script = "./login2.php"; $doc_title = "テスト"; if(!isset($ver)) { $ver = '1.05.1'; } if(!isset($pass)) { $pass = $user_pass; //これだと$passも1111 だし$user_passも1111 //だから下で1111==1111でOKに行く if($user_pass == $post_pass){ if($passwd == $pass){ header("Location: $ok"); }elseif($passwd){ header("Location: $error"); } } ?> <html> <head> <title><?php echo $doc_title; ?></title> <meta http-equiv="Content-Type" content="text/html;Charset=Shift_JIS"> <script type="text/javascript"> <!-- function check() { if(document.formxx.passwd.value.length == 0) { alert("パスワードが入力されてません"); return false; } return true; } //--> </script> </head> <body> <h3><?php echo $doc_title; ?></h3> <form action="<?php echo $script; ?>" method="post" name="formxx"> <input type="password" name="passwd" size="15"> <input type="submit" value=" login " onClick="check()"> <form> </body> </html>

    • ベストアンサー
    • PHP
  • ?> で終わっているのにunexpected $end

     以下のようなスクリプトを作成したのですが、 Parse error: syntax error, unexpected $end in (アドレス) on line 61 とエラーが出てしまいます。色々といじってみましたが、ちゃんと表示されません。どこがおかしいのでしょうか? <html> <head> <title></title> <?php if(empty($_POST[sentpass])){ setcookie("pass"); print <<<_DRK_ </head><body> <p align="center"> パスワードを入力してください。<br><br> <form name="sentpass" action="index.php" method="post" target="_self"> <input></form></p> _DRK_; } else { setcookie("pass","$_POST[sentpass]"); print("<META http-equiv=\"refresh\" content=\"0; URL=index.php\"></head><body>"); } $password = "sample"; if($_COOKIE = $password){ print <<<_EOT_ <em><font size="6">Webサイトの設定</font></em><br><br> 編集する項目を選択してください。<br><br> Webサイト全体の設定(文字色など)<br><br>          (以下略) _EOT_; } else { print <<<_CDR_ パスワードが違っています。もう一度パスワードを入力してください。<br><br> <form name="sentpass" action="index.php" method="post" target="_self"> <input></form></p> _CDR_; } ?> </body></html>  ・・・よろしくお願いします。  真に申し訳ないのですが、多忙のためお礼が若干遅れると思います。すみません・・・。

    • ベストアンサー
    • PHP