Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Trim() Не работает! Почему?

Plex Lomakin Знаток (294), на голосовании 3 года назад
МОЙ КОД

Кусок html










<?php
print_r($_POST);

$name = $_POST['name'];
$email = $_POST['email'];
$pass = $_POST['password'];
$message = $_POST['message'];

if(trim($name) == "" || trim($email) == "" || trim($pass) == "" || trim($message) == "" ){
echo "Введите данные";

}
else if(strlen(trim($name) <= 1) ) {
echo "Такого имени несуществует!";
}

else if(trim($name) == "") {
echo "Вы не ввели имя пользователя!";
}

?>

В строчке if(trim($name) == "" || trim($email) == "" || trim($pass) == "" || trim($message) == "" он выводит "Введите данные" хотя я всё заполняю!
Голосование за лучший ответ
Shang Tsung Оракул (60017) 3 года назад
сделай var_dump(trim($name)) и для остальных переменных - посмотришь что там
Plex LomakinЗнаток (294) 3 года назад
Он вывел bool(true)
Shang Tsung Оракул (60017) Plex Lomakin, по идее должен вывести строку
Plex LomakinЗнаток (294) 3 года назад
Потом чтоли делать ещё if на тру или фолз этих значений?
Plex LomakinЗнаток (294) 3 года назад
Но вот только тру означает что переменная пуста, но это не так
Shang Tsung Оракул (60017) Plex Lomakin, попробуй так $name = trim($_POST['name']); и для остальных переменных. И проверять уже пеерменную без трима
Лайт Ягами Искусственный Интеллект (309883) 3 года назад
Потому что пользователь может и не отправить эти переменные) А trim на вход принимает строку, а не абы что)
Сосиска в тесте Мыслитель (5514) 3 года назад
У тебя ерунда какая то в коде. trim удаляет пустоту в начале и в конце строк. Тебе надо empty использоовать. А это не тоже самое что trim.
Андрей Панарин Искусственный Интеллект (249323) 3 года назад
Обратите внимание на эту строчку:
if(strlen(trim($name) <= 1) )

Что тут происходит?
trim($name) — возвращает обгрызенную строку.
trim($name) <= 1 — идет сравнение строки с числом 1, результат булевский — true или false.
strlen(trim($name) <= 1) — функции strlen в качестве аргумента подается булевский аргумент — true или false.

Полагаю, имелось в виду strlen(trim($name)) <= 1.
Это не относится к вопросу. Просто хочу восстановить справедливость.
Похожие вопросы