Вход на сайт PHP иногда работает - PullRequest
1 голос
/ 12 октября 2010

У меня проблема с моей системой входа в систему. Иногда это работает, иногда нет. Похоже, что он с первого раза терпит неудачу, а с другой работает. НЕТ ОШИБКИ; страница перенаправляется на домашнюю страницу, как и положено, но переменные сеанса появляются пустыми.

Первый блок кода - это соответствующий сценарий входа в систему после принятия имени пользователя / пароля. Второй блок - это то, что я использую, чтобы увидеть, есть ли у пользователя куки-файлы, если сессионные переменные не устанавливают домашнюю страницу. Третьи часы - мой скрипт выхода из системы.

Заранее спасибо.

// The log-in is OK so set the user ID and username session vars (and cookies), and redirect to the home page
$row = mysqli_fetch_array($data);
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['username'] = $row['username'];
$_SESSION['first_name'] = $row['first_name'];

if($rememberme == 1)
{    
    setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30));    // expires in 30 days
    setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30));  // expires in 30 days
    setcookie('first_name', $row['first_name'], time() + (60 * 60 * 24 * 30));  // expires in 30 days
}

if($ref==0)
{
    header("location: http://domain.com/test.php");

}
else
{
    header("location: http://domain.com/".$ref);

}

второй блок:

session_start();

if (!isset($_SESSION['user_id'])) {

    if (isset($_COOKIE['user_id']) && isset($_COOKIE['username']) && isset($_COOKIE['first_name'])) {
        $_SESSION['user_id'] = $_COOKIE['user_id'];
        $_SESSION['username'] = $_COOKIE['username'];
        $_SESSION['first_name'] = $_COOKIE['first_name'];
    }
}

третий блок:

// If the user is logged in, delete the session vars to log them out
session_start();
if (isset($_SESSION['user_id'])) 
{
    // Delete the session vars by clearing the $_SESSION array
    $_SESSION = array();

    // Delete the session cookie by setting its expiration to an hour ago (3600)
    if (isset($_COOKIE[session_name()])) 
    {
      setcookie(session_name(), '', time() - 3600);
    }

    // Destroy the session
    session_destroy();
}

// Delete the user ID and username cookies by setting their expirations to an hour ago (3600)
setcookie('user_id', '', time() - 3600);
setcookie('username', '', time() - 3600);

// Redirect to the home page
header('Location: http://domain.com/test.php');

1 Ответ

1 голос
/ 12 октября 2010

Попробуйте уничтожить переменные сеанса в сценарии выхода из системы, также в начале сценария входа.

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