Стрлен не работает должным образом
Я просто делаю опыт работы с некоторыми функциями PHP для управления некоторыми полями формы.
Я только что создал настоящую крошечную форму, чтобы увидеть, как может работать форма ООП, но я испытываю странное поведение команды strlen.
Вот код:
форма класса и его крошечный контроль
class Form {
public $nome = '';
public function __construct() {
if(isset($_POST['nome'])){
$this->nome = $_POST['nome'];
}
}
public function body() {
return "<form action=$_SERVER[PHP_SELF] method=post>
<input type=text name=nome value=\"$this->nome\">
<input type=submit value=INVIA><br>";
}
}
class check {
public $nome;
public function __construct() {
$this->nome = $_POST['nome'];
}
public function controllo() {
if ( !empty($this->nome) && strlen($this->nome >= 3) ) {
echo "$this->nome è un nome valido";
return TRUE;
} else {
return FALSE;
}
}
}
Реализация PHP
<?php
require '/classes/class.form';
if(!isset($_POST['nome'])) {
$form=new Form();
echo $form->body();
} else {
$check = new check();
if (!$check->controllo()) {
$form2=new Form();
echo $form2->body();
echo "c'è un errore nei controlli";
} else {
echo "tutto ok!";
}
}
?>
Как видите, проверка должна контролировать, будет ли длина входного текста>=3. Если ложь, форму снова распечатывают с содержанием и сообщают, что что-то не так, в противном случае он говорит, что это правильно.
Бывает, что если я пытаюсь использовать "1" и "2", элемент управления не пропускает его, но когда я пытаюсь использовать "3", кажется, что сценарий не соответствует длине ввода, но его типу и тому дает мне правильное соответствие, даже если длина одного символа.
Более того, если я попробую один алфавитный или число>3 буквенных символов, управление всегда ложно. В чем здесь может быть проблема?
1 ответ
Вы неправильно поставили заключительную скобку.strlen
следует применять только к переменной $this->nome
, не к вашему логическому выражению $this->nome >= 3
,
Ваш оригинальный код: if (!empty($this->nome) && strlen($this->nome >= 3)) {
Что вы намеревались: if ( !empty($this->nome) && strlen($this->nome) >= 3 ) {