-1

好的,我的大学讲师要求我使用 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")
}

?>

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

点击此处进入会员页面"; $_SESSION['username']=$dbusername; } else echo "密码错误"; } else die ("该用户不存在"); echo $numrows; } else die("请输入用户名和密码") ?>

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

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

//表单数据 $name = strip_tags ($_POST['name']); $username = strip_tags ($_POST['username']); $password = md5 (strip_tags ($_POST['password'])); $confirmpassword = strip_tags ($_POST['confirmpassword']); $date = date("Ymd");

如果($提交){

if ($username&&$password&&$confirmpassword) { //加密密码 $password = md5 ($password); $确认密码 = md5 ($确认密码); if ($password==$confirmpassword) { //检查字符长度 if (strlen ($username) >25 || strlen ($name) >25) { echo "length of Username or Name is too long"; } else { //检查密码长度 if (strlen ($password) >20||strlen($password)<5) { echo "password must be between 5 and 20 characters"; } else { //注册用户 } } } else echo "你的密码不匹配!";

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

您的全名: 选择用户名: 选择密码: 确认您的密码:

但是,即使在向字段输入详细信息之前,大量代码也会出现在页面顶部。

25 || strlen ($name) >25) { echo "用户名或名称的长度太长"; } else { //检查密码长度 if (strlen ($password) >20||strlen($password)<5) { echo "password must be between 5 and 20 characters"; } else { //注册用户 } } } else echo "你的密码不匹配!"; } else echo "请填写所有字段!"; } ?>

有人可以告诉我我在这里做错了什么吗?我使用 Xampp 来制作我的数据库。

4

2 回答 2

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>s 和一个<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>
于 2013-03-07T19:30:56.597 回答
0

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

于 2013-10-07T10:31:00.610 回答