我正在创建一个简单的注册表单
我的问题是,当我使用strlen
函数时,它不能正常工作
当我输入数字作为密码时,它不会显示任何内容
当我输入不是数字时,即使它超过6个字符
<?php
if (isset($_POST['signup'])) {
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$phone = $_POST['phone-number'];
$address = $_POST['address'];
$password = $_POST['password'];
$cpassword = $_POST['cpassword'];
}
if (isset($password)) {
if (strlen($password < 6)) {
$password_err = "password must be at least 6 characters";
}
}
?>
<?php
if (isset($password_err)){
echo $password_err;
}
?>
答案 0 :(得分:5)
您使用strlen
的方式很糟糕。您应该使用strlen($variable)
,然后使用您想要的比较(在您的情况下,< 6
)
因此代码中的行应为:
if (strlen($password) < 6) { ... }
答案 1 :(得分:1)
我认为使用strlen方法存在一个小错误。其中一个括号的位置是错误的。将带有strlen的if语句更改为:
if (strlen($password) < 6) {
$password_err = "password must be at least 6 characters";
}
$ password后面应该有一个结束括号。
答案 2 :(得分:0)
使用此
if (isset($password)) {
if (strlen($password) < 6) {
$password_err = "password must be at least 6 characters";
}
}
只是关闭括号的错位
答案 3 :(得分:0)
更改
Environment
要
if (strlen($password < 6)) {
答案 4 :(得分:0)
Strlen正以错误的方式使用。你有这样的:
if (strlen($password < 6)) {
当您想要像这样使用它时:
if (strlen($password) < 6)) {
以下是对其原因的简要解释:
$length = strlen($password); // Will output a number so if password is 'password', it will output '8'.
// So lets add that strlen to the if statement
if ($length < 6) { // This will compare that number that $length output, to 6.
# Do something
}
答案 5 :(得分:0)
错误在表达式中:
strlen($password < 6)
应该是:
strlen($password) < 6
strlen($password < 6)
的价值是什么?无论$password
的值是多少,表达式$password < 6
的值都是TRUE
或FALSE
(boolean
)。
strlen()
期望一个字符串作为参数。你传递一个布尔值。它首先将参数转换为字符串,然后计算其字符。
如何将布尔值转换为字符串?
很容易找到:
var_dump((string)TRUE)
# string(1) "1"
var_dump((string)FALSE)
# string(0) ""
true
转换为'1'
,false
转换为''
(空字符串)。
因此,strlen()
会返回1
或0
。
答案 6 :(得分:-1)
我使用的是 PHP 7.4 并且 OP 的方法有效。 但是,升级到 PHP 8 后,它停止工作。
为了让它更加混乱,在 PHPStorm 中,它在 strlen(
所以你认为因为它显示了预期的小数据格式前体,所以没问题。