<?
$conn = mysql_connect("localhost","root","");
$selectdb = mysql_select_db("test",$conn);
mysql_query("set names 'gbk'");//使用GBK编码
//载入数据库if (isset($_COOKIE['cookie'])!=='on'){?>
 <form action="login.php" method="POST" onsubmit="return Login()" name="admin">
用户名:<input type="text" name="us" /><br />
密 &nbsp码:<input type="password" name="pw" / size="21"><br />
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type="submit" name="enter" value="登陆" />
</form> <script type="text/javascript">
function Login()
{
if (admin.us.value="")
{
alert ("请输入用户名");
admin.us.focus();
return false;
}
if (admin.pw.value="")
{
alert ("请输入密码");
admin.ps.focus();
return false;
}
}
</script>
<?
}if (isset($_POST['enter'])){
if (isset($_POST['us'])=='admin'){
$pw = md5(isset($_POST['pw']));
if ($pw == '21232f297a57a5a743894a0e4a801fc3'){
setcookie("cookie","on");

} }
}if ($_COOKIE['cookie']=='on'){
echo $_POST['us'] . ",您已登录:<a href='?login=out'>下线</a> <a href='?login=cleardb'>清空留言</a>";
if (isset($_GET['login'])=='cleardb'){
$deletedb = "DELETE FROM `message`";
mysql_query($deletedb);
}
if (isset($_GET['login'])=='out'){
$_COOKIE['cookie'] = 'off';

}
}?>

