注册表单不执行所有代码

时间:2013-11-05 01:35:08

标签: php mysql

我是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>

2 个答案:

答案 0 :(得分: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等”替换为表格中字段的名称)

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

希望它适合你

答案 1 :(得分:0)

ONE ”关于它为什么不起作用的原因是你没有告诉{strong>“WHAT”到INSERT INTO

例如,假设您的数据库列名为:

  

id - getuser - getpass - getemail - column_for_0 - code - date

您需要执行以下操作:

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

我几乎必须注意您的代码是 open to injection MySQL_ is deprecated因此强烈建议现在使用MySQLi_和/或 {{ 3}}

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

我还必须另外注意,使用MD5存储密码不再被视为安全。