За последние 24 часа нас посетили 57258 программистов и 1809 роботов. Сейчас ищут 913 программистов ...

Ошибка в выборке данных из бд

Тема в разделе "PHP для новичков", создана пользователем Zerox, 28 мар 2010.

  1. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Вот такая вот ошибка:
    Вот код:
    PHP:
    1.  
    2. mysql_query( "DELETE FROM auth_session WHERE Id = ". $user -> id ." AND hash = '" . myhash( $user -> rlogin , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" );
    3.  
     
  2. KOM

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

    С нами с:
    21 июл 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Кривой Рог, Днепропетровская
    собери запрос в переменную
    выведи и просмотри переменную

    [sql]
    $query_del="DELETE FROM auth_session WHERE Id = ". $user -> id ." AND hash = '" . myhash( $user -> rlogin , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" ;
    echo $query_del;

    [/sql]
    мне кажется $user->id возращает пустое значение[/sql]

    для избежания (коль не хочется проверять) возьми в одинарные кавычки

    [sql]
    $query_del="DELETE FROM auth_session WHERE Id = '". $user -> id ."' AND hash = '" . myhash( $user -> rlogin , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "'" ;
    echo $query_del;

    [/sql]
     
  3. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Не ту дал строку с кодом
    вот:
    [sql]$result = mysql_query( "SELECT * FROM `auth_sessions` WHERE `member` = " . $user -> Id . " AND `hash` = '" . myhash( $user -> rlogin , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "' AND time > " . ( time() - ( $minutes * 60 ) ) . " LIMIT 1 " );
    [/sql]
     
  4. KOM

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

    С нами с:
    21 июл 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Кривой Рог, Днепропетровская
    собери запрос в переменную
    выведи и просмотри переменную

    и покажи что возращает класс
     
  5. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    пусто
     
  6. KOM

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

    С нами с:
    21 июл 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Кривой Рог, Днепропетровская
    выведи запрос, собери запрос в переменной и выведи эту переменную перед выполнением
     
  7. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    ээм...типо:
    [sql]$result = mysql_query( "SELECT * FROM `auth_sessions` WHERE `member` = " . $user -> Id . " AND `hash` = '" . myhash( $user -> rlogin , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "' AND time > " . ( time() - ( $minutes * 60 ) ) . " LIMIT 1 " );
    echo $result;[/sql]
    ?
     
  8. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Запрос это вот это
    Но на сервер уходит он в виде строки. Вот эту строку и просят тебя вывести на экран.
     
  9. KOM

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

    С нами с:
    21 июл 2006
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Кривой Рог, Днепропетровская
    нет, типа
    PHP:
    1.  
    2. $query_sel= "SELECT * FROM `auth_sessions` WHERE `member` = " . $user -> Id . " AND `hash` = '" . myhash( $user -> rlogin , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $_COOKIE['time'] ) . "' AND time > " . ( time() - ( $minutes * 60 ) ) . " LIMIT 1 " ;
    3. $result = mysql_query($query_sel);
    4. echo $query_sel;
     
  10. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    йа понил
     
  11. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    вот только чо делоть терь...
     
  12. Goryn

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

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Что делать, что делать?
    Искать $user -> Id
     
  13. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    но как...мб я не правильно делаю? делаю как написано тут, но немного изменяю:
    http://odmin.su/index.php?showtopic=974
    вот как правильно сделать...
     
  14. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Переношу в PHP программирование для новичков ибо база данных тут совсем не причем.

    UPD ну и зачем нам ссылка на статью с кодом по созданию сессий? Особенно с учетом того, что Вы в нем что-то там уже изменили.
    Научитесь отлавливать ошибки, посмотрите где определяется Ваш объект $user и почему же у него нет id.
    Отлавливание ошибок это ведь так увлекательно.


    Telepat Mode
    Быть может сессия пытается создаться до того как пользователь логинится?
     
  15. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    хм..нет, не пытается=))

    Сейчас попробую поискать...
     
  16. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    вот смотрите... никак немогу понять! вот login.php
    PHP:
    1.  
    2. <?php
    3. include ("$_SERVER[DOCUMENT_ROOT]/lib/config.php");
    4. include ("$_SERVER[DOCUMENT_ROOT]/lib/functions.php");
    5.  
    6. if(isset($_POST['login'])) //Если был POST-запрос с скрипту
    7. {
    8. //Авторизация
    9. //Проверка формы
    10. if(empty( $_POST['username'] ) || empty( $_POST['password'] ) )
    11.     {
    12.     require ("$_SERVER[DOCUMENT_ROOT]/lib/head.inc");
    13.     echo "<center><p>Не все поля заполнены!</p></center>";
    14.     require ("$_SERVER[DOCUMENT_ROOT]/lib/end.inc");
    15.  
    16. }else{  //Если форма нормальная
    17.  
    18. auth();
    19. require ("$_SERVER[DOCUMENT_ROOT]/lib/head.inc");
    20. echo "<center><p>Ты авторизован!</p></center>";
    21. require ("$_SERVER[DOCUMENT_ROOT]/lib/end.inc");
    22. }
    23. } //Конец скрипта
    24. ?>
    25.  
    вылазит ошибка:
    понятно что это просто предупреждение, но что я не так делаю?

    42-46 строки functions.php
    PHP:
    1.  
    2. $add_session = mysql_query( "INSERT INTO `auth_sessions` VALUES( " . $user -> Id . " , " . time() . " , '" . myhash( $user -> name , $_SERVER['HTTP_USER_AGENT'] , get_ip() , $tm ) . "' )" );
    3.  
    4.  
    5.    setcookie( "time" , $tm , time() + 900 , "/" );
    6.    setcookie( "name" , $user -> rlogin , time() + 900 , "/" );
    7.  
     
  17. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    $user -> Id и $user -> name откуда приходят?
     
  18. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    PHP:
    1. <?
    2. $result = mysql_query("SELECT * FROM members WHERE rlogin = ' ".$_COOKIE['name']." ' ");
    3. $user = mysql_fetch_object( $result );
    4.  ?>
     
  19. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ну, значит не выбрало ничего.
     
  20. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    всмысле нету ничего? да нет..есть...
     
  21. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    сделай
    PHP:
    1. <?php
    2. echo "SELECT * FROM members WHERE rlogin = ' ".$_COOKIE['name']." ' ";
    3. ?>
    и выполни получившийся запрос в пма или консоли. Потом будешь говорить про то, как возвращает
     
  22. Zerox

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

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    О_О ошибка исправилась когда я заменил
    PHP:
    1. $result = mysql_query("SELECT * FROM members WHERE rlogin = ' ".$_COOKIE['name']." ' ");
    на
    PHP:
    1.  $result = mysql_query("SELECT * FROM members WHERE rlogin = '". mysql_escape_string( $_COOKIE['name'] ) . "' LIMIT 1" );
    как в том уроке было