php登录代码问题

0 html php authentication

我正在使用此代码进行登录,但是当我输入用户名和密码时,它只会加载页面并再次显示登录页面.为什么会这样?

<?php
    session_start();
    if(!isset($_POST['username']) || !isset($_POST['password']) || empty($_POST['username']) || empty($_POST['password']))
    {
?>
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Welcome to yachts database &nbsp;&nbsp;&nbsp;</title>
        <script type="text/javascript">
        function validate()
        {
            var username=document.getElementById("username").value;
            var password=document.getElementById("password").value;
            if(username.length==0)
            {
                alert("Please enter your user name");
                document.getElementById("username").focus();
                document.getElementById("username").select();
                return false;
            }
            if(password.length==0)
            {
                alert("Please enter your password");
                document.getElementById("password").focus();
                document.getElementById("password").select();
                return false;
            }
            submitOK="false";
        }
        </script>
        <?php
            include("styles.txt");
        ?>
        </head>
        <body onLoad="self.focus();document.login.username.focus()">
        <br><br><br><br><br><br><br>
        <center><font size=5 color=blue><b>University of ....... </b></font></center>
        <center><font size=5 color=blue><b>Yachts Database Project</b></font></center>
        <form name="login" method="post" action="<?php $_SERVER['PHP_SELF'];?>" onSubmit="return validate()">
        <table width="350" border="1" align="center" cellpadding=0 cellspacing=0  bgcolor=#ffffff bordercolor=#ffffff>
        <tr>
            <th colspan=2 height=30 bgcolor=#050E8C><font size=4 color=#ffffff>Please, enter user name and password</font></th>
        </tr>
        <tr>
            <th bgcolor=#E0E0FF><font size=4 color=#2020ff>User name</font></th>
            <td bgcolor=#E0E0FF align=center><input type="text" name="username" id="username" size="30"></td>
        </tr>
        <tr>
            <th bgcolor=#E0E0FF><font size=4 color=#2020ff>Password</font></th>
            <td bgcolor=#E0E0FF align=center><input type="password" name=" password" id="password" size="30"></td>
        </tr>
        <tr>
            <td bgcolor=#E0E0FF colspan=2 align=right><input type="submit" name="login" value="&nbsp;&nbsp;Login&nbsp;&nbsp;">&nbsp;&nbsp;<input type="reset" name="reset" value="&nbsp;&nbsp;Reset&nbsp;&nbsp;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=register.php class=links>Register</a>&nbsp;&nbsp;&nbsp;&nbsp;</td>
        </tr>
        </table>
        </form>
        </body>
        </html>
<?php
    }
    else
    {
        $connect= mysql_connect("localhost","root") or die ("Sorry, Can not connect to database");
        mysql_select_db("login") or die (mysql_error());
        $username1=$_POST['username'];
        $password1=$_POST['password'];
        if($username1 && $password1)
        {
            $query="SELECT * FROM users WHERE username='$username1' AND password='$password1'";
            $result=mysql_query($query,$connect) or die(mysql_error());
            $rowcount=mysql_num_rows($result);
        }
        if($rowcount)
        {
            //$_SESSION['username']=$rowcount['username'];
            $user1=$username1;
            $pass1=$password1;
            session_register("user1");
            session_register("pass1");
            header("location: main.php");
        }
        else
        {
?>
            <html>
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>Welcome to yachts database &nbsp;&nbsp;&nbsp;</title>
            <script type="text/javascript">
            function validate()
            {
                var username=document.getElementById("username").value;
                var password=document.getElementById("password").value;
                if(username.length==0)
                {
                    alert("Please enter your user name");
                    document.getElementById("username").focus();
                    document.getElementById("username").select();
                    return false;
                }
                if(password.length==0)
                {
                    alert("Please enter your password");
                    document.getElementById("password").focus();
                    document.getElementById("password").select();
                    return false;
                }
                submitOK="false";
            }
            </script>
            <?php
                include("styles.txt");
            ?>
            </head>
            <body  onLoad="self.focus();document.login.username.focus()">
            <br><br><br><br><br><br><br>
            <center><font size=5 color=blue><b>University of ....... </b></font></center>
            <center><font size=5 color=blue><b>Yachts Database Project</b></font></center>
            <form name="login"  method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" onSubmit="return validate()">
            <table width="350" border="1" align="center" cellpadding=0 cellspacing=0  bgcolor=#ffffff bordercolor=#ffffff>
            <tr>
                <th colspan=2 height=30 bgcolor=#050E8C><font size=4 color=#ffffff>Please, enter user name and password</font></th>
            </tr>
            <tr>
                <th bgcolor=#E0E0FF><font size=4 color=#2020ff>User name</font></th>
                <td bgcolor=#E0E0FF align=center><input type="text" name="username" id="username" size="30"></td>
            </tr>
            <tr>
                <th bgcolor=#E0E0FF><font size=4 color=#2020ff>Password</font></th>
                <td bgcolor=#E0E0FF align=center><input type="password" name=" password" id="password" size="30"></td>
            </tr>
            <tr>
                <td bgcolor=#E0E0FF colspan=2 height=30 align=right><input type="submit" name="login" value="&nbsp;&nbsp;Login&nbsp;&nbsp;">&nbsp;&nbsp;<input type="reset" name="reset" value="&nbsp;&nbsp;Reset&nbsp;&nbsp;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=register.php class=links>Register</a>&nbsp;&nbsp;&nbsp;&nbsp;</td>
            </tr>
            <tr>
                <td bgcolor=#E0E0FF colspan=2 height=30 align=center><font size=3 color=#ff0000>User name or Password wrong!</font></td>
            </tr>
            </table>
            </form>
            </body>
            </html>
            <?php
        }
    }
?>
Run Code Online (Sandbox Code Playgroud)

Gre*_*reg 12

关于该代码,你应该改变一些事情......

  1. 你并不需要做的!isset()empty():只要empty()会做
  2. 您不应该复制登录页面的HTML - 要么将其放在变量中,要么include()使用PHP将错误消息放在那里.
  3. 你正在使用弃用的HTML <center><font>- 用CSS替换它们
  4. 在javascript中,submitOK="false";应该是return true;
  5. name=" password"应该是name="password"(属性中的空格应该被修剪,但我不想依赖它.
  6. 你将原始输入放入mysql查询中,让自己容易受到sql注入攻击.使用mysql_escape_string()
  7. 不要使用session_register,请$_SESSION改用.
  8. 标题位置应该是一个规范的URL(从http://开始),尽管我所知道的每个浏览器都接受一个相对的URL.
  9. 可用性 - 取出重置按钮.