После нажатия на "Вход", у меня появилась такая страница
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL
result resource in /home/users/.../enter.php
on line 28
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
in /home/users/.../enter.php on line 34
Ошибка:
Логин "Логин" не найден в базе!
Дело в том, что у Вас, видимо, не стоит проверка на правильность выполнения
запросов. Поэтому, когда запрос неверный, скрипт продолжает работать в обычном
порядке, что и приводит к "странному" поведению.
Я бы рекомендовал Вам вместо mysql_query воспользоваться функцией my_query
http://anton-pribora.ru/functions/my_query.php , которая покажет ошибки,
появляющиеся в процессе работы программы.
Помимо этого, есть некоторые правила работы с базой данных MySQL:
1. Правило перед работой: нужно выставить кодировку на соединение
my_query('SET names "cp1251"'); // Windows-1251
2. Правило для выборки: всегда проверять ресурс и количество найденных строк
<?php
// Пример запроса
$sql = 'SHOW DATABASES';
$res = my_query($sql);
// Результат нужно объявлять заранее
$result = array();
// Проверка на валидность идентификатора запроса и количества строк,
// которые вернул запрос
if ( $res && mysql_affected_rows() )
{
while ( $row = mysql_fetch_assoc($res) )
$result[] = $row;
}
?>
3. Правило для конструирования запросов: при добавлении пользовательских данных
в запрос, всегда использовать функцию mysql_real_escape_string()
<?
$sql = 'INSERT INTO `my_table` SET `id` = "'. mysql_real_escape_string($_POST['id']) .'"';
$sql = 'SELECT * FROM `my_table` WHERE `id` LIKE "'. mysql_real_escape_string($_GET['id']) .'%"';
?>
Подробнее
http://anton-pribora.ru/articles/locales/index.php
http://anton-pribora.ru/articles/php-common/index.php#php-ini-magic-quotes-gpc
|