如何强制用户使用 > 或 = 8 个字符。密码?
how to force user to use > or = 8 char. password?
我想强制用户使用 > 或 = 8 个字符。密码但由于某种原因无法正常工作,我尝试了 count()
和 strlen()
if(count($_POST['newpass']) < 8){
// ERROR
}
更新(整个 php 密码更改代码):
if(!empty($_POST['update'])){
if( strlen( trim( $_POST['newpass'] ) ) < 8 ){
$error = error('Password should be at least 8 characters in length.');
}
$options = array("cost"=>4);
$hashPassword = password_hash($_POST['newpass'],PASSWORD_BCRYPT,$options);
$getpass = $odb -> prepare("SELECT `password` FROM `users` WHERE `ID` = :id");
$getpass -> execute(array(":id" => $_SESSION['ID']));
$row = $getpass -> fetch();
$saved_password = $row['password'];
if (password_verify($_POST['oldpass'], $saved_password)) {
$SQLUpdate = $odb -> prepare("UPDATE `users` SET `password` = :password WHERE `username` = :username AND `ID` = :id");
$SQLUpdate -> execute(array(':password' => $hashPassword,':username' => $_SESSION['username'], ':id' => $_SESSION['ID']));
$error = success('Password has been successfully changed');
} else {
$error = error('Current password is incorrect.');
}
}
html 形式(位于 MODAL 但我猜这并不重要):
<form method="post">
<div class="form-group">
<label for="recipient-name" class="col-form-label">Current password</label>
<input class="form-control" style="color:black;" type="password" id="oldpass" name="oldpass" required="">
</div>
<div class="form-group">
<label for="recipient-name" class="col-form-label">New password</label>
<input class="form-control" style="color:black;" type="password" id="newpass" name="newpass" required="">
</div>
</div>
<div class="form-group">
<div class="modal-footer">
<button class="btn btn-primary" name="update" value="change" type="submit">Change</button>
</div>
</div>
</form>
试试这个:
if( isset( $_POST['update'])) {
echo "password entered: " . $_POST['newpass'] . "<br />";
if(strlen($_POST['newpass']) < 8 ) {
echo "Yea nah!, password is too short" . "<br />";
} else {
echo "Nah yea!, password is long enough" . "<br />";
}
}
结果 1:
输入的密码:sadfsdf
是的,不!,密码太短
结果 2:
输入的密码:asdfghjklo
不,是的!,密码足够长
我想强制用户使用 > 或 = 8 个字符。密码但由于某种原因无法正常工作,我尝试了 count()
和 strlen()
if(count($_POST['newpass']) < 8){
// ERROR
}
更新(整个 php 密码更改代码):
if(!empty($_POST['update'])){
if( strlen( trim( $_POST['newpass'] ) ) < 8 ){
$error = error('Password should be at least 8 characters in length.');
}
$options = array("cost"=>4);
$hashPassword = password_hash($_POST['newpass'],PASSWORD_BCRYPT,$options);
$getpass = $odb -> prepare("SELECT `password` FROM `users` WHERE `ID` = :id");
$getpass -> execute(array(":id" => $_SESSION['ID']));
$row = $getpass -> fetch();
$saved_password = $row['password'];
if (password_verify($_POST['oldpass'], $saved_password)) {
$SQLUpdate = $odb -> prepare("UPDATE `users` SET `password` = :password WHERE `username` = :username AND `ID` = :id");
$SQLUpdate -> execute(array(':password' => $hashPassword,':username' => $_SESSION['username'], ':id' => $_SESSION['ID']));
$error = success('Password has been successfully changed');
} else {
$error = error('Current password is incorrect.');
}
}
html 形式(位于 MODAL 但我猜这并不重要):
<form method="post">
<div class="form-group">
<label for="recipient-name" class="col-form-label">Current password</label>
<input class="form-control" style="color:black;" type="password" id="oldpass" name="oldpass" required="">
</div>
<div class="form-group">
<label for="recipient-name" class="col-form-label">New password</label>
<input class="form-control" style="color:black;" type="password" id="newpass" name="newpass" required="">
</div>
</div>
<div class="form-group">
<div class="modal-footer">
<button class="btn btn-primary" name="update" value="change" type="submit">Change</button>
</div>
</div>
</form>
试试这个:
if( isset( $_POST['update'])) {
echo "password entered: " . $_POST['newpass'] . "<br />";
if(strlen($_POST['newpass']) < 8 ) {
echo "Yea nah!, password is too short" . "<br />";
} else {
echo "Nah yea!, password is long enough" . "<br />";
}
}
结果 1:
输入的密码:sadfsdf 是的,不!,密码太短
结果 2:
输入的密码:asdfghjklo 不,是的!,密码足够长