解决方案 »

  1.   

    第7行的判断,$_SESSION['Adm']==1 
    第25行的赋值 $_SESSION["Adm"]=1;流程是
    先判断$_SESSION['Adm'] 是否等于1,如果是则跳到admin.php,表示login过的直接跳到admin.php
    如果$_SESSION['Adm']不等于1,则判断输入的username与pass,与db中的表比较,如通过验证。则将$_SESSION['Adm']赋值为1
    如果username与pass没有通过验证,显示错误信息。如果你说密码失效的原因,
    $password=$info[pass]; 改为 $password=$info['pass'];
    然后echo $password.' '.$pass; 看看是否没有获取到$pass,还是没有查找到$password。
      

  2.   

    这个是ChkAdmLogin.php,本身是logo.php->ChkAdmLogin.php->admin.php,现在输入正确密码能进入后台管理,但是现在直接在网址打这个链接,可以绕过login.php输密码直接进去后台,下面是admin.php的头部。<?php
    session_start();
    // &#x5305;&#x542B;&#x6570;&#x636E;&#x5E93;&#x8FDE;&#x63A5;&#x6587;&#x4EF6;&#x548C;&#x5934;&#x6587;&#x4EF6;
    require ('dbconnect.php');
    include ('security.php');
    if($_SESSION['Adm']==1) {
       echo "<p align=center>";
       echo "<font color=#FF0000 size=5><strong><big>";
       echo "&#x7BA1;&#x7406;&#x5458;&#x8FD8;&#x6CA1;&#x6709;&#x767B;&#x5F55;,&#x8BF7;<a href='login.php'>&#x767B;&#x5F55;</a>!";
       echo "</big></strong></font></p>";
       exit();
    }?>
      

  3.   

    你打开 php 的错误显示功能就可看到问题所在
    $nickname=$_POST['username'];
    $pass=$_POST['password'];
    当直接 url 进入时,这两个值都为空(可以看到使用了未定义变量的警告)$sql="select pass from admin where name='$nickname'";
    $result=mysql_query($sql,$conn);
    $info=mysql_fetch_array($result);
    于是查询结果为空
    $password=$info[pass];
    自然 $password 也为空
    // &#x68C0;&#x67E5;&#x7BA1;&#x7406;&#x5458;&#x5E10;&#x53F7;&#x548C;&#x5BC6;&#x7801;&#x662F;&#x5426;&#x6B63;&#x786E;,
    if($pass==$password) {
    所以 空等于空 成立解决的办法是:将 13 行开始的代码放在 if($_SERVER['REQUEST_METHOD'] == "POST") 分支中