为什么用户仍然绕过系统

时间:2013-12-01 12:53:33

标签: php login

我有这个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)然后注销并粘贴地址,在没有登录的情况下再次打开它。

任何帮助

1 个答案:

答案 0 :(得分:0)

来自PHP-manual

  

为了完全终止会话,要将用户注销,还必须取消设置会话ID。如果使用cookie来传播会话ID(默认行为),则必须删除会话cookie。 setcookie()可以用于此。

所以你还需要删除cookie。代码(可复制粘贴)可以在手册中找到。