PHP中的会话似乎没有被创建

时间:2011-12-18 16:41:15

标签: php mysql login

我有一个用户登录系统,您输入用户名和密码,您将被发送到另一个页面,其中这些值与保存在数据库中的所有用户进行比较,如果找到匹配的用户名和密码,则会创建一个会话其他页面可以看到有用户登录。以下是代码:

<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 个答案:

答案 0 :(得分:3)

您似乎将Cookie设置为time()+ 0。这将设置一个立即过期的cookie。

答案 1 :(得分:2)

您正在设置time() + 0。这使得cookie现在到期。

要制作一个在浏览器关闭时过期的常规cookie,只需将0设为expr,不加时间。

答案 2 :(得分:1)

您是否考虑过使用会话?

基本用法: http://www.php.net/manual/en/session.examples.basic.php

文档: http://www.php.net/manual/en/book.session.php

编辑:

会话/ cookie正在网站的子目录中设置,因此在上层目录中无效。 作为一种解决方案,可以尝试将启动会话的代码移动到网站的主目录,或者,如果使用cookie,将setcookie()函数的$ path参数设置为“/”,那么cookie将是在所有网站上都有效。