Php 密码最小长度不为';行不通
我希望我的密码至少有6个字符长,如果它少于6个字符长,它必须说一个错误,但它没有说什么Php 密码最小长度不为';行不通,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我希望我的密码至少有6个字符长,如果它少于6个字符长,它必须说一个错误,但它没有说什么 <?php if (strlen($_POST['userPassword']) < 6 ) { $error[]= "wachtwoord moet minimaal 6 karakters bevatten <br />"; } else { $cryptpass = md5($password); $query = $dbcon->prepare(
<?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>
用户名
密码
密码
电子邮件
摘自评论:
另外,表单和PHP/PDO是否在同一个文件中?如何在托管站点上访问它?本地?如果是本地,或者file:///file.xxx??
及
“@fred ii-它是本地的。它的访问方式如下:file:///file.xxx –Furkan yavuz“
及
“存在问题^@Furkanyavuz,为什么对提交禁用此选项?” 这就是问题所在。您必须在Web服务器上运行此操作,而不是像
file:///file.xxx
直接在web浏览器中
浏览器本身不会解析PHP指令
但是作为http://localhost/file.xxx
或http://example.com/file.xxx
如果没有安装webserver/PHP,则必须安装一个或在托管网站上运行它
旁注:如果您是在同一个文件上运行这个,那么首先需要检查输入是否为空
- 参考:
- PHP5.5的函数
- 兼容性包(如果PHP<5.5)
password\u hash()
或crypt,请务必注意,如果当前密码列的长度小于60,则需要将其更改为该长度(或更高)。手册建议长度为255
您需要更改列的长度,并使用新的哈希重新开始,以使其生效。否则,MySQL将以静默方式失败
脚注: 阿里·齐亚的评论:
您可以通过使用
if(isset($\u POST['userPassword'])和strlen($\u POST['userPassword'])<6)来解决这个问题。
@Furkanyavuz–2分钟前的Ali Zia
同样如果(!empty($error)){
在foreach之前-Ali Zia 1分钟前
旁注:在isset()
上使用!empty()
更好,因为它会检查它是否已设置且为空
if(!empty($\u POST['userPassword'])和&strlen($\u POST['userPassword'])<6)
关于PDO/查询/连接。 连接是未知的,无论它实际上是PDO 请注意,不同的MySQL API不会混合使用。因此,如果您正在使用
mysqli\uquot/code>或MySQL\uquot/code>进行连接,则PDO查询将无法使用这些API。摘自注释:
另外,表单和PHP/PDO是否在同一个文件中?如何在托管站点上访问它?本地?如果是本地,或者file:///file.xxx??
及
“@fred ii-它是本地的。它的访问方式如下:file:///file.xxx –Furkan yavuz“
及
“存在问题^@Furkanyavuz,为什么对提交禁用此选项?”
这就是问题所在。您必须在Web服务器上运行此操作,而不是像file:///file.xxx
直接在web浏览器中
浏览器本身不会解析PHP指令
但是作为http://localhost/file.xxx
或http://example.com/file.xxx
如果没有安装webserver/PHP,则必须安装一个或在托管网站上运行它
旁注:如果您是在同一个文件上运行这个,那么首先需要检查输入是否为空
- 参考:
另外,既然您使用的是PDO,为什么要使用MD5来存储密码?现在这样做不再安全
使用以下选项之一:
- PHP5.5的函数
- 兼容性包(如果PHP<5.5)
其他链接:
关于列长度的重要旁注:
如果您决定使用password\u hash()
或crypt,请务必注意,如果当前密码列的长度小于60,则需要将其更改为该长度(或更高)。手册建议长度为255
您需要更改列的长度,并使用新的哈希重新开始,以使其生效。否则,MySQL将以静默方式失败
脚注:
阿里·齐亚的评论:
您可以通过使用if(isset($\u POST['userPassword'])和strlen($\u POST['userPassword'])<6)来解决这个问题。
@Furkanyavuz–2分钟前的Ali Zia
同样如果(!empty($error)){
在foreach之前-Ali Zia 1分钟前
旁注:在isset()
上使用!empty()
更好,因为它会检查它是否已设置且为空
if(!empty($\u POST['userPassword'])和&strlen($\u POST['userPassword'])<6)
关于PDO/查询/连接。
连接是未知的,无论它实际上是PDO
请注意,不同的MySQL API不会混合使用。因此,如果您使用mysqli_u
或MySQL_
进行连接,则PDO查询将无法使用该API。您根本没有对查询执行任何错误检查,请执行该操作并打开错误报告,您可能会发现其不起作用的原因。如果一切正常,您将看到一个text、 因为您的代码在任何情况下都会打印文本,所以存在问题^@Furkanyavuz,为什么这是提交禁用的disabled=“disabled”/>
?您可以通过使用if(isset($\u POST['userPassword'))和&strlen($\u POST['userP')来解决这个问题