2013-08-04 1 views
0
<?php 
date_default_timezone_set('Asia/Kolkata'); 
$xmlfile='xml/adminpwd.xml'; 
$xml = simplexml_load_file($xmlfile); 

if (!empty($_POST['password'])) { 
    extract($_POST); 
    if($adminpwd!='this') 
     $error="Incorrect Password. Enter the correct password."; 
} 
?> 

<form method='post' action='' name='admin'> 
<h3 style="color: #798196;">Enter Current Password</h3><br/> 
     <input type='password' name='adminpwd' /> 
     <input type='submit' name='password' value='Enter'> 
</form> 

это мой сценарий.php hash() с sha512, показывающий разные результаты с таким же значением

, когда я пытаюсь это:

<?php 
    if (isset($error)) 
     echo "<br/><h3 class='error'>".hash('sha512', $adminpwd)."</h3><br/>"; 
?> 

я получить выход: de784a6d81e125ff2223d977683c3efdd4513941d3737861008b8358d10e8d2757963c3a2619d0924a70d0e11b53492847f741af6e767388fd395c170508d795

, но когда я пытаюсь это:

<?php 
    if (isset($error)) 
     echo "<br/><h3 class='error'>".hash('sha512', $_POST['adminpwd'])."</h3><br/>"; 
?> 

я получить выход: 1fc286c9c7dc733b3a46a21a923c646c14c19bac951d63380ec8d4b3c6786fdbe7dd4bd325eef31553fa829e19989fe060da01921cfc68f7b9ff03383f78710b

хотя и переменная содержит ту же строку. почему выход отличается?

+4

Просто распечатайте '$ adminpwd' в обоих случаях. Вы не знаете, что они одинаковы, пока не увидите их обоих. Обратите также внимание на то, что ведущее/конечное пробелы всегда подозрительны. –

+0

Хорошая точка здесь ↑↑↑ Обязательно обрезайте введенный текст. – MightyPork

+0

оба раза я вводил один и тот же пароль. и повторил эксперимент более чем 5 раз, чтобы подтвердить. но результат был таким же. когда я попробовал сейчас, оба случая дают одинаковый выход. не получилось. но спасибо. – RatDon

ответ

2

Единственный способ отличить это, если то, что находится в $ _POST ['adminpwd'], не является точно таким же строковым значением. Вполне возможно, что, поскольку вы не проверяете $ adminpwd, возможно, он не устанавливался каждый раз.

Кроме того, использование extract() на $ _POST или любых других переменных запроса не является безопасным, поскольку вы по существу позволяете пользователям создавать переменные PHP.

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