我有这个php登录代码
<?php
session_start();
// Connect to server and select databse.
$link=mysql_connect("localhost","root", "mcl")or die("cannot connect");
mysql_select_db("mcl",$link)or die("cannot select DB");
// username and password sent from form
$fname=$_POST['fname'];
$password=$_POST['password'];
// To protect MySQL injection (more detail about MySQL injection)
$fname = stripslashes($fname);
$password = stripslashes($password);
$fname = mysql_real_escape_string($fname);
$password = mysql_real_escape_string($password);
$sql="SELECT * FROM admin WHERE fname=('$_POST[fname]') and
password=('$_POST[password]')";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count>0){
$_SESSION['username'] = $_POST['fname'];
switch($_POST['fname']) {
case 'root': header("Location: dashboard.php"); break;
case 'accountant': header("Location: dash_accou.php"); break;
case 'secretary': header("Location: dash_secretary.php"); break;
}
exit;
}
else {
echo "<a href=index.php>Invald username or password <input name=Click here to reload
type=button disabled value= <<<Reload></a>";
}
?>
仪表板表单地址(dashboard.php)
<?php
session_start();
if(!isset($_SESSION['username']) || $_SESSION['username'] != 'root') {
header('Location: index.php');
exit;
}
?>
退出表单
<?php
session_destroy(); //destroy the session
header("location:index.php");
exit();
?>
我的目的是保护试图绕过系统的用户,我希望当用户复制Url并粘贴到页面的地址栏时,他/她将被定向到index.php页面,但我不知道为什么当我登录和复制地址(dashboard.php)然后注销并粘贴地址,在没有登录的情况下再次打开它。
任何帮助
答案 0 :(得分:0)
来自PHP-manual:
为了完全终止会话,要将用户注销,还必须取消设置会话ID。如果使用cookie来传播会话ID(默认行为),则必须删除会话cookie。 setcookie()可以用于此。
所以你还需要删除cookie。代码(可复制粘贴)可以在手册中找到。