当我测试我的表单中的textarea是否为空以进行重定向,因此它不会在php中提交它时,它不起作用。
textarea命名为$_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表中使用空值。
我做了一些研究,似乎其他人有这个问题,但我还没有看到答案。
答案 0 :(得分:2)
你可能在字符串中有一些空格,而这些空格不会被trim()去掉。
在它上面做一个strlen()来看看是什么,然后逐字节地记录它(http://stackoverflow.com/questions/591446/how-do-i-get-the-byte-values-of -a-字符串中的PHP)。
您可以考虑的一件事是确保您的textarea在标记中没有任何内容(空格,符号,等等),如下所示:
<textarea></textarea>
答案 1 :(得分:2)
如果你做得对,我很确定你的最后一次尝试会起作用,这个:
if (empty(trim($_POST['message']))) {
// ...
}
...是语法错误。 empty
是一种语言结构,不接受表达式。尝试:
$message = isset($_POST['message']) ? trim($_POST['message']) : '';
if (empty($message)) {
// $_POST['message'] is empty
}
答案 2 :(得分:0)
这将忽略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();
}