Я пытаюсь вставить данные в базу данных, но по какой-то причине код не работает. Вот форма, которую я использую.PHP PDO-Ошибка при вставке данных в базу данных
<form id="registration" method="post" action="index.php" style="display: none;">
<label for="username" class="username">
Username
</label>
<input type="text" name="r-username" id="r-username" placeholder="Username" required/>
<label for="password">
Password
</label>
<input type="password" name="password" id="password" placeholder="Password" required/>
<label for="check_password" class="check_password">
Password Check
</label>
<input type="password" name="check-password" id="check_password" placeholder="Password again" required/>
<label for="e-mail">
E-mail
</label>
<input type="email" name="e-mail" id="e-mail" placeholder="E-mail" required/>
<label for="check-e-mail" class="check_email">
E-mail Check
</label>
<input type="email" name="check-e-mail" id="check-e-mail" placeholder="E-mail again" required/>
<input type="submit" name="submit" class="submit" value="Register"/>
</form>
А вот PHP код:
if(isset($_POST['r-username']))
{
$name=$_POST['r-username'];
$pass=$_POST['password'];
$passcheck=$_POST['check-password'];
$mail=$_POST['e-mail'];
$mailcheck=$_POST['check-e-mail'];
if($name==''||$pass==''||$passcheck==''||$mail==''||$mailcheck=='')
{
echo "<script type='text/javascript'>alert('Field must be filled.');</script>";
}
elseif(strlen($pass)<=6)
{
echo "<script type='text/javascript'>alert('Password is too short.');</script>";
}
elseif(strlen($pass)>=20)
{
echo "<script type='text/javascript'>alert('Password is too long.');</script>";
}
elseif($pass!==$passcheck)
{
echo "<script type='text/javascript'>alert('Passwords must be same.');</script>";
}
elseif($mail!==$mailcheck)
{
echo "<script type='text/javascript'>alert('Emails must be same.');</script>";
}
else
{
$sql5='INSERT INTO user(user_name,password,joined,user_email) VALUES(:username,:password,Now(),:email)';
$query1=$db->prepare($sql5);
$result=$query1->execute(array(":username" => $name,
":password" => $pass,
":email" => $mail
));
if($result)
{
echo "<script type='text/javascript'>alert('Inserted.');</script>";
}
else
{
echo "<script type='text/javascript'>alert('ERROR.');</script>";
}
}
}
запускает код, но идентификатор это не распространяется на все. Он просто перезагружает страницу эхом сообщения ERROR и не вставляет никаких данных в базу данных. Извините за мой плохой английский и спасибо за возможные ответы :).
https://secure.php.net/manual/en/pdo.error-handling.php –
** Никогда не храните простые текстовые пароли! ** Пожалуйста, используйте встроенные функции PHP (http: // jayblanchard .net/proper_password_hashing_with_PHP.html) для защиты паролей. Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). Удостоверьтесь, что вы *** [не избегаете паролей] (http://stackoverflow.com/q/36628418/1011527) *** или используйте любой другой механизм очистки для них перед хэшированием. Выполнение этого * изменяет * пароль и вызывает ненужное дополнительное кодирование. –
Разрешить пользователям использовать [пароли/фразы] (https://xkcd.com/936/), которые они желают. [Не ограничивайте пароли.] (Http://jayblanchard.net/security_fail_passwords.html) –