2015-12-17 2 views
1

Я делаю регистрационную форму. Ниже мой код. Мое имя базы данных - «пользователи» и имеет следующие поля: id, name, email & пароль. Когда я отправляю форму, это echos «Ты зарегистрирован!» но в базу данных ничего не добавляется. Я новичок в php и SQL. Если кто-нибудь может мне помочь, почему моя форма не отправляет данные в базу данных.php Форма не отправляется в базу данных MySQL

<?php 

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

    $error = ""; 

    if (!$_POST['userName']) 
     $error .= "<br/>Please enter your name"; 

    if (!$_POST['userEmail']) 
     $error .= "<br/>Please enter your email"; 
    else if (!filter_var($_POST['userEmail'], FILTER_VALIDATE_EMAIL)) 
     $error .= "<br/>Please enter a valid email address"; 

    if (!$_POST['userPassword']) 
     $error .= "<br/>Please enter your password"; 
    else { 
     if (strlen($_POST['userPassword']) < 8) 
      $error .= "<br/>Please enter a password with minimum 8 characters"; 
     if (!preg_match('`[A-Z]`', $_POST['userPassword'])) 
      $error .= "<br/>Please include a capital letter in your password"; 
    } 

    if ($error) 
     echo "There were error(s) in your signup details: " . $error; 
    else { 
     $link = mysqli_connect("localhost", "username", "password", "database"); 

     if (!$link) { 
      echo "Failed."; 
     } else { 
      $query = "SELECT * FROM `users` WHERE email='$_POST[userEmail])'"; 
      $result = mysqli_query($link, $query); 
      $results = mysqli_num_rows($result); 

      if ($results) 
       echo "That email address already exists. Do you want to log in? "; 
      else { 
       $query = "INSERT INTO users (name, email, passsword) VALUES(
        '$_POST[userName]', '$_POST[userEmail]', '$_POST[userPassword]')"; 
       mysqli_query($link, $query); 
       echo "You've been signed up!"; 
      } 
     } 
    } 
} 
?> 
    <!DOCTYPE html> 
    <html lang="en"> 
     <head> 
     <meta charset="utf-8"> 
     <title>Sign Up</title> 
    </head> 
    <body> 
    <h1>Sign Up</h1> 
    <form method="post"> 
     <label for="userName">Name</label> 
     <input type="text" id="userName" name="userName" placeholder="Name"/> 
     <label for="userEmail">Email address</label> 
     <input type="email" id="userEmail" name="userEmail" placeholder="Email"/> 
     <label for="userPassword">Password</label> 
     <input type="password" id="userPassword" 
      name="userPassword" placeholder="Password"/> 
     <input type="submit" id="submit" name="submit" placeholder="Sign Up"/> 
    </form> 
    </body> 
    </html> 
+4

[Ваш скрипт находится в опасности для SQL Injection атак.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+1

Пожалуйста, используйте PHP [встроенные функции] (http://jayblanchard.net/proper_password_hashing_with_PHP.html) для защиты паролей. Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). –

+2

Вы не проверяете наличие ошибок. –

ответ

0

Я проверил ваш код.

Error : 1.) It was in select Query : placed extra ')' right parenthesis. 
2.) It was in Insert Query : spelling of password was passsword. 

Обновлено: просто измените ниже запрос.

$query = "SELECT * FROM `student` WHERE email='$_POST[userEmail]'"; 

$query = "INSERT INTO student (name, email, password) VALUES(
        '$_POST[userName]', '$_POST[userEmail]', '$_POST[userPassword]')"; 
+0

Спасибо. Это было из-за орфографической ошибки. Я также обновлю другую часть кода, предложенную вами и другими. – chaitanya

0

Замените еще с

else { 
    $uname = $_POST["userName"]; 
    $email = $_POST["userEmail"]; 
    $password = $_POST["userPassword"]; 
    $query = "INSERT INTO users (name, email, passsword) VALUES('$uname', '$email', '$password')"; 
    mysqli_query($link, $query) or die(mysqli_error($link)); 
    echo "You've been signed up!";  
} 
+1

Бросьте хотя бы немного mysqli_real_escape_string's. – dan08

0

Добавленное запрос должен выглядеть следующим образом:

$query="INSERT INTO users (name, email, passsword) VALUES('$userName', '$userEmail', '$userPassword')"; 
Смежные вопросы