2016-06-28 6 views
-2

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

«Что-то пошло не так во время регистрации. Пожалуйста, повторите попытку позже.

.

Любая помощь очень ценится.

<?php 
//signup.php 
include 'connect.php'; 

echo '<h2>Register </h2>'; 
if($_SERVER['REQUEST_METHOD'] != 'POST') 
{ 
    /*the form hasn't been posted yet, display it 
     note that the action="" will cause the form to post to the same page it is on */ 
    echo '<form method="post" action=""> 
     Username: <input type="text" name="Username" /> 
     Password: <input type="password" name="Password"> 
     Confirm Password: <input type="password" name="Confirm"> 

     <input type="submit" value="Submit" /> 
    </form>'; 

    } 
else 
{ 
    /* so, the form has been posted, we'll process the data in three steps: 
     1. Check the data 
     2. Let the user refill the wrong fields (if necessary) 
     3. Save the data 
    */ 
    $errors = array(); /* declare the array for later use */ 

    if(isset($_POST['Username'])) 
    { 
     //the user name exists 
     //if(!ctype_alnum($_POST['Username'])) 
     if($_POST['Username'] == ['Username']) 
     { 
      $errors[] = 'The username is already in use.'; 
     } 

     } 
    else 
    { 
     $errors[] = 'The username field must not be empty.'; 
    } 

    if(isset($_POST['Password'])) 
    { 
     if($_POST['Password'] != $_POST['Confirm']) 
     { 
      $errors[] = 'The two passwords did not match.'; 
     } 
    } 
    else 
    { 
     $errors[] = 'The password field cannot be empty.'; 
    } 

    if(!empty($errors)) /*check for an empty array, if there are errors, they're in this array (note the ! operator)*/ 
    { 
     echo 'Uh-oh.. a couple of fields are not filled in correctly..'; 
     echo '<ul>'; 
     foreach($errors as $key => $value) /* walk through the array so all the errors get displayed */ 
     { 
      echo '<li>' . $value . '</li>'; /* this generates a nice error list */ 
     } 
     echo '</ul>'; 
    } 
    else 
    { 
     //the form has been posted without errors, so save it 
     //notice the use of mysql_real_escape_string, keep everything safe! 
     //also notice the sha1 function which hashes the password 
     $sql = "INSERT INTO 
        Users(Username, Password) 
       VALUES('" . mysql_real_escape_string($_POST['Username']) . "', 
         '" . md5($_POST['Password']) . "', 
         NOW(), 
         0)"; 

     $result = mysql_query($sql); 
     if(!$result) 
     { 
      //something went wrong, display the error 
      echo 'Something went wrong while registering. Please try again later.'; 
      //echo mysql_error(); //debugging purposes, uncomment when needed 
     } 
     else 
     { 
     header ("location: index.htm"); //redirects to Index Page 


     } 
    } 
} 

?> 

спасибо

+0

попытаться вставить запрос вручную – LOKESH

+2

Прост: вы НЕ проверяете ошибки, и Господь знает только, что находится внутри 'connect.php '. –

+2

Вы говорите сценарию вставить только в «Пользователи» («Имя пользователя», «Пароль»), но вы также разбираете еще два значения «СЕЙЧАС»() и 0) – b0ne

ответ

1

Попробуйте это. Я добавил обратно клещей к Users полей таблицы

$username = mysql_real_escape_string($_POST['Username']); 
    $password = md5($_POST['Password']); 


    $sql= "INSERT INTO Users(`Username`,`Password`) VALUES('$username', '$password')"; 

Вы вставляя NOW() и 0. 2 дополнительных значений

Обратите внимание на первый шаг в отладке запроса SQL выполняется это в MySQL первой. Поэтому попробуйте запустить SQL-запрос сначала в MySQL сначала с фиктивными значениями для Username и Password и посмотреть, работает ли он

+0

Спасибо Kev, это сработало, и теперь я могу двигаться вперед! – DarkKnight1203

+0

Как я могу получить код для проверки имени пользователя? Лучше ли использовать mysqli или php? – DarkKnight1203

+0

Я бы предложил вам пользователь mysqli, а не mysql с самого начала. Чтобы проверить, существует ли пользователь, используйте оператор mysql 'SELECT COUNT (user_id) FROM Users WHERE' username' = '$ username'' Если результат больше 0, тогда пользователь существует else, если результат равен 0, пользователь не выходит.На самом деле, правильная логика будет, если есть пользователь с этим именем пользователя, тогда результат должен быть 1 и не более – theTypan

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