它没有向数据库添加数据

时间:2019-06-26 14:41:55

标签: php mysql

我认为代码是正确的,但是不会将提交的数据添加到数据库中。

我的服务器上装有PHP 7.3.4。

我的PHP代码,

我创建了注册表,但是没有向数据库添加任何内容。你能帮我吗?

(我已经建立了与数据库的连接,只是不想公开显示信息。)

    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    session_start();
    $dbhost = "localhost";
    $dbusername = "root";
    $dbpassword = "9F!25opp";
    $dbname = 'Photoshare';

    // Create connection
    $con = new mysqli($dbhost, $dbusername, $dbpassword, $dbname);

    if(mysqli_connect_errno()) 
    {
      echo "Failed to connect: " . mysqli_connect_errno();
    }

    //Declaring variables to prevent errors
    $fname = ""; //First name
    $lname = ""; //Last name
    $em = ""; //email
    $em2 = ""; //email 2
    $password = ""; //password
    $password2 = ""; //password 2
    $date = ""; //Sign up date 
    $error_array = array(); //Holds error messages

    if(isset($_POST['register_button'])){

      //Registration form values

      //First name
      $fname = strip_tags($_POST['reg_fname']); //Remove html tags
      $fname = str_replace(' ', '', $fname); //remove spaces
      $fname = ucfirst(strtolower($fname)); //Uppercase first letter
      $_SESSION['reg_fname'] = $fname; //Stores first name into session variable

      //Last name
      $lname = strip_tags($_POST['reg_lname']); //Remove html tags
      $lname = str_replace(' ', '', $lname); //remove spaces
      $lname = ucfirst(strtolower($lname)); //Uppercase first letter
      $_SESSION['reg_lname'] = $lname; //Stores last name into session variable

      //email
      $em = strip_tags($_POST['reg_email']); //Remove html tags
      $em = str_replace(' ', '', $em); //remove spaces
      $_SESSION['reg_email'] = $em; //Stores email into session variable

      //email 2
      $em2 = strip_tags($_POST['reg_email2']); //Remove html tags
      $em2 = str_replace(' ', '', $em2); //remove spaces
      $_SESSION['reg_email2'] = $em2; //Stores email2 into session variable

      //Password
      $password = strip_tags($_POST['reg_password']); //Remove html tags
      $password2 = strip_tags($_POST['reg_password2']); //Remove html tags

      $date = date("Y-m-d"); //Current date

      if($em == $em2) {
        //Check if email is in valid format 
        if(filter_var($em, FILTER_VALIDATE_EMAIL)) {

          $em = filter_var($em, FILTER_VALIDATE_EMAIL);

          //Check if email already exists 
          $e_check = mysqli_query($con, "SELECT email FROM basic WHERE email='$em'");

          //Count the number of rows returned
          $num_rows = mysqli_num_rows($e_check);

          if($num_rows > 0) {
            array_push($error_array, "Email already in use<br>");
          }

        }
        else {
          array_push($error_array, "Invalid email format<br>");
        }


      }
      else {
        array_push($error_array, "Emails don't match<br>");
      }


      if(strlen($fname) > 25 || strlen($fname) < 2) {
        array_push($error_array, "Your first name must be between 2 and 25 characters<br>");
      }

      if(strlen($lname) > 25 || strlen($lname) < 2) {
        array_push($error_array,  "Your last name must be between 2 and 30 characters<br>");
      }

      if($password != $password2) {
        array_push($error_array,  "Your passwords do not match<br>");
      }
      else {
        if(preg_match('/[^A-Za-z0-9]/', $password)) {
          array_push($error_array, "Your password can only contain english characters.<br>");
        }
      }

      if(strlen($password > 30 || strlen($password) < 5)) {
        array_push($error_array, "Your password must be betwen 5 and 30 characters<br>");
      }


      if(empty($error_array)) {
        $password = md5($password); //Encrypt password before sending to database

        //Generate username by concatenating first name and last name
        $username = strtolower($fname . "_" . $lname);
        $check_username_query = mysqli_query($con, "SELECT username FROM basic WHERE username='$username'");


        $i = 0; 
        //if username exists add number to username
        while(mysqli_num_rows($check_username_query) != 0) {
          $i++; //Add 1 to i
          $username = $username . "_" . $i;
          $check_username_query = mysqli_query($con, "SELECT username FROM basic WHERE username='$username'");
        }

        //Profile picture assignment
        $rand = rand(1, 2); //Random number between 1 and 2

        if($rand == 1)
          $profile_pic = "assets/images/profile_pics/defaults/head_deep_blue.png";
        else if($rand == 2)
          $profile_pic = "assets/images/profile_pics/defaults/head_emerald.png";


        $query = mysqli_query($con, "INSERT INTO basic ('id', 'first_name', 'last_name', 'username', 'email', 'password', 'signup_date', 'profile_pic') VALUES ('', $fname, $lname, $username, $em, $password, $date, $profile_pic)");

        array_push($error_array, "<span style='color: #14C800;'>You're all set! Goahead and login!</span><br>");

        //Clear session variables 
        $_SESSION['reg_fname'] = "";
        $_SESSION['reg_lname'] = "";
        $_SESSION['reg_email'] = "";
        $_SESSION['reg_email2'] = "";
      }

    }

    ?>

