Как отслеживать статус входа на PHP? - PullRequest
1 голос
/ 09 августа 2009

Как вы можете отслеживать статус входа через 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@gmail.com,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;
    }

Я установил cookie в обработчике формы входа в систему.

Объявление 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");
} 

Ответы [ 2 ]

5 голосов
/ 09 августа 2009

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

  • Где определено $login_cookie_original?
  • Где определено $login_cookie?

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

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

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

2 голосов
/ 09 августа 2009

Возможно, вы захотите взглянуть на сессии http://www.tizag.com/phpT/phpsessions.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...