Вот мой код:
$usersql = "Select fab2_type from feesys_admin where adminname ='$_POST[username]' and adminemail = '$_POST[password]'";
$userresult = mysql_query($usersql) or die ("<h3>Error in query: $query. ".mysql_error()."</h3>");
$num_rows = mysql_num_rows($userresult);
if($num_rows > 0) {
if($userresult['fab2_type']=='Partner'){
}
Когда я запускаю оператор SQL для базы данных через PHP Admin, он работает нормально. Но он возвращается пустым в результатах здесь.
Я проверил, чтобы убедиться, что база данных подключается нормально.
Я проверил все орфографии
Количество строк возвращается правильно.
Нет синтаксических ошибок.
Когда я повторяю имя пользователя и пароль, а также оператор SQL, это все правильно.
Этот код работал, поэтому я понятия не имею, что здесь происходит не так.
Это потому, что вы не процитировали $_POST
переменные массива правильно. У тебя есть $_POST[username]
а также $_POST[password]
, Так должно быть $_POST['username']
а также $_POST['password']
, Это заставляет PHP интерпретировать имя пользователя и пароль как константы.
Вот другой выстрел в вашем синтаксисе —
$usersql = "SELECT `fab2_type` FROM `feesys_admin` WHERE `adminname` ='".$_POST['username']."' AND `adminemail` = '".$_POST['password']."' ";
Вы можете еще больше сократить это, предварительно определив (как говорит Фред ниже).
$user = $_POST['username']; // please sanitize this
$pass = $_POST['password']; // please sanitize this
$usersql = "SELECT `fab2_type` FROM `feesys_admin` WHERE `adminname` ='".$user."' AND `adminemail` = '".$pass."' ";
Вы очень подвержены риску внедрения SQL-кода, если не очищаете вводимые пользователем данные.
Пароль связан
Я заметил, что вы можете хранить пароли в виде простого текста. Если это так, это крайне обескураживает.
Я рекомендовал вам использовать CRYPT_BLOWFISH или PHP 5.5 password_hash()
функция.
Для PHP < 5.5 использовать password_hash() compatibility pack
.
Кроме того, что касается внедрения SQL, использование mysqli
с подготовленными заявлениями, или же PDO с подготовленными заявлениями, они намного безопаснее.
Других решений пока нет …