登录脚本“你错误来到这里,不是吗?”没有出现

时间:2010-12-23 16:28:15

标签: php mysql

  

可能重复:
  Login script problem

如果我输入loginchk.php的URL我应该得到“你错误来到这里,不是吗?”但我得到“你没有填写必填字段”。请帮忙:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en" >
<head>
    <title>Login | JM Today </title>
    <link href="Mainstyles.css" type="text/css" rel="stylesheet" />
</head>
<body>
<div class="container">
    <?php include("header.php"); ?>
    <?php include("navbar.php"); ?>
    <?php include("cleanquery.php") ?>  

    <div id="wrap">

       <?php
       ini_set('display_errors', 'On');
        error_reporting(E_ALL | E_STRICT);

        $conn=mysql_connect("localhost", "***", "***") or die(mysql_error());
        mysql_select_db('jmtdy', $conn) or die(mysql_error());

        if(( strlen($_POST['user']) >0) && (strlen($_POST['pass']) >0) && isset($_POST['sublogin'])) {

            checklogin($_POST['user'], $_POST['pass']);

        }
        elseif(( strlen($_POST['user']) == 0) || (strlen($_POST['pass']) == 0) && isset($_POST['sublogin'])){

            echo '<p class="statusmsg">You didn\'t fill in the required fields.</p><br/><input type="button" value="Retry" onClick="location.href='."'login.php'\">";
            return;
        }
        else{

            echo '<p class="statusmsg">You came here by mistake, didn\'t you?</p><br/><input type="button" value="Retry" onClick="location.href='."'login.php'\">";
            return;

        }   

      function checklogin($username, $password){

        $username=mysql_real_escape_string($username);
        $password=mysql_real_escape_string($password);

            $result=mysql_query("select * from users where username = '$username'");
            if($result != false){

                $dbArray=mysql_fetch_array($result);
                $dbArray['password']=mysql_real_escape_string($dbArray['password']);
                $dbArray['username']=mysql_real_escape_string($dbArray['username']);

                if(($dbArray['password'] != $password ) || ($dbArray['username'] != $username)){
                    echo '<p class="statusmsg">The username or password you entered is incorrect. Please try again.</p><br/><input type="button" value="Retry" onClick="location.href='."'login.php'\">";
                    return;
                }
                $_SESSION['username']=$username;
                $_SESSION['password']=$password;

                if(isset($_POST['remember'])){
                    setcookie("jmuser",$_SESSION['username'],time()+60*60*24*356);  
                    setcookie("jmpass",$_SESSION['username'],time()+60*60*24*356);
                }
            }

            else{
                echo'<p class="statusmsg">  The username or password you entered is incorrect. Please try again.</p><br/>input type="button" value="Retry" onClick="location.href='."'login.php'\">";
                return;
            }
        }           


      ?>
        </div>
        <br/>
        <br/>
<?php include("footer.php") ?>
</div>
</body>

</html>

2 个答案:

答案 0 :(得分:3)

strlen($_POST['user']) == 0
如果未设置true

评估为$_POST,则应将其替换为

isset($_POST['user']) && empty($_POST['user'])

答案 1 :(得分:1)

检查此行的问题: elseif(( strlen($_POST['user']) == 0) || (strlen($_POST['pass']) == 0) && isset($_POST['sublogin'])){ AND(&amp;&amp;)在OR(||)之前进行评估,因此表达式的计算结果为true。请查看http://php.net/manual/en/language.operators.precedence.php以供参考。

您实际需要的是用户/传递部分周围的另一组括号: elseif(( ( strlen($_POST['user']) == 0) || (strlen($_POST['pass']) == 0) ) && isset($_POST['sublogin'])){

或者为什么不检查$ _POST ['sublogin']是否在设置用户/传递数据之前设置?