как передать session_id () через страницы php? - PullRequest
1 голос
/ 15 мая 2010

когда пользователь нажимает кнопку входа (index.php) Я звоню chechlogin.php , где я проверяю loginId пароль как-

if($count==1)
{
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
$_SESSION['UserId'] = $myusername;
$_session['SessionId'] = session_id();
header("location:LoggedUser.php");
}

in LiggedUser.php

<?php session_start();  //starting session

if (! Isset ($ _ SESSION ['SessionId']) || $ _SESSION ['SessionId'] == '') { заголовок ( "место: index.php"); } ?>

Проблема: Он всегда возвращается на страницу index.php, хотя я ввожу правильный ID пользователя и пароль. Я думаю, что session_id () не работает должным образом или ??

Ответы [ 2 ]

5 голосов
/ 15 мая 2010

изменить $ _session на $ _SESSION.

btw session_register устарел и не должен использоваться. Подробности см. В руководстве session-register .

кстати # 2. Вам не нужно хранить sessionId в $ _SESSION, UserId достаточно. Таким образом, ваш код может выглядеть так:

login.php

if ($count == 1) {
    $_SESSION['UserId'] = $myusername;
    header ("location: LoggedUser.php");
    exit;
}

loggeduser.php

if (empty ($_SESSION['UserId'])) {
    header ("location:login.php");
    exit;
}

// user is logged 

EDIT: Выход добавлен, как предложил Эмиль.

1 голос
/ 15 мая 2010

Рассмотрите возможность вызова exit; после каждого header('Location: ...') вызова. В противном случае PHP продолжит анализ остальной части кода, что может вызвать непредсказуемые ошибки.

header("Location: LoggedUser.php");
exit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...