2012-10-26 44 views
0

我有一個完全顯示的成員註冊表單,直到我添加了php。一旦php代碼被添加,表單完全消失。我已經嘗試了一切,但我認爲在這個階段需要一套全新的眼睛。 任何幫助將不勝感激。乾杯。php表單消失

<?php 

if ($_POST['registerbtn']) { 
    $getuser = $_POST['user']; 
    $getemail = $_POST['email']; 
    $getpass = $_POST['pass']; 
    $getretypepass = $_POST['retypepass']; 

    if ($getuser) { 
     if ($getemail) { 
      if($getpass) { 
       if ($getretypepass) { 
        if ($getpass === $getretypepass) { 
         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){ 

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

             mysql_query("INSERT INTO users VALUES (
              '', '$getuser', '$getpassword', '$getemail', '0', '$getcode', '$getdate' 
             )"); 



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

              $site ="http://localhost/member.php"; 
              $webmaster = "Bror Phren <[email protected]>"; 
              $headers = "From: $webmaster"; 
              $subject = "Activate your account"; 
              $message = "Thanks for registering. Click the link below to activate your account"; 
              $message .= "$site/activate.php?user=$getuser&code=$code\n"; 
              $message .= "You must activate your account t login."; 

              if (mail($getemail, $subject, $message, $headers)) { 
               $errormsg = "You have been registered. You must activate your account from the activation link sent to <b>$getemail</b> "; 
               $getuser = ""; 
               $getemail = ""; 
              } 
              else 
               $errormsg = "An error has occured. Your activation email was not sent"; 


             } 
             else 
              $errormsg = "An error has occured. Your account was not created.\n"; 


          } 
          else 
           $errormsg = "There is already a user with that email"; 

          } 
          else 
           $errormsg = "There is already a user with that username"; 

          mysql_close(); 


         } 
         else 
         $errormsg = "You must enter a valid email address to register."; 

       } 
       else 
       $errormsg = "You must retype your password to register."; 

      } 
      else 
      $errormsg = "You must enter password to register."; 

     } 
     else 
      $errormsg = "You must enter email to register."; 

    } 
    else 
     $errormsg = "You must enter username to register."; 

}

$form = "<form action='./register.php' method='post'> 
<table> 

    <tr> 
    <td></td> 
    <td><font color='red'>$errormsg</font></td> 
    </tr> 
    <tr> 

    <td>Username:</td> 
    <td><input type='text' name='user' value='$getuser' /></td> 
    </tr> 

    <tr> 
    <td>Email:</td> 
    <td><input type='text' name='email' value='$getemail' /></td> 
    </tr> 

    <tr> 
    <td>Password:</td> 
    <td><input type='password' name='pass' value='' /></td> 
    </tr> 

     <tr> 
    <td>Retype:</td> 
    <td><input type='password' name='retypepass' value='' /></td> 
    </tr> 

     <tr> 
    <td>Retype:</td> 
    <td><input type='submit' name='registerbtn' value='Register' /></td> 
    </tr> 

    </table> 
</form>"; 

echo $form; 

} 

?> 
+3

