如何在不登录的情况下保护用户访问表单


How to protect user access form without login

我有这个脚本,如果用户没有登录,它会引导他/她进入登录表单。但问题是,当我登录并刷新页面时,它会带我回到登录页面,当我登陆并尝试复制链接和粘贴时,它也会带我回登录页面,而它假设是在注销后。

这里是登录脚本

 <?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'];
   $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>";
   }
    ?>

这里的脚本,指导用户从登录

        <?php
        session_start();
        if(!isset($_SESSION['username']) ||  $_SESSION['username'] != 'root') {
        header('Location: index.php');
       exit;
        }
              ?>
   <?php
   unset($_SESSION['username']);
  ?>

如有任何帮助,请感谢您的

if(!isset($_SESSION['username']) ||  $_SESSION['username'] != 'root') {

注意你的第二条。。这基本上意味着,如果用户名不是root,它无论如何都会将他重定向到登录页面,比如说,如果用户"Jack"登录……他仍然会被重定向到登录页,因为他的用户名不是"root"

此外,请注意mysql_*函数已被弃用,您应该使用Mysqli或PDO。您还应该确保通过使用准备好的语句来验证和净化您的输入,使其免受攻击。这对保证网站安全非常重要。