2014-09-30 5 views
0

Мне нужно подтвердить, что у вас есть почта и пароль, но он работает с любым введенным мной паролем. В чем проблема? Вот код:Проверьте, есть ли правильная электронная почта и пароль

<?php 
if(isset($_POST['submit'])){ 
    $email = mysql_real_escape_string($_POST['email']); 
$pass = $_POST['password']; 
$hash = hash("sha512", $pass); 
$hash1 = hash("whirpool", $hash); 
$hash2 = hash("sha384", $hash1); 
$password = $hash2; 

    $query=mysql_query("SELECT * FROM register WHERE email='$email' AND password='$password'") or die(mysql_error()); 
    $count=mysql_num_rows($query); 
if($count==1){ 

    while ($row=mysql_fetch_array($query)) { 
    $username=$row['username']; 
    $heslo=$row['password']; 
    $_SESSION['valid'] = $username; 
if(isset($_SESSION['valid'])){ 
     $realtime = date("d-m-Y h:i:s"); 
     $session = $_SESSION['valid']; 
     echo "<script> window.location.replace('index.php'); 
</script>"; 
header("Location: index.php"); 
    }else{ 
     echo "Přihlášení neproběhlo správně"; 
    } 
} 
} 
} 
?> 
+1

Что происходит со всеми хэшами? достаточно просто sha512. – Daan

+0

@ Daan Это просто тест. Я знаю, я буду использовать только sha512. – user2808698

+0

В вашем db вы храните зашифрованное значение для паролей? –

ответ

1

Проблема вы столкнулись в том, что вы mispelled «Whirpool» должно быть «водоворота»

+0

Спасибо, но он все еще не работает – user2808698

+0

@ user2808698 : debuggin 101: 'echo' -« Если данный параметр algo содержит алгоритм, который не поддерживается, хеш-функция вернет bool (false) и выдаст предупреждение ». –

0

Я изменил код немного, и это, кажется, работает. Порядок фигурных скобок - это тот, который испортил его для вас, так как другой указывает на неверный if.

Я добавил комментарии по всему сценарию, чтобы вы могли видеть, что я пытаюсь сказать.

mysql_connect('localhost','user','pass'); 
mysql_select_db('test'); 

# You can use your post methods, I've used these for testing. 
$email = mysql_real_escape_string('email'); 
$pass = $_GET['pw']; 


$hash = hash("sha512", $pass); 
$hash1 = hash("whirlpool", $hash); 
$hash2 = hash("sha384", $hash1); 
$pass = $hash2; 

# Now you can see the PW input 
echo $pass."<br>"; 

# Nonsense 
$password = $pass; 

    # By using $sql you can echo your query to see what results would it yield upon running it. 
    $sql = "SELECT * FROM test WHERE em='$email' AND pw='$password'"; 
    $query=mysql_query($sql) or die(mysql_error()); 
    $count=mysql_num_rows($query); 

    # Echo stuff to see what their results are 
    echo $sql."<br>"; 
    echo $count."<br>"; 


    # Let's see if we all got it right? 
    if($count==1){ 

    while ($row=mysql_fetch_array($query)) { 
    $username=$row['un']; 
    $heslo=$row['pw']; 
    $_SESSION['valid'] = $username; 

if(isset($_SESSION['valid'])){ 
     $realtime = date("d-m-Y h:i:s"); 
     $session = $_SESSION['valid']; 

     # Commented out for testing purposes. I mean the header. 
     echo "all is well"; 
     //header("Location: index.php"); 
} // this closes the if(isset... 
} // this closes the while loop 
# Note that the curly brackets have changed. Now the else points correctly to the other branch if $count is not equal to 1. 
} else { 
     echo "Přihlášení neproběhlo správně"; 
    } 
+0

@ user2808698 - можете ли вы проверить это и посмотреть, работает ли он? –

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