歡迎堆棧溢出! [**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護,[棄用過程](http://j.mp/Rj2iVR)已經開始。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

+1

當你添加PHP時,你看到一個空白的白屏嗎?如果是這樣,那可能是一個致命錯誤,導致500內部服務器錯誤,請檢查錯誤日誌。 – MrCode

回答

0

編輯:由於阿蒙Toubman提到的,如果相關數據已經發布到網頁形式將只顯示。您需要將表單移到if語句之外。請參見下面的代碼:

<?php 

if ($_POST['registerbtn']) { 
    $getuser = $_POST['user']; 
    $getemail = $_POST['email']; 
    $getpass = $_POST['pass']; 
    $getretypepass = $_POST['retypepass']; 

    if ($getuser) { 
     if ($getemail) { 
      if($getpass) { 
       if ($getretypepass) { 
        if ($getpass === $getretypepass) { 
         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){ 

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

             mysql_query("INSERT INTO users VALUES (
              '', '$getuser', '$getpassword', '$getemail', '0', '$getcode', '$getdate' 
             )"); 



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

              $site ="http://localhost/member.php"; 
              $webmaster = "Bror Phren <[email protected]>"; 
              $headers = "From: $webmaster"; 
              $subject = "Activate your account"; 
              $message = "Thanks for registering. Click the link below to activate your account"; 
              $message .= "$site/activate.php?user=$getuser&code=$code\n"; 
              $message .= "You must activate your account t login."; 

              if (mail($getemail, $subject, $message, $headers)) { 
               $errormsg = "You have been registered. You must activate your account from the activation link sent to <b>$getemail</b> "; 
               $getuser = ""; 
               $getemail = ""; 
              } 
              else 
               $errormsg = "An error has occured. Your activation email was not sent"; 
             } 
             else 
              $errormsg = "An error has occured. Your account was not created.\n"; 
          } 
          else 
           $errormsg = "There is already a user with that email"; 
          } 
          else 
           $errormsg = "There is already a user with that username"; 
         } 
         else 
         $errormsg = "You must enter a valid email address to register."; 
       } 
       else 
       $errormsg = "You must retype your password to register."; 
      } 
      else 
      $errormsg = "You must enter password to register."; 
     } 
     else 
      $errormsg = "You must enter email to register."; 

    } 
    else 
     $errormsg = "You must enter username to register."; 
    } 
    mysql_close(); 
} 
?> 
<form action='./register.php' method='post'> 
<table> 

    <tr> 
     <td></td> 
     <td><font color='red'><?php if(isset($errormsg){ echo $errormsg; } ?></font></td> 
    </tr> 

    <tr>  
     <td>Username:</td> 
     <td><input type='text' name='user' value='<?php if(isset($getuser){ echo $getuser; } ?>' /></td> 
    </tr> 

    <tr> 
     <td>Email:</td> 
     <td><input type='text' name='email' value='<?php if(isset($getemail){ echo $getemail; } ?>' /></td> 
    </tr> 

    <tr> 
     <td>Password:</td> 
     <td><input type='password' name='pass' value='' /></td> 
    </tr> 

    <tr> 
     <td>Retype:</td> 
     <td><input type='password' name='retypepass' value='' /></td> 
    </tr> 

    <tr> 
     <td>Retype:</td> 
     <td><input type='submit' name='registerbtn' value='Register' /></td> 
    </tr> 

    </table> 
</form> 
+0

爲了清楚起見,我還移動了MySQL close語句。正如你問題中的馬達拉宇智波所評論的那樣,你也應該考慮使用準備好的語句。 – Ren

1

你的echo語句是你的,如果($ _ POST [「registerbtn」]){}塊中,這意味着如果沒有提交它不顯示形式。

+0

這解釋了是的。將表單移動到if語句之外,並在打印之前使用'isset'來檢查'$ errormsg','$ getuser'和'$ getemail'是否已設置。 '如果(isset($ errormsg){echo $ errormsg;}' – Ren

1

您在PHP代碼中有錯誤,它們阻止任何運行。

我會建議通過像PHPLint這樣的東西運行你的代碼來查看錯誤。

此外,您可能需要考慮以易於閱讀和維護的方式構建代碼。

例如,你可以避開所有這些嵌套的if語句,並把它寫成:

if (!$getuser) { 
    $errormsg = "You must enter username to register."; 
} 
else if (!$getemail) { 
    $errormsg = "You must enter email to register."; 
} 
... 
1

我認爲你需要使用其他

<?php 

if (isset($_POST['registerbtn'])) { 
    $getuser = $_POST['user']; 
    $getemail = $_POST['email']; 
    $getpass = $_POST['pass']; 
    $getretypepass = $_POST['retypepass']; 

    if ($getuser) { 
     if ($getemail) { 
      if($getpass) { 
       if ($getretypepass) { 
        if ($getpass === $getretypepass) { 
         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){ 

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

             mysql_query("INSERT INTO users VALUES (
              '', '$getuser', '$getpassword', '$getemail', '0', '$getcode', '$getdate' 
             )"); 



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

              $site ="http://localhost/member.php"; 
              $webmaster = "Bror Phren <[email protected]>"; 
              $headers = "From: $webmaster"; 
              $subject = "Activate your account"; 
              $message = "Thanks for registering. Click the link below to activate your account"; 
              $message .= "$site/activate.php?user=$getuser&code=$code\n"; 
              $message .= "You must activate your account t login."; 

              if (mail($getemail, $subject, $message, $headers)) { 
               $errormsg = "You have been registered. You must activate your account from the activation link sent to <b>$getemail</b> "; 
               $getuser = ""; 
               $getemail = ""; 
              } 
              else 
               $errormsg = "An error has occured. Your activation email was not sent"; 


             } 
             else 
              $errormsg = "An error has occured. Your account was not created.\n"; 


          } 
          else 
           $errormsg = "There is already a user with that email"; 

          } 
          else 
           $errormsg = "There is already a user with that username"; 

          mysql_close(); 


         } 
         else 
         $errormsg = "You must enter a valid email address to register."; 

       } 
       else 
       $errormsg = "You must retype your password to register."; 

      } 
      else 
       $errormsg = "You must enter password to register."; 

     } 
     else 
      $errormsg = "You must enter email to register."; 
    } 
    else 
     $errormsg = "You must enter username to register."; 
} 
} 

這裏

else{ 
$form = "<form action='./register.php' method='post'> 
<table> 

    <tr> 
    <td></td> 
    <td><font color='red'>$errormsg</font></td> 
    </tr> 
    <tr> 

    <td>Username:</td> 
    <td><input type='text' name='user' value='$getuser' /></td> 
    </tr> 

    <tr> 
    <td>Email:</td> 
    <td><input type='text' name='email' value='$getemail' /></td> 
    </tr> 

    <tr> 
    <td>Password:</td> 
    <td><input type='password' name='pass' value='' /></td> 
    </tr> 

     <tr> 
    <td>Retype:</td> 
    <td><input type='password' name='retypepass' value='' /></td> 
    </tr> 

     <tr> 
    <td>Retype:</td> 
    <td><input type='submit' name='registerbtn' value='Register' /></td> 
    </tr> 

    </table> 
</form>"; 

echo $form; 

} 

?> 
+0

大的感謝之人整理出來了 –

+0

好吧,如果你認爲我的答案解決了probs意味着接受答案.. – senK