パスワードの照合について

このQ&Aのポイント
  • データベースに保存されたパスワードとフォームに入力されたパスワードが一致しない問題が発生しています。
  • 現在の照合方法では常にFALSEとなってしまうため、パスワードの照合が正しく行われていません。
  • 英数字のみで構成されるパスワードに対応している照合方法を検討する必要があります。
回答を見る
  • ベストアンサー

パスワードの照合について

お世話になっております。 データベースに保存されたパスワード($password)とフォームに入力されたパスワード(($_POST['pass'])が一致した場合次のページに進むようにしたいのですが、 if($_POST['pass'] == $password){・・・ if ( strcmp($_POST['pass'],$password) == 0 )・・・ いずれの方法でも結果は常にFALSEとなってしまいます。 パスワードは英数字のみです。 上記の書き方では動作しないのでしょうか? アドバイスを頂けたら嬉しい限りです。 よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

_POSTや$passwordの値が正常に取得できていないなどの問題かと思われます

関連するQ&A

  • phpのパスワードの認証について

    パスワードの認証について質問です。正常に動いているのは確認しました。 フォームから受け取ったパスワードをサタニサイズ等をし、データベースで認証する前に認証のテストをしてみようかと思い、下記のように書いてみたのですが、これって意味ありますか? if($_POST['password']=='et って直接書いてあるしバレバレなのかな~と思ったのですが、どうでしょうか? ほかにもっとよいコードの書き方があれば教えてください。 if($_POST['password']=='et') { if(password_verify($password,$pass) ){ echo "一致しました。"; }}else { {echo "一致してません";} }

    • ベストアンサー
    • PHP
  • php パスワード 暗号化

    phpの会員サイトにてパスワードの暗号化を実装したいと思い、投稿させていただきました。 会員の人はパスワード変更→暗号化でDBに登録。 変更したパスワード(暗号化されている)でログインという流れを作りたいのですが、 暗号化でDBに登録まではできましたが、ログイン認証で一致せず困っております。 どなたか教えていただけないでしょうか? 例: <input type="password"name="password" value="1234"> $pass = $_POST[pass]; $password = crypt($pass); $passwordをDBに保存。 その後ログアウトし、ログインのパスワードで1234を入力すると「一致しません」となります。 login認証の際にどのように実装してよいのかわからず困っています。 また、上記の内容にてセキュリティ上に問題がありましたらご指摘お願いします。

    • 締切済み
    • PHP
  • php言語の脆弱性について

    php言語の脆弱性について パスワード認証において、phpのstrcmp, strcasecmpといった関数には脆弱性があると聞きます。 そこで、具体的にどのような脆弱性があるのかお伺いしたいと思います。 たとえば、認証画面にパスワードの送信フォームがあり、パスワードが分からない場合 $pass = **** if (isset($_POST['pass'])) if (strcasecmp($_POST['pass'], $pass) == 0) echo "Correct!"; else echo "Incorrect" というプログラムになっていた場合、送信フォームにどのような文字列を渡せば認証が通るのでしょうか。 また、認証が通る仕組みについても教えていただけたらと思います。

  • PHPでのPASSWORD一致確認処理について

    PHPでのパスワード一致処理についてお聞きしたくこの場をお借りします。ただいまPHPの勉強をしていてなぜかパスワードの確認でエラーがでてしまいます。 $pass = $HTTP_POST_VARS["pass"]; $pass1 = $HTTP_POST_VARS["pass1"]; if (strlen($pass) == 7 and strlen($pass1) == 7){ if($pass == $pass1){ }else{ echo "パスワードが一致しません<BR><BR>"; echo "<A HREF='new_register.php' onClick='history.back();return false;'>戻る</A><BR>"; exit; }else{ echo "パスワードは8文字以内で入力してください<br><br>" echo "<A HREF='new_register.php' onClick='history.back();return false;'>戻る</A><BR>"; exit; } と打ち込んだんですが、エラーが出てしまいます。 パスワードは8文字以内で半角英数字のみです。 どなたか間違いの指摘のほうお願いいたします。

    • 締切済み
    • PHP
  • 管理パスワードによる認証

    既存のファイルに管理者による認証を付加したいと思いますが、下記のコードではうまくいきません。アドバイス下さい。 <?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
  • formについてFirefoxで動作させたい

    IEとGoogle Chromeでは動作が正常に確認できました。 Firefoxでも正常に動作するようにしたいのですが、何処を直せば良いのでしょうか? クリックしてもボタンが動いてないようなのですが・・・・。 すみません、どなた様かご存知でしたら、どうぞよろしくお願い致します。 <script type="text/javascript"> function PassChack(){ var passWord = passF.pass.value; if(passWord ==""){ alert("パスワードが未入力です"); return false; }else if(passWord == "aaa"){ location.href = "aaa.html"; }else{ alert("パスワードが間違っています"); } } </script> <form method="post" id="passF">   <input type="text" name="pass" id="pass" size="30" value="" /><input type="button" value=" 実行 " onclick="PassChack();return false;" /> </form>

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

    現在フォームから入力パスワードと 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
  • PHPでのID、パスワード認証

    学校の宿題でログインページからデータベースに入っているIDとパスワードでログインし、2枚目ページにたどり着くというコードを書いています。 ログオンページにはphpコードは一切なく、ログイン後のページにすべてphpを入れるというやり方です。 データベースに接続はしているのですが、ログインの認証ができず、正しいIDとパスワードをいれてもエラーメッセージ「IDとパスワードが正しくありません」が返ってきます。 コードは $u =$_POST['userid']; $p =$_POST['password']; $result = mysql_query("SELECT * FROM valid_logon"); while($row=mysql_fetch_array($result)) { $username = $row['userid']; $passcode = $row['password']; } if($username == $userid && $pass==$password) { header("Location: mybill.php"); } else if($passcode != $p ||$username != $u ) { echo("Please Enter Correct Username and Password ..."); exit; } としているのですが、何故すべてエラーになってしまうのか、もし宜しかったら教えてください!! どうぞ宜しくお願いします。

    • ベストアンサー
    • 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
  • MD5化したパスワードを再度パスワード認証する

    説明下手かもしれませんが、MD5化したパスワードを再度パスワード認証する方法で躓いてしまいました。 test.php $passwd = 'admin'; $passwd = md5($passwd); if(!isset($password)){$password = md5($_post('password')) ;} if($password == $passwd)){ //ファイルへ書き込み、ファイル一覧表示する処理(コード省略) //★★ 処理した後に、この下でコードでパスワード認証されたPOST送信ボタンを出力 ★★ echo "<td> <form action=$PHP_SELF method=post> <input type=hidden name=password value=$passwd> <input type=submit value=送信> </form>"; } 問題は (1)$passwdはMD5で暗号化されている (2)POST送信された$passwdはMD5で暗号化されたものが、md5($_post('password')で更にMD5化されて認証エラーになる。 なのでフォームボタン(POST送信)を使用し、自身のスクリプトに認証されるような処理を行いたいのですが、 いい方法をアドバイス下さい。 echo "<td> <form action=$PHP_SELF method=post> <input type=hidden name=password value=$passwd> <input type=submit value=送信> </form>";

    • ベストアンサー
    • PHP

専門家に質問してみよう