-1

我是 PHP 新手,所以我很难找到我的错误,而这个我根本找不到。我的代码根本没有在提交时注册用户,我不知道为什么它不执行最后一点代码。- 当涉及到“插入”功能时它会停止。

有什么建议么?

<?php 
session_start();
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Member system version 1.0</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<header>
    <h1>Simpelt login system</h1>
</header>
<nav>
    <ul>
        <li><a href="./">Forside</a></li>
        <li><a href="login.php">Log ind</a></li>
        <li><a href="register.php">Registrer dig</a></li>
        <li><a href="memberpage.php">Medlemsside</a></li>
        <li><a href="contact.php">Kontakt</a></li>
    </ul>
</nav>
<section>
    <aside>
        <ul>
            <li><h3>Lille test overskrift</h3></li>
            <li></li>
        </ul>
    </aside>
    <article>
        <?php
            if($_POST['registerbtn']) {
                $getuser = $_POST['user'];
                $getemail = $_POST['email'];
                $getpass = $_POST['pass'];
                $getconfirmpass = $_POST['confirmpass'];

                if ($getuser){
                    if ($getemail) {
                        if ($getpass) {
                            if ($getconfirmpass) {
                                if ($getpass === $getconfirmpass) {
                                    if ((strlen($getemail) >= 7) && (strstr($getemail, "@")) && (strstr($getemail, "."))) {
                                        require("connect.php");

                                        $query = mysql_query("SELECT * FROM users WHERE username='$getuser'");
                                        $numrows = mysql_num_rows($query);
                                        if ($numrows == 0) {
                                            $query = mysql_query("SELECT * FROM users WHERE email='$getemail'");
                                            $numrows = mysql_num_rows($query);
                                            if ($numrows == 0) {
                                                $getpass = md5(md5("Jasdl".$getpass."SDa823k"));

                                                $date = date("F, d Y");
                                                $code = md5(rand());

                                                mysql_query("INSERT INTO users VALUES(
                                                    '', '$getuser', '$getpass', '$getemail', '0', '$code', '$date'  
                                                )");

                                                $query = mysql_query("SELECT * FROM users WHERE username='$getuser'");
                                                $numrows = mysql_num_rows($query);
                                                if ($numrows == 1) {

                                                    $site = "http://localhost:8888/php-projekter/login-projekt";
                                                    $webmaster = "Kasper Legarth <kaspersunivers@gmail.com>";
                                                    $headers = "From: $webmaster";
                                                    $subject = "Aktivering af din konto";
                                                    $message = "Tak fordi du oprettede en konto, for at aktivere din konto skal du klikke på nedstående link.\n";
                                                    $message .= "$site/activate.php?user=$getuser&code=$code\n";
                                                    $message .= "Du skal aktivere din konto for at kunne logge ind.";

                                                    if (mail($getemail, $subject, $message, $headers)) {
                                                        $confirmpass_error = "DET VIRKER!!!!";
                                                        $getuser = "";
                                                        $getemail = "";
                                                    }
                                                    else
                                                        $confirmpass_error = "Der skete en fejl, din mail blev ikke sendt";
                                                }
                                                else
                                                    $confirmpass_error = "Der skete en fejl, din bruger blev ikke oprettet";
                                            }
                                            else
                                                $email_error = "Den email er allerede i brug";  
                                        }
                                        else
                                            $user_error = "Det brugernavn er desværre allerede taget";

                                        mysql_close();
                                    }
                                    else
                                        $email_error = "Du skal bruge en gyldig email";
                                }
                                else
                                    $confirmpass_error = "Dine adgangskoder er ikke ens";
                            }
                            else
                                $confirmpass_error = "Du skal skrive din kode igen";
                        }
                        else
                            $pass_error = "Du skal vælge en adgangskode";

                    }
                    else
                        $email_error = "Du skal indstate din email";
                }
                else
                    $user_error = "Du skal indtaste et brugernavn";

            }

        $form = "<form action='register.php' method='post'>
            <h2>Opret din egen konto</h2>
            <p>Ønsket brugernavn:
            <br><input type='text' name='user' value='$getuser' placeholder='Brugernavn' />
            <br><small>$user_error</small></p>
            <p>Din email adresse:
            <br><input type='text' name='email' value='$getemail' placeholder='Email adresse' />
            <br><small>$email_error</small></p>
            <p>Vælg en adgangskode:
            <br><input type='password' name='pass' value='' placeholder='Adgangskode' />
            <br><small>$pass_error</small></p>
            <p>Gentag adgangskode:
            <br><input type='password' name='confirmpass' value='' placeholder='Gentag' />
            <br><small>$confirmpass_error</small></p>
            <p><input type='submit' name='registerbtn' value='Registrer dig' /></p>
        </form>";

        echo $form;

        ?>
    </article>
</section>
<footer>
    Copyright &copy; 2013 - Design: <a href="http://kaspersunivers.dk">Kasper Legarth</a>
</footer>
 </body>
 </html>
4

2 回答 2

0

您的插入语句中有错误。

    mysql_query("INSERT INTO users VALUES('', '$getuser', '$getpass', '$getemail', '0', '$code', '$date')");

您正在设置要插入数据库的值,但不是这些值所在的字段,试试这个

mysql_query("INSERT INTO users (field1, field2, field3, field4, field5, field6, field7) VALUES ('','$getuser','$getpass','$getemail','0','$code','$date')");

(将“field1, field2, etc”替换为您在表格中的字段名称)

此外,您在第一个字段上插入了一个空值,不确定它是否是故意的,但也要检查一下。

希望这对你有用

于 2013-11-05T02:04:38.453 回答
0

一个”为什么它不起作用的原因是你没有告诉它“什么INSERT INTO

例如并假设您的数据库列被命名为:

id - getuser - getpass - getemail - column_for_0 - 代码 - 日期

您需要执行以下操作:

mysql_query("INSERT INTO users (id, getuser, getpass, getemail, column_for_0, code, date) 
VALUES('', '$getuser', '$getpass', '$getemail', '0', '$code', '$date' )");

我几乎必须注意到您的代码对注入是开放的并且MySQL_已被弃用,因此强烈建议现在使用MySQLi_和/或PDO

您还需要确保它session_start();位于所有链接或包含的文件中。

我还必须注意,使用存储密码MD5不再被认为是安全的。

于 2013-11-05T02:09:17.163 回答