解决方案 »

  1.   

    isset($_COOKIE['cookie'])!=='on'isset返回的是bool值,不可能严格等于'on'。
      

  2.   

    或者你可能想写成这样if(isset($_COOKIE['cookie']) AND $_COOKIE['cookie']=='on')
      

  3.   

    我不知道isset是查看变量或数组是否被赋值的,我有时候一写变量或数组系统就提示出错,
    我把isset删除掉了 直接改成if ($_COOKIE['cookie']!=='on')这样也不好使啊,情况照常
      

  4.   

    <?
    $conn = mysql_connect("localhost","root","");
    $selectdb = mysql_select_db("test",$conn);
    mysql_query("set names 'gbk'");//使用GBK编码
    //载入数据库$login = false;if (isset($_COOKIE['cookie']) && $_COOKIE['cookie']=='on'){
        $login = true;
    } elseif (isset($_POST['enter'])){
        if (isset($_POST['us']) && $_POST['us']=='admin'){
            $pw = isset($_POST['pw']) ? md5($_POST['pw']) : '';
            if ($pw == '21232f297a57a5a743894a0e4a801fc3'){
                setcookie("cookie","on");
                $login = true;
            }
        }
    }if ($login){
        echo $_POST['us'] . ",您已登录:<a href='?login=out'>下线</a> <a href='?login=cleardb'>清空留言</a>";
        if (isset($_GET['login']) && $_GET['login'] =='cleardb'){
            $deletedb = "DELETE FROM `message`";
            mysql_query($deletedb);
        }
        if (isset($_GET['login']) && $_GET['login'] =='out'){
            setcookie("cookie","off");
        }
    } else {
    ?>
         <form action="login.php" method="POST" onsubmit="return Login()" name="admin">
            用户名:<input type="text" name="us" /><br />
            密 &nbsp码:<input type="password" name="pw" / size="21"><br />
            &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type="submit" name="enter" value="登陆" />
        </form>    <script type="text/javascript">
            function Login()
            {
                if (admin.us.value="")
                {
                    alert ("请输入用户名");
                    admin.us.focus();
                    return false;
                }
                if (admin.pw.value="")
                {
                    alert ("请输入密码");
                    admin.ps.focus();
                    return false;
                }
            }
        </script>
    <?
    }
    ?>未经测试,你试试看
      

  5.   

    咳咳, 楼主需要看一下关于cookie是如何设置的文章.第一次提交的时候,表单发送到服务器,服务器返回的页面带cookie头, 
    这时浏览器收到cookie才会在客户端设置cookie, 
    然后下一次提交到服务器的请求才会含cookie值, 服务端才能读到$_COOKIE的值一个简单的实例: 假设存为test.php
    <?php
    setcookie('test', $_POST['t']);
    ?>
    <div>--<?=$_COOKIE['test'] ?>--</div>
    <form method="post">
    <input type="text" name="t" value="t1" /><br/>
    <input type="submit" name="s" value="submit" />
    </form>清除浏览器cookie后, http://localhost/test.php
    点一次submit,注意cookie仍为0, 
    再点一次, 这次才为 --t1--
    所以,你对提交表单的判断必须加上$_POST的判断才能对第一次提交正确
      

  6.   

    $_POST['pw'] = 'abc';
    echo  md5(isset($_POST['pw'])); //out: c4ca4238a0b923820dcc509a6f75849b
    等价于 md5(1)
    绝不会是 21232f297a57a5a743894a0e4a801fc3
      

  7.   

    <?
    $conn = mysql_connect("localhost","root","");
    $selectdb = mysql_select_db("test",$conn);
    mysql_query("set names 'gbk'");//使用GBK编码
    //载入数据库if (isset($_POST['enter'])) {
    if ($_POST['us']=='admin') {
    $pw = md5($_POST['pw']);
    if ($pw == md5('admin')) {
    setcookie("cookie","on");
      echo "登录成功"; 
    exit; 
    }
    }
    die($_POST['us']."登录失败!");
    } else if ($_COOKIE['cookie']=='on') {
        echo $_POST['us'] . ",您已登录:<a href='?login=out'>下线</a> <a href='?login=cleardb'>清空留言</a>";
        if (isset($_GET['login'])=='cleardb'){
            $deletedb = "DELETE FROM `message`";
            mysql_query($deletedb);
        }
        if (isset($_GET['login'])=='out'){
            $_COOKIE['cookie'] = 'off';
            
        }
    } else {?>
         <form action="login.php" method="POST" onsubmit="return Login()" name="admin">
            用户名:<input type="text" name="us" value="" /><br />
            密 &nbsp码:<input type="password" name="pw" size="21" value=""><br />
            <input type="submit" name="enter" value="登陆" />
        </form>    <script type="text/javascript">
            function Login()
            {
                if (admin.us.value=="")
                {
                    alert ("请输入用户名");
                    admin.us.focus();
                    return false;
                }
                if (admin.pw.value=="")
                {
                    alert ("请输入密码");
                    admin.ps.focus();
                    return false;
                }
            }
        </script>
    <?
    }
    ?>
    以上代码我测试过,没问题,对你的代码改动的也很少。你代码的javascript部分注意:是if(admin.us.value=="")而不是if(admin.us.value=""),否则php得不到$_POST['us']和$_POST['pw']。
      

  8.   

    上面的代码没试下线,下线部分应改为
    } else if ($_COOKIE['cookie']=='on') {
        if ($_GET['login']=='cleardb'){
            $deletedb = "DELETE FROM `message`";
            mysql_query($deletedb);
        }
        if ($_GET['login']=='out'){
            setcookie("cookie","off");
            die("已下线");
        }
        echo $_POST['us'] . ",您已登录:<a href='?login=out'>下线</a> <a href='?login=cleardb'>清空留言</a>";
    } else {
      

  9.   

    11楼正解,我怎么又犯这个毛病,这段代码的问题就出在JS代码的=里,我给写赋值了,JS代码里的“=”玩了我一天一夜我却浑然不觉,前天我就是把==写成=了,耽误了我一天,我怎么看都没看出毛病,汗,影响 我学习进度。
    我决定去纹身,在我脸上纹俩等于号!!!!!眼大漏神
      

  10.   

    对了 顺便问一下,我想在登录后直接提示登录的用户登录成功,用$_POST['us']取是不是不对啊
     echo $_POST['us'] . ",您已登录:<a href='?login=out'>下线</a> <a href='?login=cleardb'>清空留言</a>";我提交后有您已登录,但前面没显示出来用户名
      

  11.   

    因为$_POST['us']是在登录时提交的页面表单变量,而在检查用户是否已登录时,$_POST['us']是不存在的。
      

  12.   

    这个变量'us'在登录成功后,应保存在$_SESSION里,以便以后的使用。
      

  13.   

    我听说过session,但不知道有啥用 我以为这些都是实现在COOKIE中的呢,不过看设置COOKIE的属性里似乎不可以实现这点哈 谢了啊jnthts