我在WampServer中使用PHP有一个简单的登录和注销系统。登录表单在index.php上,提交后会导致login.php。 login.php有登出链接(logout.php)。
的index.php
<html>
<head>
</head>
<body>
<form action="login.php" method="POST">
Username:<input name="username" type="text">
<br>
Password:<input type="password" name="password">
<br>
<input type="submit" name="submit" value="login">
</form>
</body>
</html>
的login.php
<html>
<head>
</head>
<body>
<?php
define('DB_NAME','db_name');
define('DB_USER','root');
define('DB_PASSWORD','');
define('DB_HOST','localhost');
$link=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
if (!$link)
{
die('Failed to connect to MySQL: ' . mysql_error());
}
$query = "CREATE DATABASE IF NOT EXISTS " . DB_NAME;
if(!mysql_query($query)){
die('Error in creating database : <br> ' . mysql_error());
}
$db_selected = mysql_select_db (DB_NAME, $link);
if(!$db_selected) {
die(' Can\'t use ' . DB_NAME . ' : ' . mysql_error() );
}
session_start();
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if ($username && $password ){
$query = mysql_query("SELECT * FROM login WHERE username='$username'");
$numrows = mysql_num_rows($query);
if($numrows!==0){
while($row = mysql_fetch_assoc($query)){
$dbusername = $row['username'];
$dbpassword = $row['password'];
}
if ($username==$dbusername && $password==$dbpassword) {
echo "You are logged in !";
@$_SESSION['username'] = $username;
}
else{
die("password incorrect");
}
}
else{
die("User does not exist");
}
}
else {
die("Please enter correct username and password");
}
}
?>
<br>
<a href="logout.php">Logout</a>
</body>
</html>
logout.php
<?php
session_start();
unset($_SESSION["username"]);
header("Location: index.html");
?>
哪个有效。
现在,我想阻止以下情况。
我已尝试在login.php中添加以下内容以清除缓存,但尚未解决。
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
和
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache");
事实上,如果我不编写上述2个代码段中的任何一个,浏览器会要求重新提交表单。但如果我写它,它会直接显示页面而不会阻止任何事情。
我在此网站上看到this question但无法理解如何应用它。任何人都可以请解释如何清除缓存或使用PHP中的任何其他方法来做到这一点?
答案 0 :(得分:0)
你可以使用
if(isset($_SESSION["username"]))
{
// header to another location
}
//索引
if(isset($_SESSION["username"]))
{
header("Location: login.html");
}