passwordで暗号化する前の文字列と比較したい

このQ&Aのポイント
  • Debian3.0 GNU/Linux Apache/1.3.26 PHP/4.1.2 mysql/3.23.49-logの環境で、パスワードで暗号化する前の文字列と比較する方法について教えてください。
  • プログラム内でpassを暗号化したパスワードと比較する際に、$pass6には暗号化前のパスワードが入力されています。どのようにして暗号化前のパスワードと比較すれば良いでしょうか?
  • usertableテーブルに格納されたユーザ名とパスワードを比較するプログラムで、passが暗号化された値と比較する方法を教えてください。
回答を見る
  • ベストアンサー

passwordで暗号化する前の文字列と比較したい

Debian3.0 GNU/Linux Apache/1.3.26 PHP/4.1.2 mysql/3.23.49-log の環境です。 $MyQuery2 = "SELECT * FROM usertable"; $MyResult = mysql_query($MyQuery2, $MyLink); while($MyData = mysql_fetch_object($MyResult)) { if($MyData->pass == $pass6 && $MyData->user == $name6) { print("ok"); } } このプログラムで、ユーザとパスワードはテーブルusertableに 入っています。passはpassword('***')で暗号化しています。しかしこれだと、$pass6に暗号化したパスワードが入力されている必要があり困っています。 何か良い方法はないでしょうか?

  • MySQL
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • togino
  • ベストアンサー率75% (97/129)
回答No.1

"SELECT * FROM usertable WHERE user = '${name6}' && pass = password('${pass6}')" という SQL を実行して、有効な1行が返ってくるか どうかで認証してはいかがでしょう。 普段 MySQL を使っている訳でないので、password() が 実際どういう暗号化方式なのか知りませんが、ともかく 「同じ変換(暗号化)をした後同士で比較する」って 事です。

その他の回答 (1)

  • togino
  • ベストアンサー率75% (97/129)
回答No.2

# コピペばっかだとよくミスってしまいますね。 修正させてください。 "SELECT * FROM usertable WHERE user = '${name6}' AND pass = password('${pass6}')" でしたね(汗)

