2016-11-21 43 views
-3

我已經在PHP中創建了一個註冊頁面,我要求提供一個名稱,用戶名,電子郵件,密碼(並確認),性別和國家。除了第一個和最後一個名字,我都可以完成這些工作,而這些名字都不會發布到我的數據庫中。如何調試不保存數據的表單?

我認爲它不會發布到數據庫,因爲名稱沒有經過。我嘗試了很多,現在我完全陷入困境。我試過谷歌,YouTube等,我找不到任何東西。

<?php 
    session_start(); 
    include_once("php_includes/check_login_status.php"); 
    if($user_ok == true){ 
     header("location: profile.php?u=".$_SESSION["username"]); 
     exit(); 
    } 
?> 
<?php 
    // Ajax calls this NAME CHECK code to execute 
    if(isset($_POST["usernamecheck"])){ 
     include_once("php_includes/db_connect.php"); 
     $username = preg_replace('#[^a-z0-9]#i', '', $_POST['usernamecheck']); 
     $sql = "SELECT id FROM users WHERE username='$username' LIMIT 1"; 
     $query = mysqli_query($db_conx, $sql); 
     $uname_check = mysqli_num_rows($query); 
     if (strlen($username) < 3 || strlen($username) > 16) { 
      echo '<strong style="color:#FFF;">3 - 16 characters please</strong>'; 
      exit(); 
     } 
     if (is_numeric($username[0])) { 
      echo '<strong style="color:#F00;">Usernames must begin with a letter</strong>'; 
      exit(); 
     } 
     if ($uname_check < 1) { 
      echo '<strong style="color:#009900;">' . $username . ' is OK</strong>'; 
      exit(); 
     } else { 
      echo '<strong style="color:#F00;">' . $username . ' is taken</strong>'; 
      exit(); 
     } 
    } 
