2016-03-10 2 views
0

Я хочу, чтобы мой пароль составлял не менее 6 символов, и если он меньше 6 символов, он должен сказать об ошибке, но он ничего не говорит.пароль минимальная длина не работает

<?php 
if (strlen($_POST['userPassword']) < 6) { 
    $error[]= "wachtwoord moet minimaal 6 karakters bevatten <br />"; 
} else { 
    $cryptpass = md5($password); 
    $query = $dbcon->prepare("INSERT INTO users (userName,userPassword,userMail) VALUES (:userName,:userPassword, :userMail)"); 
    $query->bindParam(":userName", $_POST['userName']); 
    $query->bindvalue(":userPassword", $cryptpass); 
    $query->bindParam(":userMail", $_POST['userMail']); 
    $query->execute(); 

    echo "gebruiker aangemaakt"; 
} 

foreach ($error as $errors) { 
    echo $errors; 
} 
?> 

это моя форма:

<form action="registratie.php" method="post"> 

     Username <br /> 
     <input type="text" id="user_input" name="userName" placeholder="userame" /><br /> 
     Password<br /> 
     <input type="password" id="pass_input" name="userPassword" placeholder="password" /><br /> 
     Password<br /> 
     <input type="password" id="v_pass_input" name="userPassAgain" placeholder="password" /><br /> 
     Email<br /> 
     <input type="email" id="email" name="userMail" placeholder="email"><br /> 
     <input type="submit" id="register" name="register" value="Register" disabled="disabled" /> 

</form> 
+0

Какой вывод 'var_dump (strlen ($ _ POST ['userPassword']))' – Naumov

+2

Вы вообще не проверяете ошибки в своем запросе, сделайте это и включите отчет об ошибках, и вы можете узнать, почему это isn Не работаем. – Epodax

+0

Если «ничего не сказано», у вас есть Неустранимая ошибка: ваше соединение с db работает? Вы его протестировали? Проверьте также результат '-> prepare' – fusion3k

ответ

3

Взято из комментариев:

"plus, is the form and PHP/PDO in the same file? how is this accessed, on a hosted site? local? if local, http://localhost/file.xxx or file:///file.xxx??

и

"@fred-ii- it is local. it is accessed like : file:///file.xxx – Furkan yavuz"

и

"there is the problem^@Furkanyavuz and why is this disabled="disabled" /> for submit disabled?"

Есть проблема. Вы должны запустить это с веб-сервера, а не как file:///file.xxx непосредственно в своем браузере.

Сам браузер не будет анализировать директивы PHP.

Но как http://localhost/file.xxx или http://example.com/file.xxx.

Если у вас нет установленного веб-сервера/PHP, вам придется установить его или запустить с размещенного веб-сайта.

Sidenote: Если вы используете это в том же файле, сначала вам нужно будет проверить, пустые ли входы.

Кроме того, так как вы используете PDO, почему вы используете MD5 пароли для хранения с? Теперь это не безопасно.

Используйте один из следующих действий:

Другие ссылки:

Важно Sidenote о длине колонки:

Если и когда вы решите использовать password_hash() или крипту, его важно отметить, что если длина текущего столбца паролей меньше 60, это необходимо будет изменить на это (или выше). В руководстве предлагается длина 255.

Вам потребуется ALTER length вашей колонки и начать с нового хэша, чтобы он вступил в силу. В противном случае MySQL будет терпеть неудачу.


Сноски:

Комментарии от Али Зия:

Вы можете исправить это с помощью if (isset($_POST['userPassword']) && strlen($_POST['userPassword']) < 6) @Furkanyavuz - Али Зия 2 минуты назад

Также if (!empty($error)){ перед тем Еогеасп - Али Зия 1 мин. Назад

Sidenote: Использование !empty() более isset() лучше, поскольку он проверяет, установлен ли он и пуст.

if (!empty($_POST['userPassword']) && strlen($_POST['userPassword']) < 6)


Относительно PDO/запроса/соединения.

Связь неизвестна, действительно ли это PDO.

Обратите внимание, что различные API MySQL не смешиваются. Итак, если вы используете mysqli_ или mysql_ для подключения, который не будет работать с вашим запросом PDO.

+0

благодарит за советом. Я использую md5, потому что это школьный проект, и это не обязательно. теперь моя проблема исправлена! –

+0

@Fred Thankyou. Я запомню это. :) –

+0

@Furkanyavuz Добро пожаловать. –

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