密码最小长度不起作用

时间:2016-03-10 12:10:08

标签: 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("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>

1 个答案:

答案 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.xxxhttp://example.com/file.xxx

如果您没有安装网络服务器/ PHP,则必须安装一个或在托管网站上运行它。

旁注:如果你从同一个文件中运行它,首先需要检查输入是否为空。

另外,既然您正在使用PDO,为什么使用MD5存储密码?现在已经不再安全了。

使用以下其中一项:

其他链接:

关于列长的重要说明:

如果您决定使用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查询。