Intereting Posts
Зарегистрировать IP-адрес пользователя, дату и время Предупреждение: strpos () : пустой разделитель в инструкции foreach PDO – получить результат COUNT (*)? Codeigniter не может загружать изображение Отсутствуют теги HTML, когда SELECT из MySQL (Codeigniter) Передача по ссылке третьего параметра в PHP array_walk без предупреждения Выбор значений атрибутов на основе другого значения атрибута с помощью SimpleXML $ wpdb-> get_results ($ запроса); Возвращает NULL с переменным $ query – тот же запрос работает с жестким кодом Пользовательские шрифты для DOMPDF Автоматизировать разрешение Entrust с доступом к параметрам имени маршрута и проверить разрешение пользователя Файл Ajax / Flash загружается с индикатором выполнения? Формат даты в формате PHP / Дата (1365004652303-0500) / PHP – доступ к глобальным переменным во всех функциях класса PHP – рассчитать разницу между двумя датами Ошибка составления команды MySQLi insert

Ошибка PHP mySQL Password с дополнительными символами

Я очень новичок в php и mysql. Я нашел отличный учебник для создания раздела регистрации и регистрации на сайте. Мне удается очень хорошо его деконструировать и внести незначительные изменения. Однако…

При входе в систему, если пароль неверен, он проверяет и возвращается ошибка. Если он правильный, он входит в систему.

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

<?php include('db.php'); if(!isset($_POST['login']))//checking if user has entered this page directly { include('form.php'); } else{ if(isset($_POST['user'])&&$_POST['user']==""||!isset($_POST['user'])) { $error[] = "Username Field can't be left blank"; $usererror = "1"; } if(!isset($usererror)) { $user = mysql_real_escape_string($_POST['user']); $sql = "SELECT * FROM users WHERE user = '$user'"; if(mysql_num_rows(mysql_query($sql))=="0")//1 means there is one entry same so we print error { $error[] = "Can't find a user with this username"; } } if(isset($_POST['pass'])&&$_POST['pass']==""||!isset($_POST['pass'])) { $error[] = "password Field can't be left blank"; } if(isset($error)){ if(is_array($error)){echo "<div class=\"error\"><span>please check the errors and refill the form<span><br/>"; foreach ($error as $ers) { echo "<span>".$ers."</span><br/>"; } echo "</div>"; include('form.php'); } } if(!isset($error)){ $suser=mysql_real_escape_string($_POST['user']); $spass=md5($_POST['pass']);//for secure passwords $find = "SELECT * FROM users WHERE user = '$suser' AND password = '$spass'"; if(mysql_num_rows(mysql_query($find))=="1"or die(mysql_error())){ session_start(); $_SESSION['username'] = $suser; header("Location: loggedin.php"); } else{ echo "<div class=\"warning\"><span>Some Error occured durring processing your data</div>"; } } } ?> 

Любая помощь будет оценена…

РЕДАКТИРОВАТЬ

Я только что заметил, что единственная ошибка, которую я получаю, – это если не введен пароль NO. Если введен неправильный пароль, я получаю пустую белую страницу. Может ли кто-нибудь помочь, почему пароль не проверяется?

Используйте trim() для обработки лишних пробелов до и после строк

Похож на логическую проблему. Для упорядочивания условных выражений необходимо использовать скобки:

 if( (isset($_POST['pass'])&&$_POST['pass']=="") || !isset($_POST['pass']) ) 

Попробуйте это и посмотрите, работает ли это.

 if(mysql_num_rows(mysql_query($find))=="1") { session_start(); $_SESSION['username'] = $suser; header("Location: loggedin.php"); } else { echo "<span>Your username or password was incorrect.</span>"; include "form.php"; die; } 

if (mysql_num_rows (mysql_query ($ find)) == "1" или die (mysql_error ())) {

Если SQL-запрос не возвращает никаких результатов (это означает, что пароль и имя пользователя не совпадают), оператор if возвращает false и ничего не происходит. В этом случае вы должны вернуть сообщение об ошибке.

РЕДАКТИРОВАТЬ:

После этого я не заметил другого утверждения. Я думаю, что фактическая проблема – die (mysql_error ()) . Когда SQL-запрос не возвращает никаких результатов, оператор if выполнит die (mysql_error ()), который вернет пустой, поскольку пустой результат не является ошибкой.

Я предлагаю вам удалить die (mysql_error ()) и включить отдельный оператор if для проверки на mysql_errno () (который возвращает true, когда есть ошибка).

if (mysql_errno ()) {die (mysql_error ()); }

Стоит отметить, что функции mysql_ * устарели в последних версиях PHP. Рекомендуется использовать MySQLi или PDO для подключения к MySQL на PHP.