За последние 24 часа нас посетили 20123 программиста и 1695 роботов. Сейчас ищут 1873 программиста ...

MySQL и php сессии...

Тема в разделе "PHP и базы данных", создана пользователем byzyk, 7 янв 2008.

  1. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    я уже наверно вам надоел ))

    есть БД, с полями 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]

    подскажите в чем проблема(желательно в примере), что в моём коде не так :?: :?: :?:
     
  2. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    var_dump($result);
     
  3. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    Ti
    а можно подробней, с чем использовать эту функцию..?
     
  4. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    с 11-й строчкой Вашего кода
     
  5. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    Ti
    чёт не получаеться...вот код всего скрипта:

    PHP:
    1. <?
    2.  require "config.php";
    3. //$name - user name
    4. //$pass1 - user password
    5. global $name, $pass1, $auth, $result;
    6.  if ($submit) {
    7. function check() {
    8. global $name, $pass1, $auth, $server, $user_name, $user_pass, $db_name, $result;
    9. $connect = mysql_connect($server, $user_name, $user_pass) or die("Ошибка подключения к базе данных. Обратитесь к администрации сайта!");
    10. mysql_select_db($db_name, $connect);
    11. $sql = "SELECT COUNT(*) FROM `users` WHERE(name='$name' AND pass='$pass1')";
    12. $query = mysql_query($sql, $connect);
    13. $result = mysql_fetch_array($query);
    14. if ($result[0] == 1) {
    15. $auth = 1;
    16. } else {
    17. $auth = 0;
    18. echo "Неверный логин или пароль!";
    19. }
    20. }
    21. }
    22.  if ($name) {
    23.  check();
    24.   if ($auth == 1) {
    25.     $_SESSION['name'] = $result['name'];
    26.     $_SESSION['auth'] = $auth;
    27.     $_SESSION['mail'] = $result['mail'];
    28.     header("Location: home/");
    29.  exit;
    30. }
    31. }
    32. ?>
    после того как юзер вводит логин и пароль с помощью формы, он попадает на эту страницу где проходит проверка данных и регистрация сессии...первые две сессии регистрируються без проблем, а вот с mail проблемы

    подскажите что именно не так..
     
  6. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Вопрос адин.
    Что возращает SELECT COUNT(*) FROM `users` WHERE(name='$name' AND pass='$pass1')?

    Вопрос два.
    При $result[0] == 1 в $result - array(1);
    Откуда $result['name'] и $result['mail']?
     
  7. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    Ti
    1. $result = mysql_fetch_array($query); - должно возращять array('name','pass','mail')//насколько я понимаю

    2.
     
  8. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    1. шутка? Еще раз, SQL запрос что вернет? Подчеркиваю запрос, а не "$result = mysql_f.."
    2. "Цитата: mysql_fetch_array ...", верно
     
  9. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    Ti
    COUNT(*) = 0
     
  10. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    или единицу
    теперь вернемся к вопросу номер два?
    грубо говоря,
    PHP:
    1. <?
    2. function check() {
    3.    global $result;
    4.    $result = array(1);
    5. }
    6. check();
    7. $_SESSION['name'] = $result['name'];
    8. $_SESSION['auth'] = $auth;
    9. $_SESSION['mail'] = $result['mail'];
    10. header("Location: home/");
    чувствуете?
     
  11. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    Ti
    не совсем...
    ЗЫ: я в пхп новый, так что хотелось бы разобратся..
     
  12. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    а так?
    PHP:
    1. <?
    2. $resultReal = array(
    3.    1
    4. );
    5. $resultInFuture = array(
    6.    'name' => 'Ti',
    7.    'mail'=>'Ti@waka.ru'
    8. );
    9.  
    10. $resultReal !== $resultInFuture;
    ЗЫ: Я тоже новый ;)
    ЗЫ2:
    на самом деле надо бы array('name'=>'Ti','pass'=>'waka','mail'=>'Ti@waka.ru')
     
  13. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    Ti
    немного начинает доходить...но все та же проблема, для имени сессия регестрируеться без проблем, а для мыла нет...пародокс какоё-то...=(
     
  14. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    с моей стороны все работает:

    PHP:
    1. <?
    2. $result = array(1);
    3. if ($result[0] == 1) {
    4.     $auth = 1;
    5. } else {
    6.     $auth = 0;
    7.     echo "Неверный логин или пароль!";
    8.     exit;
    9. }
    10.  
    11. if ($auth == 1) {
    12.     $_SESSION['name'] = $result['name'];
    13.     $_SESSION['mail'] = $result['mail'];
    14. }
    15. print_r($_SESSION);
    PHP:
    1. (
    2.     [name] =>
    3.     [mail] =>
    4. )
    5.  
     
  15. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    у меня выдаёт такие ошибки
    26: $_SESSION['name'] = $result['name'];
    28: $_SESSION['mail'] = $result['mail'];
     
  16. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    отвечаем на
    сейчас так:
    PHP:
    1. <?
    2. $result = array(1);
    3. isset($result['name']) === false;
    4. isset($result['mail']) === false;
     
  17. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    хоть ошибка и выдается, но сессия регистрируется...

    тогда нужно заменить на $result['0'] и $result['2'] ...?
     
  18. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    непомогает...
     
  19. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    давайте минуту не будем курить окей?
    нет, если конечно каким-то чудом у вас будет массив
    $result = array();
    $result['0'] = 'Ti';
    $result['2'] = == 1[/size]
    То я с Вами солидарен.

    А слабо написать такой SQL, который вернет не только 1, а все что вам нужно (думаю еще name и mail)?
     
  20. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    Ti
    я ж говорю, новенький))
    щяс попробую..спасиб
     
  21. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    согласно
    это будет примерно так:
    PHP:
    1. <?
    2. print_r($result);
     
  22. byzyk

    byzyk Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    29
    Симпатии:
    0
    Ti
    спасибо Вам огромнейшое!!!....получилось ))))