Log.php возвращает «Неверный пользователь» из базы данных MySQL - PullRequest
0 голосов
/ 11 мая 2011

Я размещаю веб-сайт с локального компьютера (используя MAMP Pro на Mac), и мне нужно переключить хостинг на другой локальный Mac. Я скопировал все файлы для своего веб-сайта и таблицы MySQL и проверил, что сервер и MySQL работают нормально. Кажется, все в порядке, за исключением того, что система входа возвращает «Invalid User», когда я пытаюсь войти в систему, даже при том, что я ввожу правильную информацию о пользователе (я только что попробовал несколько пользователей).

log.php, который обрабатывает логин, выглядит так:

<?
session_name("MyLogin");
session_start();

if($_GET['action'] == "login") {
$conn = mysql_connect("localhost","root","password"); // your MySQL connection data
$db = mysql_select_db("nick"); //put your database name in here 
$name = $_POST['user'];
$q_user = mysql_query("SELECT * FROM USERS WHERE login='$name'");

if(mysql_num_rows($q_user) == 1) {

$query = mysql_query("SELECT * FROM USERS WHERE login='$name'");
$data = mysql_fetch_array($query);
if($_POST['pwd'] == $data['password']) { 
$_SESSION["name"] = $name;
header("Location: http://monthlymixup.com/may.php"); // success page. put the URL you want 
exit;
} else {
header("Location: login.php?login=failed&cause=".urlencode('Wrong Password'));
exit;
}
} else {
header("Location: login.php?login=failed&cause=".urlencode('Invalid User'));
exit;
}
}

// if the session is not registered
if(session_is_registered("name") == false) {
header("Location: login.php");
}

?>

Я временно удалил пароль из приведенного выше кода.

Интересно, какие шаги я могу предпринять для устранения этой проблемы, и буду благодарен за любую помощь.

Спасибо

Ник

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Несколько распространенных приемов, когда я сталкиваюсь с этой проблемой.

  1. Выведите сгенерированный SQL и протестируйте его вручную - echo $query;
  2. Посмотрите, выводит ли mysql_error() что-нибудь послевы выполняете свои запросы.
  3. Используйте var_dump() и print_r() для своих объектов данных, чтобы убедиться, что они соответствуют ожидаемым.
  4. Закомментируйте ваши перенаправления и exit() строки, чтобы вы могли определить, гдескрипт не работает.

Исправьте или прокомментируйте все, что определено выше.

0 голосов
/ 11 мая 2011

Ваш код выполняет запрос, чтобы найти пользователя с данным именем пользователя, а затем проверяет, точно ли количество строк с этим именем пользователя равно 1.

Единственный способ увидеть ошибку «Недопустимый пользователь» - это если 0 пользователей с таким именем или более 1 пользователя с этим именем.

Посмотрите на содержимое таблицы и проверьте, какой из этих случаев (я рекомендую http://sequelpro.com для просмотра содержимого базы данных на Mac). Вы также можете использовать Sequel Pro для проверки ваших запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...