2014-12-14 3 views
0

Файл register.php работает, но при нажатии кнопки отправки. Это сообщение об ошибке Я получаюРегистрационная форма PHP, не добавляющая пользователей в базу данных

Notice: Use of undefined constant username - assumed 'username' in C:\xampp\htdocs\Hamza\register.php on line 18 

Вы зарегистрированы! Вернуться на страницу входа

Однако он не добавляет пользователей в базу данных, хотя, что я делаю неправильно? Я верю, что что-то вроде INSERT INTO users VALUES неверно. Я обыскал вокруг и провел 2 часа, решая его, но не могу понять, что случилось. Любая помощь была бы полезной, спасибо.

register.php файл

<?php 
echo "<h1>Register</h1>"; 

$submit = @$_POST['submit']; 

//form data 
$fullname = strip_tags(@$_POST['fullname']); 
$username = strip_tags(@$_POST['username']); 
$password = strip_tags(@$_POST['password']); 
$repeatpassword = strip_tags(@$_POST['repeatpassword']); 
$date = date ("y-m-d"); 


if ($submit) 
{ 

//check for existance 
if ($fullname&&username&&$password&&$repeatpassword) 
{ 

    if ($password==$repeatpassword) 

    { 

    //check char length of username and fullname 
    if (strlen($username)>25||strlen($fullname)>25) 
    { 
    echo "Length of username or fullname is too long"; 
    } 
    else 
    { 
     //check password length 
     if (strlen($password)>25||strlen($password)<6) 
    { 
    echo "Password must be between 6 and 25 characters"; 
    } 
    else 
    { 
    //register the user! 

    // encrypt password 
    $password = md5($password); 
    $repeatpassword = md5($repeatpassword); 

    //open database 
    $connect = mysql_connect("localhost","root",""); 
    mysql_select_db("phplogin"); //select database 

    $queryreg = mysql_query(" 


INSERT INTO users VALUES ('','".$fullname."','".$username."','".$password."','".$date."') 
    "); 

    die ("You have been registered! <a href='index.php'>Return to login page</a>"); 

    } 

} 


    } 
    else 
     echo "Your passwords do not match!"; 
} 
else 
    echo "Please fill in <b>all</b> fields!"; 

} 

?> 

<html> 
<p> 
<form action='register.php' method='POST'> 
    <table> 
     <tr> 
      <td> 
      Your full name: 
      </td> 
      <td> 
      <input type='text' name='fullname' value='<?php echo $fullname; ?>' 
      </td> 
     </tr> 
      <tr> 
      <td> 
      Choose a username: 
      </td> 
      <td> 
      <input type='text' name='username' value='<?php echo $username; ?>' 
      </td> 
     </tr> 
      <tr> 
      <td> 
      Choose a password: 
      </td> 
      <td> 
      <input type='password' name='password'> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      Repeat your password: 
      </td> 
      <td> 
      <input type='password' name='repeatpassword'> 
      </td> 
     </tr> 
    </table> 
    <p> 
    <input type='submit' name='submit' value='Register'> 

</form> 

</html> 
+0

В качестве побочного примечания это уязвимо для [SQL-инъекций] (http://en.wikipedia.org/wiki/SQL_injection) - если это для реального использования, вы должны посмотреть на использование mysqli или на по крайней мере, используя что-то вроде 'addslashes()' для дезинфекции ввода ('strip_tags' вам не поможет). – John

+0

Это просто образец для задания в колледже – h4mza

ответ

1

Проверьте 18 строку:

if ($fullname&&username&&$password&&$repeatpassword)

Вы забыли поставить $ знак для пользователя.

+1

Он мог бы даже заметить это, если бы он не рисовал все, что угодно. – Barmar

+0

@Barmar Я согласен, что хорошие стили кодирования всегда могут быть полезны –

+0

Даже текстовый редактор с достойной окраской кода должен обнаруживать ошибки вроде этого (экономя часы в долгосрочной перспективе) – John

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