我的html代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>Photoshare Register</title>
      </head>
    <body>

      <form action="index.php" method="POST">
        <input type="text" name="reg_fname" placeholder="First Name" value="<?php 
        if(isset($_SESSION['reg_fname'])) {
          echo $_SESSION['reg_fname'];
        } 
        ?>" required>
        <br>
        <?php if(in_array("Your first name must be between 2 and 25 characters<br>", $error_array)) echo "Your first name must be between 2 and 25 characters<br>"; ?>

        <input type="text" name="reg_lname" placeholder="Last Name" value="<?php 
        if(isset($_SESSION['reg_lname'])) {
          echo $_SESSION['reg_lname'];
        } 
        ?>" required>
        <br>
        <?php if(in_array("Your last name must be between 2 and 25 characters<br>", $error_array)) echo "Your last name must be between 2 and 25 characters<br>"; ?>

        <input type="email" name="reg_email" placeholder="Email" value="<?php 
        if(isset($_SESSION['reg_email'])) {
          echo $_SESSION['reg_email'];
        } 
        ?>" required>
        <br>

        <input type="email" name="reg_email2" placeholder="Confirm Email" value="<?php 
        if(isset($_SESSION['reg_email2'])) {
          echo $_SESSION['reg_email2'];
        } 
        ?>" required>
        <br>
        <?php if(in_array("Email already in use<br>", $error_array)) echo "Email already in use<br>"; 
        else if(in_array("Invalid email format<br>", $error_array)) echo "Invalid email format<br>";
        else if(in_array("Emails don't match<br>", $error_array)) echo "Emails don't match<br>"; ?>


        <input type="password" name="reg_password" placeholder="Password" required>
        <br>
        <input type="password" name="reg_password2" placeholder="Confirm Password" required>
        <br>
        <?php if(in_array("Your passwords do not match<br>", $error_array)) echo "Your passwords do not match<br>"; 
        else if(in_array("Your password can only contain english characters or numbers<br>", $error_array)) echo "Your password can only contain english characters or numbers<br>";
        else if(in_array("Your password must be betwen 5 and 30 characters<br>", $error_array)) echo "Your password must be betwen 5 and 30 characters<br>"; ?>


        <input type="submit" name="register_button" value="Register">
        <br>

        <?php if(in_array("<span style='color: #14C800;'>You're all set! Goahead and login!</span><br>", $error_array)) echo "<span style='color: #14C800;'>You're all set! Go ahead and login!</span><br>"; ?>

      </form>


    </body>
    </html>

0 个答案:

没有答案