2011-03-07 54 views
0

出於某種原因,我的腳本一直在說「請輸入您的密碼」,然後再試一次,永遠不會結束。任何線索?這裏是我的代碼:(我把例子我的網站的名字:用戶註冊問題

<?php 
    if (isset($_POST['submitted'])){ 

     $trimmed = array_map('trim', $_POST); 

     $fn = $ln = $e = $p = FALSE; 


     //First Name 
     if (preg_match ('/^[A-Z \'.-]{2,20}$/i',$trimmed['first_name'])) { 

      $fn = mysql_real_escape_string($trimmed['first_name']); 
      $trimmed['first_name']; 
     } else { 

      echo "<p class='error'>Please Enter Your First Name</p>"; 
     } 


     //Last Name 
     if (preg_match ('/^[A-Z \'.-]{2,40}$/i',$trimmed['last_name'])) { 

      $ln = mysql_real_escape_string($trimmed['last_name']); 
      $trimmed['last_name']; 
     } else { 

      echo "<p class='error'>Please Enter Your Last Name</p>"; 
     } 



     //Check for an email address 
     if(preg_match ('/^[\w.-][email protected][\w.-]+\.[A-Za-z]{2,6}$/', $trimmed['email'])) { 
      $e = mysql_real_escape_string($trimmed['email']); 
     } else{ 
      echo "<p class='error'>Please Enter a Valid Email Address</p>"; 
     } 

     //Password 

     if (preg_match ('/^\w{4,20}$/',$trimmed['password1'])){ 
      if ($trimmed['password1'] == $trimmed['password2']) { 
       $p = mysql_real_escape_string($trimmed['password1']); 

      } else{ 
       echo "<p class='error'>Your Password did not match the confirmed password</p>"; 
      } 
     } else{ 
      echo "<p class='error'>Please enter a valid Password</p>"; 
     } 

     if($n && $ln && $e && $p) { 
      $q = "SELECT user_id from users WHERE email='$e'"; 
      $r = mysql_query($link,$q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysql_error($link)); 
      if (mysql_num_rows($r) == 0){ 
       $a = md5(uniqid(rand(), true)); 
       $q = "INSERT INTO users (email, pass, first_name, last_name, active, registration_date) VALUES ('$e', SHA1('$p'), '$fn', '$ln', '$a', NOW())"; 
       $r= mysql_query ($link, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysql_error($link)); 

       if(mysql_affected_rows($link) == 1){ 
        $body = "Thank you for signing up for a Example Account. To activate your account, please click on this link:\n\n"; 
        $body .= BASE_URL . 'activate.php?x=' . urlencode($e) . "&y=$a"; 

        mail($trimmed['email'], 'Example Account Confirmation', $body, 'From: [email protected]'); 
        echo"<h3>Thank You for Signing Up. A confirmation email has been sent to your email. Please click on the link we sent you to activate your account.</h3>"; 
        exit(); 
       } else{ 
        echo "<p class='error'>You could not be registered due to a system error. We apologize for any inconvenience.</p>"; 
       } 
      } else { 
       echo "<p class='error'>That email address has already been registered. If you have forgotten your password, please visit: <a href='./forgot.php'>Forgot Your Password?</a></p>"; 
      } 

     } else{ 
      echo"<p class='error'>Please re-enter your passwords and try again.</p>"; 
     } 
    mysql_close($link); 
    } 
    ?> 
    <form action='signup.php' method='post'> 
      <p><b>First Name:<br/></b><input type='text' name='first_name' size='20' maxlength='20' value='<?php if (isset($trimmed['first_name'])) { echo $trimmed['first_name'];} ?>'></p><br/> 
      <p><b>Last Name:<br/></b><input type='text' name='last_name' size='20' maxlength='40' value='<?php if (isset($trimmed['last_name'])) { echo $trimmed['last_name'];} ?>'></p><br/> 
      <p><b>Email<br/></b><input type='text' name='email' size='30' maxlength='80' value='<?php if (isset($trimmed['email'])) { echo $trimmed['email'];} ?>'></p><br/> 
      <p><b>Password<br/></b><input type='password' name='password1' size='20' maxlength='20' /><small> Use only letters, numbers, and underscores. Must be between 4-20 Characters Long.</small></p><br/> 
      <p><b>Confirm Password<br/></b><input type='password' name='password2' size='20' maxlength='20' /></p><br/> 
      <input type='hidden' name='submitted' value='true'/> 
      <input type='submit' name='submit' value='Sign Up!'/> 
    </form> 
+0

你試過調試數組$ trimmed看看裏面有什麼? – Jacob 2011-03-07 04:51:22

回答

3

$fn = mysql_real_escape_string($trimmed['first_name']);if($n && $ln && $e && $p)你檢查$n,而不是$fn,或設置$n代替$fn,這取決於你如何看待它。

+2

這就是爲什麼人們不應該關閉通知......並使用更有意義的變量名稱 – Jacob 2011-03-07 04:53:55

+0

我剛剛做到了,現在有3個警告和5個通知關於第67行和第70行......還有什麼地方有錯嗎? – 2011-03-07 04:59:50

+0

什麼是錯誤? – Phoenix 2011-03-07 05:07:33