Сессия в PHP выглядит так, как будто она не создается - PullRequest
1 голос
/ 18 декабря 2011

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

Перед тегами <html> и <!DOCTYPE HTML>:

<?php
$con = mysql_connect("localhost", "Username", "Password");

if(!$con)
    die("Could not connect: " . mysql_error(). "<br /> Send this text to the following mail: <a href='mailto:'support@tamankeet.com'");

mysql_select_db("tamankee_Users", $con) or die("Could not find Database: " . mysql_error() . "<br /> Send this text to the following mail: <a href='mailto:'support@tamankeet.com'>support@tamankeet.com</a>");

$User = $_POST["username"];
$Password = $_POST["password"];
$hasLoggedIn = false;

$result = mysql_query("SELECT * FROM Users") or die("Query error: " . mysql_error() . "<br /> Send this text to the following mail: <a href='mailto:'support@tamankeet.com'>");

while($row = mysql_fetch_array($result))
{
    $RowPass = $row['Password'];
    $RowUser = $row['Username'];
    if($Password == $RowPass && $User == $RowUser)
    {
        session_start();
        $_SESSION["UserLoggedIn"] = $User;
        $hasLoggedIn = true;
    }
}

mysql_close($con);
?>

Внутри <body> тег:

<?php
if($hasLoggedIn)
{
    echo "<h3 align='center'>Welcome " . $User . "!</h3>";
}
else
{
    echo "<h3 align='center'>Username / password wrong. <a href='login.php'>Try again</a></h3>";
}
?>

Затем на каждой странице у меня есть этот код:

<?php
$Username = "";
$isUserLoggedIn = false;
if(isset($_SESSION["UserLoggedIn"]))
{
    $isUserLoggedIn = true;
    $Username = $_SESSION["UserLoggedIn"];
}
else
{
    $Username = "visitor";
    $isUserLoggedIn = false;
}

echo "Welcome " . $Username . "!";
if($isUserLoggedIn)
{
    echo " | Is this not you? <a href='http://www.tamankeet.com/Users/logout.php'>Log Out</a>";
}
else
{
    echo " | <a href='http://www.tamankeet.com/Users/login.php'>Log In</a> or <a href='http://www.tamankeet.com/Users/signup.php'>Sign Up</a>";
}
?>

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

Ответы [ 3 ]

3 голосов
/ 18 декабря 2011

Вы, похоже, устанавливаете cookie на время () + 0.Это установит cookie, срок действия которых истекает немедленно.

2 голосов
/ 18 декабря 2011

Вы устанавливаете time() + 0. Это приводит к истечению срока действия файла cookie.

Чтобы сделать обычный файл cookie, срок действия которого истекает при закрытии браузера, установите в качестве значения expr только 0, без добавления времени.

1 голос
/ 18 декабря 2011

Рассматривали ли вы использование сессий?

Основное использование: http://www.php.net/manual/en/session.examples.basic.php

Документация: http://www.php.net/manual/en/book.session.php

EDIT:

Сессия / cookie была установлена ​​в подкаталоге веб-сайта и поэтому была недопустима в верхних каталогах. В качестве решения можно попытаться переместить код, запускающий сеанс, в главный каталог веб-сайта или, если используются файлы cookie, установить для параметра $ path функции setcookie () значение «/», чтобы файл cookie был действительно для всего сайта.

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