ну вот и багу обнаружили))) я удалил у себя сообщения а людей которые мне их писали или которым я писал они остались же еще, а написать мне все равно нельзя пока и они их у себя не удалят. + вместо инфосообщения мол незя отправить пишеться что все ок а на самом деле нет. сейчас исправлю. блин))
<?php error_reporting(E_ALL);
include ('mysql_conf.php');
//var_dump($users_tb);
if ($q = mysql_query("SELECT * FROM `". $users_tb ."` WHERE `password`='".$_POST['password'] ."' AND `login`='".$_POST['login'] ."' LIMIT 1 ")) {
// проверяем логины и пароли
session_start();
$_SESSION['user'] = mysql_fetch_array($q); // устанавливаем ключ ID для сессии авторизованного
header("Location: ../main.php"); // отправляем на закрытую страницу
mysql_close ($link);
die();
}
else {
unset($_SESSION['user']);
header("Location: ../index.php"); // отправляем обратно на авторизацию
die();
mysql_close ($link);
}?>
вот твой код. тут много ньюансов.
во-первых такая проверка всегда верна тоесть всегда проходит
1 2
<?php if ($q = mysql_query("SELECT * FROM `". $users_tb ."` WHERE `password`='".$_POST['password'] ."' AND `login`='".$_POST['login'] ."' LIMIT 1 ")) {?>
надо проверять ни сам факт сделан ли запрос а что он вернул
что-то типа
1 2 3 4
<?php $q = mysql_query("SELECT * FROM `". $users_tb ."` WHERE `password`='".$_POST['password'] ."' AND `login`='".$_POST['login'] ."' LIMIT 1 ");
if (mysql_num_rows($q) > 0) {
}?>
тоесть проверять что запрос смог вытянуть из базы. В данном случае я проверяю сколько записей он вытянул))
Дальше... вот это не обязательно
1 2
<?php mysql_close ($link);?>
само закроется после отработки скрипта, только код засоряет. Это надо делать если юзаешь разные подключения в процессе работы.
возвращает массив с данными из запроса. но если запрос ничего не вытянул то возникнет ошибка. по этому перед вызовом этой функции нужно проверять есть ли чтото в результате вот так
1 2
<?php mysql_num_rows($q)?>
тоесть что-то типа этого
1 2 3 4 5 6 7
<?php if (mysql_num_rows($q) > 0) {
$result = mysql_fetch_array($q);
}
//или
if (mysql_num_rows($q) > 0) {
$result = mysql_fetch_assoc($q);
}?>
эти два примера в принципе делают одно и тоже. Если запрос был удачен в переменной $result будет массив с данными. потом можешь его продампить и посмотреть в каком они там виде. Так как все ависит от того как у тебя построена таблица в мускуле)
Добавлено 2010.10.10 14-38
skad0, Ну как твой проект продвигается? Будут еще вопросы создавай темку будем перетирать как лучше сделать