2013-12-17 1 views
-2

Это моя первая тема до сих пор в этой большой веб-страницеЕсли оператор не работает правильно

Проблема заключается в следующем:

Я сценариев в UCP (PHP & MySQL на основе). Я хочу, чтобы он показывал статус пользователя, такой как оценка, деньги и т. Д. (Да, это для игры), но когда я нажимаю кнопку входа в систему, ничего не происходит, он просто удаляет содержимое запрошенных полей.

Он работал должным образом, прежде чем я сделал некоторые изменения (проверка, если имя пользователя существует)

Вот код:

if (isset($_POST['login'])) 
{ 
    $hashedpass = hash('whirlpool', $password); 
    $query = "SELECT * FROM users WHERE Username = '$playername' AND Password = '$hashedpass'"; 
    $result = mysql_query($query); 

    $num = mysql_num_rows($result); 
    mysql_close(); 
    if($num != 0) 
    { 
     echo"Account doesn't exist!"; 
     header("Location: ucp.html"); 
    } 
    else 
    { 

     $name=mysql_result($result,$i,"UserName"); 

     $money=mysql_result($result,$i,"Money"); 

     $score=mysql_result($result,$i,"Score"); 

     $wantedlevel=mysql_result($result,$i,"WantedLevel"); 

     $adminlevel=mysql_result($result,$i,"AdminLevel"); 


     echo "<b>$name</b><br>Money: $money<br>Score: $score<br>Wanted Level: $wantedlevel<br>Admin Level: $adminlevel<br><br>";   

    } 
} 
else if (isset($_POST['register'])) 
{ 
    header("Location: register.html"); 
} 
else 
{ 
    header("Location: index.html"); 
} 
+0

Проверьте возвращаемое значение вашего запроса - что-нибудь показывает в 'mysql_error()'? – andrewsi

+2

'или die (mysql_error());' полезно добавить к вашему скрипту. Во время разработки – Sir

+0

($ num! = 0) означает, что учетная запись существует, правильно? – Andrew

ответ

3
if($num != 0) 

изменение:

if($num == 0) 
1

Это просто не будет работать здесь и не имеет логического смысла:

$num = mysql_num_rows($result); 
mysql_close(); 
if($num != 0) 
{ 
    echo"Account doesn't exist!"; 
    header("Location: ucp.html"); 
} 

Сначала логика неверна, если $num НЕ равно 0, то ваш запрос ДОЛЖЕН найти хотя бы одну учетную запись. Так что вам нужно изменить, если заявление:

if($num == 0){ //if 0 rows were found - the account was not found thus it doesn't exist 
    echo "Account doesn't exist!"; 
} 

Обратите внимание также я не добавлял header("location: ucp.html");. Вы не можете отобразить вывод + переместить пользователя на другую страницу. Вы либо делаете то или другое, либо получаете сообщение об ошибке/предупреждении.

Наконец проверить ваш MYSQL не вызывает ошибку, добавив проверку в конце с:

$result = mysql_query($query) or die(mysql_error());

Заключительный наконечник, вы должны избегать использования mysql_* и смотреть в mysqli_* or PDO лучше всего объяснить здесь: Why shouldn't I use mysql_* functions in PHP?