я уже наверно вам надоел )) есть БД, с полями name, pass, mail... юзер вводит логин и пароль, если такие есть в БД, то регистрируеться сессия. для имени сессия регистрируется без проблем, а вот для mail зарегистрировать сессию не удаеться.. вот код: [sql]$sql = "SELECT COUNT(*) FROM `users` WHERE(name='$name' AND pass='$pass1')"; $query = mysql_query($sql); $result = mysql_fetch_array($query); if ($result[0] == 1) { $auth = 1; } else { $auth = 0; echo "Неверный логин или пароль!"; exit; } session_start(); if ($auth == 1) { $_SESSION['name'] = $result['name']; $_SESSION['mail'] = $result['mail']; }[/sql] подскажите в чем проблема(желательно в примере), что в моём коде не так :?: :?: :?:
Ti чёт не получаеться...вот код всего скрипта: PHP: <? require "config.php"; //$name - user name //$pass1 - user password global $name, $pass1, $auth, $result; if ($submit) { function check() { global $name, $pass1, $auth, $server, $user_name, $user_pass, $db_name, $result; $connect = mysql_connect($server, $user_name, $user_pass) or die("Ошибка подключения к базе данных. Обратитесь к администрации сайта!"); mysql_select_db($db_name, $connect); $sql = "SELECT COUNT(*) FROM `users` WHERE(name='$name' AND pass='$pass1')"; $query = mysql_query($sql, $connect); $result = mysql_fetch_array($query); if ($result[0] == 1) { $auth = 1; } else { $auth = 0; echo "Неверный логин или пароль!"; exit; } } } if ($name) { check(); session_start(); if ($auth == 1) { $_SESSION['name'] = $result['name']; $_SESSION['auth'] = $auth; $_SESSION['mail'] = $result['mail']; header("Location: home/"); exit; } } ?> после того как юзер вводит логин и пароль с помощью формы, он попадает на эту страницу где проходит проверка данных и регистрация сессии...первые две сессии регистрируються без проблем, а вот с mail проблемы подскажите что именно не так..
Вопрос адин. Что возращает SELECT COUNT(*) FROM `users` WHERE(name='$name' AND pass='$pass1')? Вопрос два. При $result[0] == 1 в $result - array(1); Откуда $result['name'] и $result['mail']?
Ti 1. $result = mysql_fetch_array($query); - должно возращять array('name','pass','mail')//насколько я понимаю 2.
1. шутка? Еще раз, SQL запрос что вернет? Подчеркиваю запрос, а не "$result = mysql_f.." 2. "Цитата: mysql_fetch_array ...", верно
или единицу теперь вернемся к вопросу номер два? грубо говоря, PHP: <? function check() { global $result; $result = array(1); } check(); session_start(); $_SESSION['name'] = $result['name']; $_SESSION['auth'] = $auth; $_SESSION['mail'] = $result['mail']; header("Location: home/"); чувствуете?
а так? PHP: <? $resultReal = array( 1 ); $resultInFuture = array( 'name' => 'Ti', 'mail'=>'Ti@waka.ru' ); $resultReal !== $resultInFuture; ЗЫ: Я тоже новый ЗЫ2: на самом деле надо бы array('name'=>'Ti','pass'=>'waka','mail'=>'Ti@waka.ru')
Ti немного начинает доходить...но все та же проблема, для имени сессия регестрируеться без проблем, а для мыла нет...пародокс какоё-то...=(
с моей стороны все работает: PHP: <? $result = array(1); if ($result[0] == 1) { $auth = 1; } else { $auth = 0; echo "Неверный логин или пароль!"; exit; } session_start(); if ($auth == 1) { $_SESSION['name'] = $result['name']; $_SESSION['mail'] = $result['mail']; } print_r($_SESSION); PHP: Array ( [name] => [mail] => )
у меня выдаёт такие ошибки 26: $_SESSION['name'] = $result['name']; 28: $_SESSION['mail'] = $result['mail'];
отвечаем на сейчас так: PHP: <? $result = array(1); isset($result['name']) === false; isset($result['mail']) === false;
хоть ошибка и выдается, но сессия регистрируется... тогда нужно заменить на $result['0'] и $result['2'] ...?
давайте минуту не будем курить окей? нет, если конечно каким-то чудом у вас будет массив $result = array(); $result['0'] = 'Ti'; $result['2'] = == 1[/size] То я с Вами солидарен. А слабо написать такой SQL, который вернет не только 1, а все что вам нужно (думаю еще name и mail)?