2013-11-05 22 views
-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 <[email protected]>"; 
                $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> 
+0

你面臨什麼問題?不要只顯示代碼,詳細說明您的問題,以便我們可以幫助您。此外,還有幾種方法可以使您的代碼更具可讀性。不告訴我們,mysql函數輸出了什麼? –

+1

INSERT INTO users >>>(?,?,?,?,?)<<< VALUES'? '$ ????? =「什麼?」;'[**'INSERT' **](http://beginner-sql-tutorial.com/sql-insert-statement.htm) - 你沒有告訴要插入的東西。 –

+1

這段代碼有太多的錯誤,不可能從任何一件事情開始。如果你肯定是你的mysql語句,你可以執行mysql_query(「QUERY HERE」)或死(mysql_error());與錯誤的原因死去... – skrilled

回答

0

ONE」是,你不告訴它「什麼」INSERT INTO

例如假設你DB列被命名爲:

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')"); 

我幾乎要注意的是你的代碼是open to injectionMySQL_ is deprecated因此,強烈建議現在使用MySQLi_和/或PDO

您還需要確保session_start();位於所有鏈接或包含的文件中。

我還必須提出另一個說明,即使用MD5存儲密碼已不再安全。

+0

謝謝,這工作:) – Legarndary

+0

@Legarndary不客氣。很高興我能幫上忙。 –

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')"); 

(替換「字段1,字段2,等等」爲名稱您的字段在表格上)

另外,您在第一個字段中插入一個空值,不確定它是否有意使用,但也檢查該字段。

希望工程的原因,爲什麼它不爲你工作