strlen无法正常工作

时间:2017-07-15 13:20:18

标签: php forms strlen

我正在创建一个简单的注册表单 我的问题是,当我使用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;
 }
 ?>

7 个答案:

答案 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的值都是TRUEFALSEboolean)。

strlen()期望一个字符串作为参数。你传递一个布尔值。它首先将参数转换为字符串,然后计算其字符。

如何将布尔值转换为字符串?

很容易找到:

var_dump((string)TRUE)
# string(1) "1"
var_dump((string)FALSE)
# string(0) ""

true转换为'1'false转换为''(空字符串)。

因此,strlen()会返回10

答案 6 :(得分:-1)

我使用的是 PHP 7.4 并且 OP 的方法有效。 但是,升级到 PHP 8 后,它停止工作。

为了让它更加混乱,在 PHPStorm 中,它在 strlen(

所以你认为因为它显示了预期的小数据格式前体,所以没问题。