PHP登录/注册错误

时间:2013-03-07 19:24:21

标签: php login-script

好的,我的大学讲师已经要求我使用PHP创建一个登录系统。现在我读到有关PHP的信息,我不熟悉它。我使用了这段代码并自己编写了一些代码。

<?php

session_start();

$username = $_POST ['username'];
$password = $_POST ['password'];

if ($username&&$password) {
    $connect = mysql_connect("localhost","root","") or die("Couldn't Connect");
    mysql_select_db("phplogin") or die ("Couldn't find Database");
    $query = mysql_query("SELECT * FROM users WHERE username='$username'")'
     $numrows = mysql_num_rows ($query);
if ($numrows!=0) {

    while ($row = mysql_fetch_assoc()) {
        $dbusername = $row['username'];
        $dbpassword = $row['password'];
    }

    if ( ($username==$dbusername) && ($password==$dbpassword) ) {
        echo "you are in,<a href ='member.php'> Click here</a> to enter member page";
        $_SESSION['username']=$dbusername;
    } else {
        echo "Incorrect password";
} else {
    die ("That user does not exist");
}
echo $numrows;

} else {
    die("Please enter a username and password")
}

&GT;

这是我正在使用的Index.php。 我的登录页面很简单,有2个字段:用户名和密码,带有登录和注册按钮。 在我从数据库中输入的字段中输入详细信息后,它会在页面的顶部显示。

  

点击此处进入会员页面“; $ _SESSION ['username'] = $ dbusername;}否则回显”密码不正确“;}否则死掉(”该用户不存在“); echo $ numrows;}否则死掉(“请输入用户名和密码”)?&gt;

我的注册页面也有问题,您必须填写4个字段:用户名,电子邮件,密码和确认密码,以及注册按钮以“注册”为用户。

<?php //Register process $submit = $_POST['submit'];
     

// form data $ name = strip_tags($ _POST ['name']); $ username =   strip_tags($ _POST ['username']); $ password = md5(strip_tags   ($ _POST [ '密码'])); $ confirmpassword = strip_tags   ($ _POST [ 'confirmpassword']); $ date = date(“Y-m-d”);

     

if($ submit){

     

if($ username&amp;&amp; $ password&amp;&amp; $ confirmpassword){//加密密码     $ password = md5($ password); $ confirmpassword = md5   ($ confirmpassword);             if($ password == $ confirmpassword){//检查字符长度if(strlen($ username)&gt; 25 || strlen($ name)&gt; 25){echo   “用户名或名称的长度太长”; } else {             //检查密码长度                 if(strlen($ password)&gt; 20 || strlen($ password)&lt; 5)                 {                 echo“密码必须在5到20个字符之间”;                 }                 其他                 {                 //注册用户                 } else} echo“你的密码不匹配!”;

      }           else        echo "Please fill in <b>all</b> feidls!"; } ?>
     

     

                                 你的全名:                                                                                                               选择一个用户名:                                                                                                               选择一个密码:                                                                                                               确认你的密码:                                                                                

     

然而,即使在将详细信息输入到字段之前,也会在页面顶部显示大量代码。

  

25 || strlen($ name)&gt; 25){echo“用户名或名称的长度太长”; } else {//检查密码长度if(strlen($ password)&gt; 20 || strlen($ password)&lt; 5){echo“密码必须在5到20个字符之间”; } else {//注册用户}}}否则回显“你的密码不匹配!”; } else echo“请填写所有的feidls!”; }?&gt;

有人可以告诉我这里做错了吗?我使用Xampp来创建我的数据库。

2 个答案:

答案 0 :(得分:2)

您需要在单独的行上提供内联注释和可执行代码。

你有这个:

//check character length            if (strlen ($username) >25 || strlen ...

它正在评论if声明。它必须是这样的:

//check character length            
if (strlen ($username) >25 || strlen ...

你这样做了几次://Register process $submit = $_POST['submit']; - $ submit永远不会被定义,因为它在评论中。

你走了。我的心情很好。我甚至添加了结束</td><body>标记,因为它们也丢失了:

<?php

//Register process 
$submit = $_POST['submit'];

//form data 
$name            = strip_tags($_POST['name']);
$username        = strip_tags($_POST['username']);
$password        = md5(strip_tags($_POST['password']));
$confirmpassword = strip_tags($_POST['confirmpassword']);
$date            = date("Y-m-d");

if ($submit) {

    if ($username && $password && $confirmpassword) { //encrypt password
        $password        = md5($password);
        $confirmpassword = md5($confirmpassword);
        if ($password == $confirmpassword) {
            //check character length            
            if (strlen($username) > 25 || strlen($name) > 25) {
                echo  "length of Username or Name is too long";
            } else {
                //checks password length
                if (strlen($password) > 20 || strlen($password) < 5) {
                    echo "password must be between 5 and 20 characters";
                } else {
                    //registers user
                }
            }
        } else {
            echo "Your passwords to not match!";
        }

    } else {
        echo "Please fill in <b>all</b> feidls!";
    }
} // end if submit 

?>

<html>
    <body>
        <form action='register.php' method='POST'>
            <table>
                <tr>
                    <td> Your full Name:</td>
                    <td><input type='text' name='name'></td>
                </tr>
                <tr>
                    <td> Choose a Username:</td>
                    <td><input type='text' name='username'></td>
                </tr>
                <tr>
                    <td> Choose a Password:</td>
                    <td><input type='password' name='password'></td>
                </tr>
                <tr>
                    <td> Confirm your Password:</td>
                    <td><input type='password' name='confirmpassword'></td>
                </tr>
            </table>
            <p><input type="button" onclick="window.location.href='member.php'" value="Register"></p>
        </form>
    </body>
</html>

答案 1 :(得分:0)

实际上看起来你要求它重定向到form.html但已经向浏览器输出了一些信息。这将导致错误。在输出任何内容之前,您需要尝试重定向。因此,在输出之前,你真的可能应该调用有效。

相关问题