2016-07-04 9 views
-1

インターネットで無駄な回答を検索した後、私はここでそれを尋ねるべきだと思った。私は自分のサイトにパスワードをハッシュしようとしています。ハッシュされたパスワードがDBから正しく取り出され、入力したパスワードが正しいことを確認しました。しかし、それでも私のコードは動作しません。私が検証しようとしているパスワードは、私はここで間違って何をやっている123され、それのハッシュは$ 2Y $ 10 $ NebO.9vmHczwnpassword_verifyが偽を返し続ける

<?php 
session_start(); 

include("connect.php"); 

$connection = mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

//$myusername = stripslashes($myusername); 
//$mypassword = stripslashes($mypassword); 
//$myusername = mysql_real_escape_string($myusername); 
//$mypassword = mysql_real_escape_string($mypassword); 

$sql_user_info="SELECT * FROM $tbl_name WHERE username='$myusername'"; 
$result_user_info=mysql_query($sql_user_info); 
$rows_user_info=mysql_fetch_array($result_user_info); 
$hash=$rows_user_info['password']; 

//echo $hash . " " . $myusername . " " . $mypassword; 

if(password_verify($mypassword, $hash)){ 
$_SESSION["loggedin"] = true; 
$_SESSION["username1"] = $myusername; 
$id = "SELECT id FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; 
$_SESSION["id"] = mysql_query($id); 
mysql_close($connection); 
header("location:login_success.php"); 
} 
else { 
if(isset($_SESSION['login'])) 
    unset($_SESSION['login']); 
mysql_close($connection); 
header('location:http://akosh.space/loginfailed.php'); 
} 
?> 

すべきですか?

+0

「var_dump($ mypassword、$ hash)」 –

+0

あなたは[SQLインジェクション攻撃](http://bobby-tables.com)の脆弱性があり、単にそのクエリが成功したと仮定しています。 'var_dump($ rows_user_info)'のような基本的なデバッグを行って、何がDBから出て来たのかを確認します。 –

+0

どのようにパスワードをハッシュしますか?名前:どのような種類のハッシュですか? '$ 2y $ 10 $ NebO.9vmHczwn' 2yは通常、それがbcryptハッシュであることを意味しますが、それは十分ではありません。 – JimL

答えて

0

私を非常に速く助けてくれたすべての人に感謝します。私は文字通り何かをしようとしていました。私のDBは60文字のパスワードが気に入らないことがわかった。私はDBで自分のパスワードの最大文字数制限を変更した後、すべてうまくいきました。

関連する問題