PHP-код продолжает вставлять значения empy в базу данных.

Поэтому я пытаюсь создать эту форму, и каждый раз, когда я пытаюсь создать фиктивного пользователя, он создает empy в базе данных.

Здесь php-код create.php:

И вот часть формы Login.html:

<form action="create.php" autocomplete="on"> <h2> Sign up </h2> <p><label for="usernamesignup" data-icon="u">Your username</label> </p> <p><label for="emailsignup" data-icon="e"> Your email</label> </p> <p><label for="passwordsignup" data-icon="p">Your password </label> </p> <p><label for="passwordsignup_confirm" data-icon="p">Please confirm your password </label> </p> <p>Already a member?<a href="#tologin" target="_blank"> Go and log in </a></p>
</form>

Любая помощь будет принята с благодарностью.

EDIT: добавление метода: "пост" сделал трюк. Большое вам спасибо за ваш быстрый ответ и очень действительные рекомендации по безопасности и о том, как я должен перейти на более новую форму вместо того, что я использовал здесь.

6 ответов

Вы должны проверить, не являются ли значения, отправленные вашей формой, пустыми или пустыми. И, пожалуйста, будьте очень осторожны, ваш код уязвим для SQL-инъекций и хеширует ваш пароль в sha512 или что-то в этом роде.

взгляните на эту функцию: http://php.net/manual/en/function.empty.php

и попробуйте добавить это в вашу форму:

<form action="create.php" autocomplete="on" method="post"><code></code> </form>


Вам нужно указать метод формы для POST в вашем случае. Пытаться

<form action="create.php" autocomplete="on" method="POST"><code></code> </form>


попробуйте добавить это в свой тег формы

method='post'


  1. Я рекомендую вам использовать класс mysqli. Я сам использовал это в небольших проектах: https://github.com/ajillion/PHP-MySQL-Database-Class

  2. Вам не хватает "проверки формы" в вашем коде. Это предотвращает пустую и вредоносную форму, если вы правильно интегрируете проверку в свои формы и код бэкэнд

  3. Простой пример того, как убедиться, что данные были введены в определенные поля, попробуйте следующее:

<p> 4. Считаете ли вы, что используете PHP-инфраструктуру? Попробуйте что-то вроде <a href="http://ellislab.com/codeigniter" rel="nofollow noreferrer" target="_blank">Codeigniter</a> или <a href="http://laravel.com/rel=nofollow" rel="nofollow noreferrer" target="_blank">Laravel,</a> если вы хотите что-то более продвинутое и пригодное для использования.</p>


Пожалуйста, включите

Прошу вас, не храните необработанный пароль в базе данных, просто используйте метод шифрования. И используйте PDO вместо mysql_*

см. здесь: http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/


Метод по умолчанию для формы - GET, и вы пытаетесь получить свои значения из POST, поэтому они пустые...

Ты должен сделать:

$password = $_GET['password'];
// etc.

Или, если вы не знаете:

$password = $_REQUEST['password'];
// etc.

licensed under cc by-sa 3.0 with attribution.