php - проверить пустую строку с === '' не работает - PullRequest
1 голос
/ 29 августа 2011

Когда я проверяю, является ли текстовое поле в моей форме пустым, чтобы выполнить перенаправление, чтобы оно не отправляло его в php, оно не работает.

Текстовое поле называется $_POST['message'],Я знаю, что переменная существует, потому что если я делаю это утверждение;

if (isset($_POST['message'])) {
    header('Location:/');
    exit();
}

Тогда она всегда перенаправляет обратно на страницу индекса, поэтому переменная должна существовать, хотя если я делаю это;

if (empty($_POST['message'])) {
    header('Location:/');
    exit();
}

Это не работает, также пробовал со всеми тремя комбинациями = / == / ===

if ($_POST['message'] === '') {
    header('Location:/');
    exit();
}

А также ...

if (empty(trim($_POST['message']))) {
    header('Location:/');
    exit();
}

Любые идеи, почему это происходит?И как я могу предотвратить это, мне действительно нужно остановить это, так как я не хочу пустых значений в моей таблице mysql.

Я провел некоторое исследование, и, кажется, у некоторых других людей была эта проблема, но я виделответа пока нет.

Ответы [ 3 ]

2 голосов
/ 29 августа 2011

Я уверен, что ваша последняя попытка сработает, если вы сделаете это правильно, это:

if (empty(trim($_POST['message']))) {
    // ...
}

... - синтаксическая ошибка.empty является языковой конструкцией и не принимает выражения.Попробуйте:

$message = isset($_POST['message']) ? trim($_POST['message']) : '';
if (empty($message)) {
    // $_POST['message'] is empty
}
2 голосов
/ 29 августа 2011

Возможно, в строке есть пробелы, которые не удаляются за счет trim ().

Сделайте на нем функцию strlen (), чтобы увидеть, что происходит, и затем записывайте ее побайтно (/408834/kak-ya-mogu-poluchit-baitovye-znacheniya-stroki-v-php).

Одна вещь, о которой вы могли бы подумать, - убедиться, что в текстовой области нет разметки (пробелы, линкбрейки и т. Д.), Например:

<textarea></textarea>
0 голосов
/ 29 августа 2011

Это будет игнорировать все длины ввода ниже 3 символов:

if (isset($_POST['message']) && strlen(trim($_POST['message'])) < 3) {
    header('Location:/');
    exit();
}

Однако, если вы просто хотите проверить, была ли отправлена ​​форма, попросите кнопку подтверждения:

<input type="submit" name="submit" value="send" />

код php будет

if (!array_key_exists('submit', $_POST)) {
    header('Location:/');
    exit();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...