2009-08-09 2 views
1

Как вы можете отслеживать статус входа по PHP?Как отслеживать статус входа по PHP?

Включая следующую страницу на каждую мою страницу, чтобы проверить статус входа в систему. Я пытаюсь определить пользователя после входа в файл cookie. Однако мне не удалось прочитать мой login_cookie или использовать его каким-либо образом.

Код handle_login_status.php где манипулируют сост

<?php 

    $dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123"); 

    //1. read the first word in Cookie of the form 
     //"[email protected],ca05106e445c15197f7213bc12648524 
    //Then, store this word to $email 
    $cookie_tripped = explode(",", $_COOKIE['login_cookie']); 
    $email = $cookie_tripped[0]; 
    $result = pg_prepare($dbconn, "query1", 'SELECT passhash_md5 FROM users 
         WHERE email = $1;'); 
    $result = pg_execute($dbconn, "query1", array($email)); 
    if(!$result) { 
     exit; 
    } 

    // to take the passhash out of the cookie 
    $passhash_md5_cookie = $cookie_tripped[1]; 
    if($result == $passhash_md5_cookie) { 
     $result = pg_prepare($dbconn, "query7", "UPDATE users SET logged_in = $1 
      WHERE email = $2;"); 
     $result = pg_execute($dbconn, "query7", array("true", $email)); 
     $logged_in = true; 
    } 
    else { 
     $result = pg_execute($dbconn, "query7", array("false", $email)); 
     $logged_in = false; 
    } 

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

Декларация login_cookie на handle_login_form.php

global $login_cookie; 
$login_cookie = $_POST['email'] . ',' . md5($_POST['password']); 

$result = pg_prepare($dbconn, "query3", 'SELECT passhash_md5 
    FROM users WHERE email = $1;'); 
$result = pg_execute($dbconn, "query3", array($_POST['email'])); 

while ($row = pg_fetch_row($result)) { 
    $password_original = $row[0]; 
} 

$login_cookie_original = $_POST['email'] . ',' . md5($password_original); 

if ($login_cookie_original == $login_cookie) 
{ 
    setcookie("login_cookie", $login_cookie); 
    header("Location: /codes/index.php?ask_question"); 
    die("logged in"); 
} 
+6

Прочитайте руководство уже ... Поверьте мне, это поможет способ более публиковать вопросы здесь. По крайней мере, вы поймете язык. http://php.net/manual –

+1

Плюс, вы даже не даете нам достаточно информации для правильной отладки ... Где определяется '$ login_cookie_original'? Где определяется '$ login_cookie'? –

ответ

5

Вы даже не дают нам достаточно информации для отладки правильно ...

  • Где находится $login_cookie_original?
  • Где находится $login_cookie?

Без этой информации мы не сможем отладить ваш код должным образом. Вы правильно используете setcookie(), чтобы установить файл cookie, а затем используйте переменную $_COOKIE для ее чтения.

Sessions был бы более простой способ справиться с ситуацией входа в систему.

Вы также задавали много простых вопросов о PHP, и вы, похоже, не понимаете, как работает язык. Я предлагаю внимательно прочитать документацию перед следующим вопросом.

+1

«Сессии - это более простой способ справиться с ситуацией входа в систему», не говоря уже о том, что они почти гарантированно более безопасны. – UnkwnTech

+1

** @ Unkwntech: ** На самом деле, они на самом деле не более безопасны, чем использование файлов cookie (если файлы cookie сделаны правильно). Сессии на самом деле являются прославленным файлом cookie. Как только кто-то украдет ваш идентификатор сеанса, вы в значительной степени сделали это, как и для файлов cookie. См. Мой ответ для получения дополнительной информации: http://stackoverflow.com/questions/1221447/what-do-i-need-to-store-in-the-php-session-when-user-logged-in/1225668#1225668 –

+0

Ваш ответ подсказывает мне, что для меня лучше всего получить код, работающий с файлами по умолчанию, а не с сеансами. - Когда мне нужна чрезвычайная безопасность, сеансы могут помочь. –

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