我有一个用户登录系统,您输入用户名和密码,您将被发送到另一个页面,其中这些值与保存在数据库中的所有用户进行比较,如果找到匹配的用户名和密码,则会创建一个会话其他页面可以看到有用户登录。以下是代码:
在<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)
答案 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将是在所有网站上都有效。