Php 密码最小长度不为';行不通

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(

我希望我的密码至少有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>

用户名

密码

密码

电子邮件

摘自评论:

另外,表单和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\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')来解决这个问题