php
  • mysql
  • 2013-05-27 6 views -2 likes 
    -2

    У меня есть следующий код, вставленный в верхней части страницы, вид-профиля:Почему cookie-сессия MySQL перенаправление не работает?

    $username = $_REQUEST['username']; 
    
    $cookiesession = mysql_query("SELECT CSToken FROM members WHERE Username = '$username'"); 
    
    if ($_SESSION['loggedin'] == $cookiesession) { 
    header("Location: /profile.html"); 
    } 
    

    По какой-то причине не перенаправляет на profile.html при просмотре свою собственную страницу профиля. Какие-либо предложения? Меня это очень расстраивает, и я не могу понять, что я сделал неправильно.

    Я просто echo'd $ cookiesession и следующий ответ вернулся:

    Resource id #16 
    

    Любые идеи ?! Большое спасибо заранее!

    +0

    Что в $ печенье? – Naruto

    +0

    Вам необходимо выполнить итерацию по набору результатов, который вы возвращаете из запроса к базе данных. – andrewsi

    +0

    Вы используете [** устаревший ** API баз данных] (http://stackoverflow.com/q/12859942/19068) и должны использовать [современную замену] (http://php.net/manual/en/ mysqlinfo.api.choosing.php). Вы также уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin

    ответ

    1

    mysql_query возвращает результат HANDLE, а не поля (ов), которые вы выбрали. вам нужно получить строку первой:

    $result = myqsl_query("SELECT ...") or die(mysql_error()); 
    $row = mysql_fetch_assoc($result); 
    if ($row['CSToken'] == $cookiesession) { ...} 
    

    Ваш код пытается сравнить этот результат с ручкой струнный/междунар, который, конечно, не будет работать.

    Также обратите внимание, что вы уязвимы для SQL injection attacks и используете устаревший интерфейс DB.

    0

    Вы должны начать сеанс, используя session_start(). Этот вызов восстановит массив $_SESSION до того, что было после предыдущего запроса.

    $cookiesession - это ресурс PHP. Ресурсы PHP освобождаются после выполнения скрипта PHP, поэтому нет смысла хранить их в сеансе. Я подозреваю, что вы хотите, чтобы запись в базах данных была $cookiesession. Используйте команду mysql_fetch_array($cookiesession) для извлечения записи базы данных. Но учтите, что расширение mysql устарело и поэтому не должно использоваться в новом коде. Вместо этого используйте PDO или MySQLi.

     Смежные вопросы

    • Нет связанных вопросов^_^