2015-06-29 2 views
1

Не знаете, почему, но когда я попал в submit на форме регистра, он не вставлял данные в базу данных, он выполняет последнее заявление ниже, перенаправляя страницу успеха регистрации, которая меня смущает. Я имел это работает, но я что-то сделал, и я не могу понять, что это неправильно ..Страница регистрации не вставлять данные в базу данных

<?php 
if(isset($_POST['submit'])) { 
    $username = $_POST['username']; 
    $password = md5($_POST['password']); 
    $email = $_POST['email']; 
    $Fname = $_POST['Fname']; 
    $Lname = $_POST['Lname']; 
    $Display1 = $_POST['Display1']; 
    $Display2 = $_POST['Display2']; 
    $query = mysql_query("SELECT * FROM users WHERE username ='$username'"); 
    if(empty($username) or empty($password) or empty($email) or empty($Fname) or empty($Lname) or empty($Display1)) { 
     echo '<p>Fields Empty!</p>'; 
    } else if(mysql_num_rows($query) > 0){ 
     $query = mysql_query("SELECT * FROM users WHERE username ='$username' AND password ='$password'"); 
     echo'<p>Username or Password Already Exists!</p>'; 
    } else { 
     mysql_query("INSERT INTO users VALUES('', '$username', '$password', '2', 'a', '$Fname', '$Lname', '$email', '$Display1', '$Display2')"); 

     $subject = "Membership Confirmation"; 
     $message = "Hello, You have registered an account on Joepepjoepep.com"; 
     $from = "From: [email protected]"; 

     header("location:signuppayment.php"); 
     mail($email, $subject, $message, $from); 
    } 
} 
?> 
+0

Что говорят, это сообщение об ошибках? Вы открыты для SQL-инъекций с помощью этого кода. Кроме того, это, похоже, не используется '$ query = mysql_query (" SELECT * FROM users WHERE username = '$ username' AND password = '$ password' ");' – chris85

+0

есть ли у вас ошибка в ваших журналах ошибок php ? – aizele

+0

это не давало мне никаких ошибок, что меня еще больше сбивало с толку. – Brian

ответ

0

unique key Создать для поля имя пользователя в определении таблицы.
Тогда имя пользователя может быть только один раз в таблице, а второй запрос на вставку с тем же именем пользователя будет сбой с specific error code. (и вы избегаете race condition из-за ваших многочисленных запросов)
Вы можете проверить этот код ошибки, а затем отобразить сообщение об ошибке «username is is use».

1

Попробуйте следующее: Вы забыли поместить строки, которые должны быть вставлены в вашу базу данных.

mysql_query("INSERT INTO users VALUES('', '$username', '$password', '2', 'a', '$Fname', '$Lname', '$email', '$Display1', '$Display2')"); 

Изменить это во что-то вроде этого:

mysql_query("INSERT INTO users(id, username, password, Display1, Display2, email, Fname, Lname, user_level, type) VALUES ('', '$username', '$password', '$Display1', '$Display2', '$email', '$Fname', '$Lname', '2', 'a')"); 

и поэтому применять это в вашем коде:

<?php 

if(isset($_POST['submit'])) { 
    $username = $_POST['username']; 
    $password = md5($_POST['password']); 
    $email = $_POST['email']; 
    $Fname = $_POST['Fname']; 
    $Lname = $_POST['Lname']; 
    $Display1 = $_POST['Display1']; 
    $Display2 = $_POST['Display2']; 
    $query = mysql_query("SELECT * FROM users WHERE username ='$username'"); 
    if((empty($username)) || (empty($password)) || (empty($email)) || (empty($Fname)) || (empty($Lname)) || (empty($Display1))) { 
     echo '<p>Fields Empty!</p>'; 
    } else if(mysql_num_rows($query) > 0){ 
     $query = mysql_query("SELECT * FROM users WHERE username ='$username' AND password ='$password'"); 
     echo'<p>Username or Password Already Exists!</p>'; 
    } else { 
     mysql_query("INSERT INTO users(id, username, password, Display1, Display2, email, Fname, Lname, user_level, type) VALUES ('', '$username', '$password', '$Display1', '$Display2', '$email', '$Fname', '$Lname', '2', 'a')"); 

      $subject = "Membership Confirmation"; 
      $message = "Hello, You have registered an account on Joepepjoepep.com"; 
      $from = "From: [email protected]"; 

      header("location:signuppayment.php"); 
      mail($email, $subject, $message, $from); 
} 

} 

?> 

Надеется, что это помогает.

Смежные вопросы