2015-01-20 2 views
0

У меня есть форма входа с UserId и Password. Я предполагаю, что проблема связана с паролем md5 в mysql database.so Как сравнить пароль HTML-формы с паролем mysql. ??Сравнение пароля MYSQL и пароля формы HTML

вот код формы входа

<body> 
    <form method="post" action="validate_login.php" > 
     <table border="1" > 
      <tr> 
       <td><label for="LoginID">LoginID</label></td> 
       <td><input type="text" 
        name="LoginID" id="LoginID"></td> 
      </tr> 
      <tr> 
       <td><label for="password">password</label></td> 
       <td><input name="password" 
        type="password" id="password"></input></td> 
      </tr> 
      <tr> 
       <td><input type="submit" value="Submit"/> 
       <td><input type="reset" value="Reset"/> 
      </tr> 
     </table> 
    </form> 
</body> 

И код PHP:

<?php 

// Grab User submitted information 

$LoginID = $_POST["LoginID"]; 
$password = $_POST["password"]; 
//$UserID= $_POST["UserID"]; 
// Connect to the database 

$username = "avaninfo_dairy"; 
    $password = "CMANcustomersupportsystem1234#"; 
    $hostname = "localhost"; 

    //connection to the database 
    $con = mysqli_connect($hostname, $username, $password) 
     or die("Unable to connect to MySQL"); 
     echo "Connected to MySQL<br>"; 



// Select the database to use 
mysql_select_db("avaninfo_dairy",$con); 

$result = mysqli_query("SELECT * FROM cman_users WHERE LoginID = $LoginID"); 

$row = mysqli_fetch_array($result); 

if($row["LoginID"]==$LoginID && $row["Password"]== $password) 
    echo"You are a validated user."; 
else 
    echo"Sorry, your credentials are not valid, Please try again."; 
?> 
+0

Одна проблема заключается в том, что вы смешиваете API-интерфейсы протокола MySQL. – j08691

+0

Вы не можете, так как вы переписываете свой пароль POST с паролем своей базы данных. : P Но если вы этого не сделали, просто «md5» ваш пароль POSTed и сравните с записанным паролем 'md5''d. Тем не менее, я предлагаю вам перейти от 'md5' и использовать [' password_hash'] (http://php.net/manual/en/function.password-hash.php) вместо этого - MD5 небезопасен. – Amadan

ответ

0

Ответ прост. Чтобы сначала получить определенную ясность, вам нужно понять, что происходит.

Ваши MD5 алгоритмы хэширования, которые хранятся в базе данных

"md5 пароль в базе данных MySQL"

являются одним из способов. Это означает, что вы не можете «отменить» его после его зашифрования. Что вы можете сделать, это сравнить хеш-значение с ним, чтобы увидеть, совпадает ли оно.

Как сравнить пароль HTML-формы с паролем mysql. ??

это будет сравнить формы HTML пароль с тузд паролем, $hashed_value_from_mysql быть ваш зашифрованный пароль от MySQL и $_POST[password] быть ваш пароль от формы представления , где ваш name="password" доступен через $_POST после отправки формы в зависимости на каком методе вы используете.

if ($hashed_value_from_mysql === md5('$_POST[password]')) { 
    //if the password matched do whatever here 
} else { 
    //it doesn't match, throw an error 
    echo "password doesn't match"; 
} 
1

Способ сделать это будет md5 кодирования с использованием той же соли пароль от пользователя и проверить его на хеш-файл md5, хранящийся в базе данных. http://php.net/md5

+0

Подождите, соль на MD5? – Amadan

+0

Если ваш пароль не солен, это должно быть, да, стандартная практика в этот день и возраст должна иметь различную соль для каждого пароля md5. Если он не солен, не беспокойтесь, просто закодируйте md5 и проверьте. http://stackoverflow.com/questions/14538034/md5-salt-password-php – Asheliahut

+1

Стандартная практика в этот день и возраст - использовать bcrypt или другой хороший алгоритм хэширования пароля, а не md5 digest. – Amadan

1

Используйте md5 функцию

$row = mysqli_fetch_array($result); 

if($row["LoginID"]==$LoginID && $row["Password"]== md5($password)) 
    echo"You are a validated user."; 
else 
    echo"Sorry, your credentials are not valid, Please try again."; 
1

Использование MD5 встроенной функции: (. Предполагая, что вы хотите сравнить unhashed пароль к md5 хеширован пароля)

if($row["LoginID"]==$LoginID && $row["Password"]== MD5($password)) 
    echo"You are a validated user."; 
else 
    echo"Sorry, your credentials are not valid, Please try again."; 
1

Изменить $row["Password"] == $password$row["Password"] == md5($password).

$row = mysqli_fetch_array($result); 

if($row["LoginID"]==$LoginID && $row["Password"]== md5($password)) 
    echo"You are a validated user."; 
else 
    echo"Sorry, your credentials are not valid, Please try again."; 

Более подробную информацию о md5: http://php.net/manual/en/function.md5.php

P.S. - Если он находится под вашим контролем, я рекомендую вам использовать password_hash() и password_verify() для хэширования ваших паролей. Это гораздо безопаснее, чем md5().

1

Вы можете использовать md5 function. Также вам не нужно проверять LoginID, потому что SQL Select prefilters.

if($row["Password"]== md5($password)) 

Однако общая система безопасности ошибочна. Веб-браузер должен отправить имя пользователя и md5 (пароль). Пароль никогда не должен быть отправлен через Интернет.

Также известно, что хеш MD5 был взломан. Используйте хэш SHA-1 как минимум.

И большинство систем Solt the Hash, так что один и тот же пароль для разных пользователей имеет другое значение хэша в базе данных.

1

<?php 
 

 
// Grab User submitted information 
 

 
$LoginID = $_POST["LoginID"]; 
 
$password = md5($_POST["password"]); 
 
//$UserID= $_POST["UserID"]; 
 
// Connect to the database 
 

 
$username = "avaninfo_dairy"; 
 
    $password = "CMANcustomersupportsystem1234#"; 
 
    $hostname = "localhost"; 
 

 
    //connection to the database 
 
    $con = mysqli_connect($hostname, $username, $password) 
 
     or die("Unable to connect to MySQL"); 
 
     echo "Connected to MySQL<br>"; 
 

 

 

 
// Select the database to use 
 
mysql_select_db("avaninfo_dairy",$con); 
 

 
$result = mysqli_query("SELECT * FROM cman_users WHERE LoginID = $LoginID" and Password=$password); 
 

 
$row = mysqli_num_row($result); 
 

 
if($row>0) 
 
    echo"You are a validated user."; 
 
else 
 
    echo"Sorry, your credentials are not valid, Please try again."; 
 
?>
Попробуйте это он будет работать нормально

+0

Большое спасибо. Он отлично работает –

Смежные вопросы