関連するQ&A

  • PHP+MySQLの間違い探し

    PHP+MySQLのプログラムなのですが Parse error: syntax error, unexpected ')' in C:****.php on line 47 が出ました。47行目を含むif文を見ても()の数は合ってて何所が間違ってるのかわかりません>< よろしくお願いします。 <?php function delta($c,$a){ if(((strcmp($c,'c0') == 0) && ($a == 0)) || ((strcmp($c,'c50') == 0) && ($a == 100)) || ((strcmp($c,'c100') == 0) && ($a == 50)) || ((strcmp($c,'c100') == 0) && ($a == 100))) return 'c0'; else if(((strcmp($c,'c0') == 0) && ($a == 50)) || ((strcmp($c,'c50') == 0) && ($a == 0))) return 'c50'; else // else if(((strcmp($c,'c0') == 0) && ($a == 100)) || ((strcmp($c,'c50') == 0) && ($a == 50)) || ((strcmp($c,'c100') == 0) && ($a == 0)) return 'c100'; } function lambda($c,$a){ if(((strcmp($c,'c0') == 0) && ($a == 0)) || ((strcmp($c,'c0') == 0) && ($a == 50)) || ((strcmp($c,'c0') == 0) && ($a == 100)) || ((strcmp($c,'c50') == 0) && ($a == 0)) || ((strcmp($c,'c50') == 0) && ($a == 50)) || ((strcmp($c,'c100') == 0) && ($a == 0))) return 'null'; else if(((strcmp($c,'c50') == 0) && ($a == 100)) || ((strcmp($c,'c100') == 0) && ($a == 50))) return 'juice'; else // else if((strcmp($c,'c0') == 100) && ($a == 100)) return 'juice_50'; } $input=$_GET['input']; $mylink=mysql_connect("localhost", "student", "student"); mysql_select_db("mydb", $mylink); $myresult=mysql_query("select * from at3",$mylink); while($myrow=mysql_fetch_array($myresult)){ $i=$myrow[0]; $state=$myrow[3]; } $del = delta($state, $input); $lam = lambda($state, $input); $i++; mysql_query("insert into at3 values($i,$input,'$lam','$del')",$mylink); //mysql_query("insert into at3 values($input,'$lam','$del')",$mylink); print "<table border=4>"; print "<caption class='capbig'>Vending machine</caption>"; print "<tr><th>id</th><th class='left'>input</th><th class='center'>output</th><th class='right'>state</th></tr>"; $myresult=mysql_query("select * from at3",$mylink); //$myresult=mysql_query("select * from grade order by id asc",$mylink); while($myrow=mysql_fetch_array($myresult)){ print "<tr><td align=right>".$myrow[0]."</td><td align=right class='left'>".$myrow[1]."</td><td align=right class='center'>".$myrow[2]."</td><td align=right class='right'>".$myrow[3]."</td></tr>"; } print "</table>"; $myresult=mysql_query("select sum(input) from at3",$mylink); while($myrow=mysql_fetch_array($myresult)){ $sales=$myrow[0]; } $myresult=mysql_query("select count(input) from at3 where input='50'",$mylink); while($myrow=mysql_fetch_array($myresult)){ $coin50=$myrow[0]; } $myresult=mysql_query("select count(input) from at3 where input='100'",$mylink); while($myrow=mysql_fetch_array($myresult)){ $coin100=$myrow[0]; } $myresult=mysql_query("select count(output) from at3 where output='juice_50'",$mylink); while($myrow=mysql_fetch_array($myresult)){ $output50=$myrow[0]; } $myresult=mysql_query("select count(output) from at3 where output='juice'",$mylink); while($myrow=mysql_fetch_array($myresult)){ $juices=$myrow[0]; } $coin50=$coin50-$output50; $sales=$sales-$output50*50; $juices=$output50+$juices; print "Total sales: ".$sales."<br>"; print "Number of sold juices: ".$juices."<br>"; print "Number of 50 coin: ".$coin50."<br>"; print "Number of 100 coin: ".$coin100."<br>"; //$myresult=mysql_query("select max(score), name from grade",$mylink); //while($myrow=mysql_fetch_array($myresult)){ // print "<tr><th class='left'>Max.</th><td align=right class='center'>".$myrow[0]."</td><td class='right'>".$myrow[1]."</td></tr>"; //} mysql_free_result($myresult); mysql_close($mylink); ?>

    • 締切済み
    • PHP
  • パスワードの暗号化

    php+mysqlでシンプルな会員登録を作りたいのですがパスワードは暗号化したほうがいいですか? パスワードを簡単に暗号化できる方法はありますか? postされたpassと暗号化されたpassのチェック方法がわかりません ログイン if ($_POST['id'] !='' && $_POST['pass'] !='') { $sql = sprintf('SELECT * FROM hoge WHERE id="%s" AND pass="%s"', mysql_real_escape_string($_POST['id']), mysql_real_escape_string($_POST['pass']) ); $record = mysql_query($sql) or die(mysql_error()); if ($table = mysql_fetch_assoc($record)) { $_SESSION['id'] = $table['id']; $_SESSION['name'] = $table['name']; } else { //エラー }

    • ベストアンサー
    • MySQL
  • PASSWORD関数

    INSERT INTO user_table(id,pass) VALUES ('abc',PASSWORD('123'); で入力したデータを以下のSELECT文で抽出しようとした処、クエリー発行は成功するものの、結果行数(mysql_num_rows)が0となります。 SELECT * FROM user_table WHERE pass=PASSWORD('123'); どうぞご教授ください。

    • ベストアンサー
    • MySQL
  • classについて

    $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; $con = mysql_connect ($server, $user, $pass); mysql_select_db ($database, $con); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($result = mysql_fetch_array ($rs, MYSQL_ASSOC)) { echo $result[hoge]; } 上記と同じことを下記のようなクラスにして db.php class db { $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; function __construct() { $this->con = mysql_connect ($this->server, $this->user, $this->pass); mysql_select_db ($this->db, $this->con); } function query($sql){ $rs = mysql_query ($sql); return mysql_fetch_array ($rs, MYSQL_ASSOC); } hoge.php $db = new db(); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($db->query($sql)) { echo $result[hoge]; } のようにしたのですが、うまくいきません。 function query($sql){ $rs = mysql_query ($sql); $result = mysql_fetch_array ($rs, MYSQL_ASSOC); } とすると一行はとれるのですが、複数行とるにはどうしたらいいのでしょうか・・・ どうかよろしくお願いします。

    • 締切済み
    • PHP
  • パスワードの暗号化

    mysql> select Password from user; +-------------------------------------------+ | Password | +-------------------------------------------+ | | | | | | | *81************************************** | | | | | | | | | +-------------------------------------------+ このように暗号化するにはどのようにすればよろしいでしょうか? ご存知の方、宜しくお願いします。

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

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

    • 締切済み
    • PHP
  • 8文字以上の文字を暗号化する方法

    Apache1.3.37+PHP5.2.4+MySQL51.22のレンタルサーバでWEBコンテンツを作っています。 フォームから入力されたパスワードを、DBに格納する際、暗号化したいと思います。 MD5やsha1やcryptなどいろいろあるのですが、8文字を超える文字の暗号化ができないようです。 8文字を超える暗号化はどうすればいいのでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • 暗号化されない

    MySQLとPHP4でカード番号を暗号化しようとしています。16桁の数値で暗号化が一文字となっていたり復号化できていないようです。教えてください。 暗号化 UPDATE kaiin SET vmem_card_no= aes_encrypt('1111-1111-1111-1111','happy') where vmem_no=9; $result = mysql_query($sql,$db) or die("失敗しました"); 復号化 SELECT AES_DECRYPT(card_no,'happy') FROM kaiin where kaiin_no =9; $result = mysql_query($sql,$db) or die("失敗しました"); if($row = mysql_fetch_array($result,MYSQL_ASSOC)){  print "card_no=".$row['card_no']."<hr>"; }どこかおかしいでしょうか?教えてください。

    • ベストアンサー
    • MySQL
  • ファイル上のパスワードの暗号化

    WebでMySQLに接続するとき $hostname = "localhost"; $database = "mydb"; $username = "myname"; $password = "mypass"; などとファイルに書いて接続しますが、 $password = "mypass"; のmypassの部分を暗号化する方法はないでしょうか? MySQL側ではパスワードは暗号化されていますが その文字列をそのままいれて $password = "6f8c114b58f2ce9e"; としても当然ですが接続できませんでした。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • PHP+mySQL認証画面

    サーバーの引っ越しで新しいサーバーにてプログラムの動作確認を行っています。 管理者パネルに入るのに、PHPで作成した認証プログラムでログインしようとすると、入力しても何度も聞いてきて入れません。 旧 MySQL5.0.22   phpMyAdmin2.8.2.4 新 MySQL5.1.69 phpMyAdmin3.5.8.1  IDとパスワードはデータベースで設定。 管理者パネルで変更できるようになっている。 $sv = "**"; $dbname = "**"; $user = "**"; $pass = "**"; ログイン認証 //データベースに接続する $conn = mysql_connect($sv,$user,$pass) or die("接続エラー"); mysql_select_db($dbname) or die("データーベース接続エラー"); $sql = "SELECT id, pass FROM pass_t WHERE pno=1"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $db_user_id=$row['id']; $db_password=$row['pass']; } if(!isset($_SERVER["PHP_AUTH_USER"]) || $_SERVER["PHP_AUTH_USER"] != "$db_user_id" || $_SERVER["PHP_AUTH_PW"] != "$db_password") { header("WWW-Authenticate: Basic realm=\"login\""); header('HTTP/1.0 401 Unauthorized'); echo "ユーザー名またはパスワードが間違っています。<br>"; echo "もう一度はじめからやり直してください。"; exit; } 細々変えて試してみましたが駄目でした。 まだまだわからないことだらけの初心者なので、どうにもならずで 解決策がありましたらぜひ教えて頂けますと幸いです。 よろしくお願いいたします。

    • 締切済み
    • PHP