?> 
<?php 
    // Ajax calls this REGISTRATION code to execute 
    if(isset($_POST["u"])){ 
     // CONNECT TO THE DATABASE 
     include_once("php_includes/db_connect.php"); 
     // GATHER THE POSTED DATA INTO LOCAL VARIABLES\ 
     $f = $_POST['firstname']; 
     $l = $_POST['lastname']; 
     $u = preg_replace('#[^a-z0-9]#i', '', $_POST['u']); 
     $e = mysqli_real_escape_string($db_conx, $_POST['e']); 
     $p = $_POST['p']; 
     $g = preg_replace('#[^a-z]#', '', $_POST['g']); 
     $c = preg_replace('#[^a-z ]#i', '', $_POST['c']); 
     // GET USER IP ADDRESS 
     $ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR')); 

      // DUPLICATE DATA CHECKS FOR USERNAME AND EMAIL 
      $sql = "SELECT id FROM users WHERE username='$u' LIMIT 1"; 
      $query = mysqli_query($db_conx, $sql); 
      $u_check = mysqli_num_rows($query); 
      // ------------------------------------------- 
      $sql = "SELECT id FROM users WHERE email='$e' LIMIT 1"; 
      $query = mysqli_query($db_conx, $sql); 
      $e_check = mysqli_num_rows($query); 

     // FORM DATA ERROR HANDLING 
     if($f = "" || $l = "" || $u == "" || $e == "" || $p == "" || $g == "" || $c == ""){ 
      echo "The form submission is missing values."; 
      exit(); 
     } else if ($u_check > 0){ 
      echo "The username you entered is alreay taken"; 
      exit(); 
     } else if (strlen($u) < 3 || strlen($u) > 16) { 
      echo "Username must be between 3 and 16 characters"; 
      exit(); 
     } else if (is_numeric($u[0])) { 
      echo 'Username cannot begin with a number'; 
      exit(); 
     } else if (strlen($p) < 8) { 
      echo 'Your password must be 8 characters'; 
      exit(); 
     } else if ($e_check > 0){ 
      echo "That email address is already in use in the system"; 
      exit(); 
     } else { 
     // END FORM DATA ERROR HANDLING 
      // Begin Insertion of data into the database 
      // Hash the password and apply your own mysterious unique salt 
      $p_md5 = md5($p); 
      $p_hash = hash('sha512', $p_md5); 
      // Add user info into the database table for the main site table 
      $sql = "INSERT INTO users (firstname, lastname, username, email, password, gender, country, ip, signup, lastlogin, notescheck) 
           VALUES('$f', '$l', '$u','$e','$p_hash','$g','$c,'$ip',now(),now(),now())"; 
       $query = mysqli_query($db_conx, $sql); 
       $uid = mysqli_insert_id($db_conx); 
       if(!$query) { 
        echo "DB1, FAIL<br>"; 
       } else { 
        echo "DB1, Success<br>"; 
       } 

      // Establish their row in the useroptions table 
      $sql = 'INSERT INTO useroptions (id, username, background) 
            VALUES ("$uid", "$u", "original")'; 
       $query = mysqli_query($db_conx, $sql); 
       if(!$query) { 
        echo "DB2, FAIL<br>"; 
       } else { 
        echo "DB2, Success<br>"; 
       } 
      // Establish their row in the links table 
      $url = "www.elefind.x10.bz/profile.php?u=$u"; 
      $sql = "INSERT INTO links (link_id, site_id, url, title, subtitle, description, fulltxt, indexdate, size, md5sum, visible, level) 
           VALUES('', '', '$url', '$u', '$f $l', '', now(), '', '', '', '')"; 
       $query = mysqli_query($db_conx, $sql); 
       if(!$query) { 
        echo "DB3, FAIL<br>"; 
       } else { 
        echo "DB2, Success<br>"; 
       } 
       echo "Fname: ".$f."<br>"; 
       echo "Lname: ".$l."<br>"; 
       echo "Uname: ".$u."<br>"; 
       echo "pwd: ".$p_hash."<br>"; 
       echo "Gender: ".$g."<br>"; 
       echo "Country: ".$c."<br>"; 
       echo "ip: ".$ip."<br>"; 

      // Create directory(folder) to hold each user's files(pics, MP3s, etc.) 
      if (!file_exists("user/")) { 
       mkdir("user/", 0755); 
       echo "User folder created.<br>"; 
      } 
      if (!file_exists("user/$u")) { 
       mkdir("user/$u", 0755); 
       echo "profile folder created.<br>"; 
      } 
      // Email the user their activation link 
      $to = "$e";       
      $from = "[email protected]"; 
      $subject = 'Elefind Account Activation'; 
      $message = ' <!DOCTYPE html>'; 
      $message .= '  <html>'; 
      $message .= '   <head>'; 
      $message .= '    <meta charset="UTF-8">'; 
      $message .= '    <title>Elefind Message</title>'; 
      $message .= '   </head>'; 
      $message .= '   <body style="margin:0px; font-family:Tahoma, Geneva, sans-serif;">'; 
      $message .= '     <table style="background:#343642;padding:40px;border:1px solid #DDD;margin:0 auto;font-family:calibri;">'; 
      $message .= '      <tr>'; 
      $message .= '       <td>'; 
      $message .= '        <table style="background:#505260;width:100%;border:1px solid #CCC;padding:0;margin:0;border-collapse:collapse;max-width:100%;width:550px;border-radius:10px;">'; 
      $message .= '         <!-- Logo -->'; 
      $message .= '         <tr>'; 
      $message .= '          <td style="padding:10px 30px;text-align:center;margin:0">'; 
      $message .= '           <p>'; 
      $message .= '           <a href="#"><img src="http://www.elefind.x10.bz/img/logo.png" width="100"></a>'; 
      $message .= '           </p>'; 
      $message .= '          </td>'; 
      $message .= '         </tr>'; 
      $message .= '         <!-- Welcome Salutation -->'; 
      $message .= '         <tr>'; 
      $message .= '          <td style="padding:10px 30px;margin:0;font-size:2.5em;color:#4A7BA5;text-align:center;">'; 
      $message .= '           Welcome to Elefind!'; 
      $message .= '          </td>'; 
      $message .= '         </tr>'; 
      $message .= '         <!-- User Msg -->'; 
      $message .= '         <tr>'; 
      $message .= '          <td style="padding:10px 30px;margin:0;text-align:left;color:FFF;">'; 
      $message .= '           <p>Hey there '.$u.',</p>'; 
      $message .= '           <p>To activate your profile please follow link on the below link,</p>'; 
      $message .= '          </td>'; 
      $message .= '         </tr>'; 
      $message .= '         <!-- Link Button -->'; 
      $message .= '         <tr>'; 
      $message .= '          <td style="padding:10px 30px;text-align:center;">'; 
      $message .= '           <a href="http://elefind.x10.bz/activation.php?id='.$uid.'&u='.$u.'&e='.$e.'&p='.$p_hash.'" title="Activate Profile">'; 
      $message .= '            <img src="http://elefind.x10.bz/img/activate.png" width="300" height="auto">'; 
      $message .= '            </img>'; 
      $message .= '           </a>'; 
      $message .= '          </td>'; 
      $message .= '         </tr>'; 
      $message .= '         <!-- Seperator -->'; 
      $message .= '         <tr>'; 
      $message .= '          <td style="padding:10px 30px;">'; 
      $message .= '          </td>'; 
      $message .= '         </tr>'; 
      $message .= '         <!-- Footer Content -->'; 
      $message .= '         <tr>'; 
      $message .= '          <td style="padding:10px 30px;margin:0;background:#555;color:#CCC;border-top:1px solid #CCC;">'; 
      $message .= '           <p>Once your account is active you can sign in with your email adress.</p>'; 
      $message .= '           <p>Didn\'t request this? If you didn\'t request a to make an account with us, please let us know.</p>'; 
      $message .= '           <p>This email is sent from an unmonitored address. Please do not reply.<!-- Please use links inline to get additional information or help.--></p>'; 
      $message .= '           <!--<p>If you no longer wish to receive these emails, click here to <a href="#" style="color:#FFF;">Unsubscribe</a></p>-->'; 
      $message .= '          </td>'; 
      $message .= '         </tr>'; 
      $message .= '        </table>'; 
      $message .= '        <!-- Some more content -->'; 
      $message .= '        <tr>'; 
      $message .= '         <td style="padding:10px 30px;margin:0;font-size:10px;">'; 
      $message .= '          <p> Click on the link above to activate your account, If the button does not work please use the following link,</br>'; 
      $message .= '           <a href="http://elefind.x10.bz/activation.php?id='.$uid.'&u='.$u.'&e='.$e.'&p='.$p_hash.'">'; 
      $message .= '            http://elefind.x10.bz/activation.php?id='.$uid.'&u='.$u.'&e='.$e.'&p='.$p_hash; 
      $message .= '           </a>'; 
      $message .= '          </p>'; 
      $message .= '         </td>'; 
      $message .= '        </tr>'; 
      $message .= '       </td>'; 
      $message .= '      </tr>'; 
      $message .= '    </table>'; 
      $message .= '   </body>'; 
      $message .= '  </html>'; 
      $headers = "From: $from\n"; 
      $headers .= "MIME-Version: 1.0\n"; 
      $headers .= "Content-type: text/html; charset=iso-8859-1\n"; 
      mail($to, $subject, $message, $headers); 
      echo "ACCOUNT_CREATED_SUCCESSFULLY"; 
      exit(); 
     } 
     exit(); 
    } 
?> 
<!DOCTYPE html> 
    <html> 
     <head> 
      <head name="Default"> 
       <link rel="icon" href="favicon.ico" type="image/x-icon"> 
       <meta charset="UTF-8"> 
       <title>Sign Up</title> 
      </head> 
      <head name="CSS"> 
       <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> 
       <link rel="stylesheet" href="css/pages/signup.css"> 
       <link rel="stylesheet" href="css/header.css"> 
       <link rel="stylesheet" href="css/footer.css"> 
       <link rel="stylesheet" href="css/fonts.css"> 
      </head> 
      <head name="JS"> 
       <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> 
       <script src="js/pages/signup.js"></script> 
       <script src="js/header.js"></script> 
       <script src="js/main.js"></script> 
       <script src="js/ajax.js"></script> 
       <script> 

        $('.send').click(function(e){ 
         $(".send").addClass("sending"); 
        }) 

        function restrict(elem){ 
         var tf = document.getElementById(elem); 
         var rx = new RegExp; 
         if(elem == "email"){ 
          rx = /[' "]/gi; 
         } else if(elem == "username"){ 
          rx = /[^a-z0-9]/gi; 
         } else if(elem == "name"){ 
          rx = /[^a-z]/gi; 
         } else if(elem == "name"){ 
          rx = /[^a-z]/gi; 
         } 
         tf.value = tf.value.replace(rx, ""); 
        } 
        function emptyElement(x){ 
         document.getElementById(x).innerHTML = ""; 
        } 
        function checkusername(){ 
         var u = document.getElementById("username").value; 
         if(u != ""){ 
         document.getElementById("unamestatus").innerHTML = 'checking ...'; 
         var ajax = ajaxObj("POST", "signup.php"); 
          ajax.onreadystatechange = function() { 
           if(ajaxReturn(ajax) == true) { 
            document.getElementById("unamestatus").innerHTML = ajax.responseText; 
           } 
          } 
         ajax.send("usernamecheck="+u); 
         } 
        } 
        function signup(){ 
         var fn = document.getElementById("firstname").value; 
         var ln = document.getElementById("lastname").value; 
         var u = document.getElementById("username").value; 
         var e = document.getElementById("email").value; 
         var p1 = document.getElementById("pass1").value; 
         var p2 = document.getElementById("pass2").value; 
         var c = document.getElementById("country").value; 
         var g = document.getElementById("gender").value; 
         var status = document.getElementById("status"); 
         if(fn == "" || ln == ""|| u == "" || e == "" || p1 == "" || p2 == "" || c == "" || g == ""){ 
          status.innerHTML = "Some of the form data is missing, Please fill it all out.<br>first name: "+fn+"<br>Last name: "+ln; 
          $(".send").removeClass("sending"); 
         } else if(p1 != p2){ 
          status.innerHTML = "Your password fields do not match"; 
          $(".send").removeClass("sending"); 
         } else { 
          var ajax = ajaxObj("POST", "signup.php"); 
          ajax.onreadystatechange = function() { 
           if(ajaxReturn(ajax) == true) { 
            if(ajax.responseText != "ACCOUNT_CREATED_SUCCESSFULLY"){ 
             status.innerHTML = ajax.responseText; 
             $(".send").removeClass("sending"); 
            } else { 
             window.scrollTo(0,0); 
             $(".send").removeClass("sending"); 
             document.getElementById("signupform").innerHTML = "OK "+u+", check your email inbox and junk mail box at <u>"+e+"</u> in a moment to complete the sign up process by activating your account. You will not be able to do anything on the site until you successfully activate your account. <br><br>fname: "+fn+"<br>lname: "+ln+"<br> username: "+u+"<br>email: "+e+"<br>password: "+p1+ "<br><br>Correct?"; 
            } 
           } 
          } 
          ajax.send("fn="+fn+"&ln="+ln+"&u="+u+"&e="+e+"&p="+p1+"&c="+c+"&g="+g); 
         } 
        } 
       </script> 
      </head> 
     </head> 
     <body> 
      <?php include_once("header.php"); ?> 
      <div class="content"> 
       <div class="cont"> 
        <form name="signupform" id="signupform" action="signup()"> 
         <div class="demo"> 
          <div class="signup"> 
           <div class="signup__check"></div> 
           <div class="signup__form"> 
            <div class="signup__row"> 
             <input type="text" placeholder="First name" class="signup__input name" id="firstname" name="firstname" onfocus="emptyElement('status')" onkeyup="restrict('name')" maxlength="32"> 
             <br> 
            </div> 
            <div class="signup__row"> 
             <input type="text" placeholder="Last name" class="signup__input name" id="lastname" name="lastname" onfocus="emptyElement('status')" onkeyup="restrict('name')" maxlength="32"> 
             <br> 
            </div> 
            <div class="signup__row"> 
             <input type="text" placeholder="Username" class="signup__input name" id="username" onfocus="emptyElement('status')" onblur="checkusername()" onkeyup="restrict('username')" maxlength="16"> 
             <br> 
             <span id="unamestatus"></span> 
            </div> 
            <div class="signup__row"> 
             <input type="text" placeholder="Email" class="signup__input name" id="email" onfocus="emptyElement('status')" onkeyup="restrict('email')" maxlength="88"> 
            </div> 
            <div class="signup__row"> 
             <input type="password" placeholder="Password" class="signup__input pass" id="pass1" onfocus="emptyElement('status')" maxlength="16"> 
            </div> 
            <div class="signup__row"> 
             <input type="password" placeholder="Confirm password" class="signup__input pass" id="pass2" onfocus="emptyElement('status')" maxlength="16"> 
            </div> 
            <div class="signup__row"> 
             <select id="gender" onfocus="emptyElement('status')" placeholder="Gender" class="signup__input"> 
              <option value="">Please select a gender</option> 
              <option value="m">Male</option> 
              <option value="f">Female</option> 
             </select> 
            </div> 
            <div class="signup__row"> 
             <select id="country" onfocus="emptyElement('status')" placeholder="Country" class="signup__input"> 
              <?php include_once("inc/countries.php"); ?> 
             </select> 
            </div> 
            <div> 
             <p class="signup__terms"> By creating an account you accept the <a href="terms_of_service.php">terms of service</a> </p> 
            </div> 
            <p id="status"></p> 
            <button id="signupbtn" onclick="signup()" class="send"name="Submit">Sign up</button> 
           </div> 
          </div> 
         </div> 
        </form> 
       </div> 
      </div> 
      <?php include_once("footer.php"); ?> 
     </body> 
    </html> 
+0

您收到了哪些錯誤?我瞥了一眼你的MySQL並注意到'$ f'。 PHP僅使用雙引號解析變量而不是單引號。我假設這不是你唯一的問題?同樣在$ c左右,你錯過了第二個報價。 –

+0

在我嘗試寫入數據庫之後,您會看到我在哪裏放置了所有變量的回顯,當它們回顯時顯示出所有內容,但不是名稱...我沒有注意到引號... XD對不起,如果解決了這個問題,謝謝 –

+0

爲名字和姓氏問題添加了一個答案 –

回答

0

除了在註釋中提到的代碼之外,您還有一個if語句指定變量。

if($f = "" || $l = "" || $u == "" || $e == "" || $p == "" || $g == "" || $c == ""){} 

注意=和未$ f和$ L後==,它應該是:

if($f == "" || $l == "" || $u == "" || $e == "" || $p == "" || $g == "" || $c == ""){} 

這樣,你是不是替換原有的內容,現在檢查的內容。

未來一個空()檢查將檢查「」甚至取消設置POST變量,允許您檢查丟失的POST值和空行。

+0

到目前爲止,工作感謝!對不起,這是一個愚蠢的錯誤... XD –

+0

發生,但你會記得下一次。 –

+0

是的,是的,我會 –

0

陷阱疲憊誰已經在屏幕的方式凝視着,這樣的工具長

if($f = "" || $l = "" || $u == "" || $e == "" || $p == "" || $g == "" || $c == ""){ 

在線上使用單一=爲$ F和$ L這給他們帶來新的價值,在這個案件 」」。

將其更改爲

if($f == "" || $l == "" || $u == "" || $e == "" || $p == "" || $g == "" || $c == ""){ 

,你會重新開業!

+0

我完全同意,我一直在這一整天工作.. XD –