我希望我的密码长度至少为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 :(得分:3)
取自评论:
“plus,是同一个文件中的表单和PHP / PDO吗?如何在托管站点上访问?本地?如果是本地,http://localhost/file.xxx或文件:///file.xxx ??
和
“@ fred-ii-它是本地的。它的访问方式如下:file:///file.xxx - Furkan yavuz”
和
“有问题^ @Furkanyavuz,为什么这个禁用=”禁用“/&gt;提交被禁用?”
有问题。您必须在网络服务器上运行此功能,而不是直接在网络浏览器中运行file:///file.xxx
。
浏览器本身不会解析PHP指令。
但是http://localhost/file.xxx
或http://example.com/file.xxx
。
如果您没有安装网络服务器/ PHP,则必须安装一个或在托管网站上运行它。
旁注:如果你从同一个文件中运行它,首先需要检查输入是否为空。
另外,既然您正在使用PDO,为什么使用MD5存储密码?现在已经不再安全了。
使用以下其中一项:
crypt()
bcrypt()
scrypt()
password_hash()
功能。其他链接:
关于列长的重要说明:
如果您决定使用password_hash()
或隐藏,请务必注意,如果您当前的密码列的长度低于60,则需要将其更改为(或更高)。手册建议长度为255。
您需要更改列的长度并重新开始使用新哈希才能使其生效。否则,MySQL将无声地失败。
<强>脚注:强>
Ali Zia的评论:
你可以使用if (isset($_POST['userPassword']) && strlen($_POST['userPassword']) < 6 )
@Furkanyavuz - Ali Zia 2分钟前解决这个问题
在foreach之前if (!empty($error)){
- Ali Zia 1分钟前
旁注:使用!empty()
优于isset()
会更好,因为它会检查它是否已设置且为空。
if (!empty($_POST['userPassword']) && strlen($_POST['userPassword']) < 6 )
关于PDO /查询/连接。
连接未知,是否实际上是PDO。
请注意,不同的MySQL API不会混用。因此,如果您使用mysqli_
或mysql_
进行连接,则无法使用您的PDO查询。