2017-08-01 1 views
0

Ich arbeite gerade an der Registrierung für meine App, bis ich auf dieses Problem stieß, dass, wenn ich auf meiner Seite gehe, es eine neue Zeile in meiner users Tabelle erstellen würde. Es scheint, dass das Formular beim erneuten Laden der Seite automatisch übermittelt wird. Ich hatte auf this Frage verwiesen:PHP bleibt beim Aktualisieren hängen

Verwenden Sie Header ("location:"); Wenn Sie mit dem Einfügen fertig sind, wird ein neues Formular angezeigt und die Aktualisierung sollte nicht zum erneuten Senden führen.

Aber alles, was passiert ist, als ich das gemacht habe, war eine große Redirect-Schleife, die mich daran hindert, auf die Seite alle zusammen zuzugreifen.

Hier ist mein Code für meine Anmeldung:

<?php 

    global $conn; 
    global $register; 
    global $error; 

    $username = $_POST['username']; 
    $firstName = $_POST['firstName']; 
    $lastName = $_POST['lastName']; 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
    $password = $_POST['password']; 
    $confirmPassword = $_POST['confirmPassword']; 

    define(HEADER_TITLE, "Register"); 
    include_once 'template/header.php'; 

    if (isset($_POST['register'])) { 
     $register->register($username, $firstName, $lastName, $email, $phone, $password, $confirmPassword); 
    } 

?> 
<div class="container"> 
    <div id="hoogley_login"> 
     <h2>Register</h2><hr> 
      <div class="alert alert-danger" role="alert"> 
      <?php 
      if ($error->display() != null) { 
       #echo '<div class="alert alert-danger" role="alert">'; 
       $error->display(); 
      } else { 
       #echo '<div>'; 
      } 
     ?> 
     </div> 
     <form action="register" method="post"> 
      <input type="text" class="form-control" name="firstName" placeholder="First Name" value="<?php echo $_GET['firstName']; ?>"> 
      <br> 
      <input type="text" class="form-control" name="lastName" placeholder="Last Name" value="<?php echo $_GET['lastName']; ?>"> 
      <br> 
      <input type="text" class="form-control" name="username" placeholder="Username" value="<?php echo $_GET['username']; ?>"> 
      <br> 
      <input type="email" class="form-control" name="email" placeholder="E-Mail Address" value="<?php echo $_GET['email']; ?>"> 
      <br> 
      <input type="tel" class="form-control" name="phone" placeholder="Phone Number" value="<?php echo $_GET['phone']; ?>"> 
      <br> 
      <input type="password" class="form-control" name="password" placeholder="Password"> 
      <br> 
      <input type="password" class="form-control" name="confirmPassword" placeholder="Confirm Password"> 
      <br> 
      <input type="submit" class="btn btn-info btn-lg" name="register" value="Register!"> 
      <br><br> 
      <a href="/login">Have an account? Login!</a> 
     </form> 
    </div> 
</div> 



<?php include_once 'template/footer.php'; ?> 

Mein register.class.php:

<?php 


/** 
* User Registration 
*/ 
class register { 

public function register($reg_username = '', $reg_firstName = '', $reg_lastName = '', $reg_email = '', $reg_phone = '', $reg_password = '', $reg_confirmPassword = '') { 

    global $conn; 
    global $error; 

    // TO PREVENT AN UNDEFINED INDEX 
    // First Name 
    if(isset($reg_firstName)) { 
     $reg_firstName = stripslashes(htmlspecialchars($conn->real_escape_string($reg_firstName))); 
    } else { 
     $error->set('312'); 
    } 

    // Last Name 
    if(isset($reg_lastName)) { 
     $reg_lastName = stripslashes(htmlspecialchars($conn->real_escape_string($reg_lastName))); 
    } else { 
     $error->set('313'); 
    } 

    // Username 
    if(isset($reg_username)) { 
     $reg_username = stripslashes(preg_replace('/\s+/', '', htmlspecialchars($conn->real_escape_string($reg_username)))); 
    } else { 
     $error->set('311'); 
    } 

    // Email 
    if(isset($reg_email)) { 
     $reg_email = stripslashes(preg_replace('/\s+/', '', htmlspecialchars($conn->real_escape_string($reg_email)))); 
    } else { 
     $error->set('314'); 
    } 

    // Phone 
    if(isset($reg_phone)) { 
     $reg_phone = stripslashes(preg_replace("/[^0-9]/", "", htmlspecialchars($conn->real_escape_string($reg_phone)))); 
    } else { 
     $error->set('315'); 
    } 

    // Password 
    if(isset($reg_password)) { 
     $reg_password = stripslashes(htmlspecialchars($conn->real_escape_string($reg_password))); 
    } else { 
     $error->set('316'); 
    } 

    // Password 
    if(isset($reg_confirmPassword)) { 
     $reg_password = stripslashes(htmlspecialchars($conn->real_escape_string($reg_confirmPassword))); 
    } else { 
     $error->set('317'); 
    } 

    // Check if username exists in the database 
    $stmt = $conn->prepare("SELECT * FROM users WHERE username=?"); 
    $stmt->bind_param('s', $reg_username); 
    $stmt->execute(); 
    $stmt->store_result(); 

    if ($stmt->num_rows == 0) { 

     $stmt = $conn->prepare("SELECT * FROM users WHERE email=?"); 
     $stmt->bind_param('s', $reg_email); 
     $stmt->execute(); 
     $stmt->store_result(); 

     if ($stmt->num_rows == 0) { 

      $stmt = $conn->prepare("SELECT * FROM users WHERE phone=?"); 
      $stmt->bind_param('s', $reg_phone); 
      $stmt->execute(); 
      $stmt->store_result(); 

      if ($stmt->num_rows == 0) { 

       // Do passwords match? 
       if ($reg_password == $reg_confirmPassword) { 

        $reg_passwordEncrypt = hash("sha256", $reg_password); 

        // Insert data 
        $stmt = $conn->prepare("INSERT INTO users (username, firstName, lastName, email, phone, password, company, website, bio) VALUES (?, ?, ?, ?, ?, ?, '', '', '')"); 
        $stmt->bind_param("ssssss", $reg_username, $reg_firstName, $reg_lastName, $reg_email, $reg_phone, $reg_passwordEncrypt); 
        $stmt->execute(); 
        header("Location: /login"); 

       } else { 
        // Set Error 
        $error->set('308'); 
       } 

      } else { 
       // Set Error 
       $error->set('306'); 
      } 

     } else { 
      // Set Error 
      $error->set('304'); 
     } 
    } else { 
     // Set Error 
     $error->set('301'); 

    } 


} 

} 

$register = new register; 

Dank!

+0

Ich erinnere mich, als ich verwenden, um meinen PHP-Code in der gleichen Datei wie meine HTML-Formulare zu verarbeiten ... ich diese Art von Problemen der ganze Zeit hatte. Warum nicht die Informationen an eine Datei senden, die speziell dafür verwendet wird? wie eine 'process.php' Datei? – GrumpyCrouton

+0

@GrumpyCrouton Als ich das gemacht habe, habe ich einige seltsame Fehler bekommen, deshalb dachte ich, es sei einfacher, PHP nur auf dem HTML zu halten, da ich nur eine PHP-Funktion habe und einige Variablen alles für mich tun. – HoogleyBoogley

+0

IMO es ist Weg sauberer und einfacher, eine andere Datei zu verwenden, um Probleme wie die zu verhindern, die Sie jetzt haben: P – GrumpyCrouton

Antwort

Verwandte Themen