2011-08-29 83 views
1

当我测试看看我的表单中的textarea是否为空来做重定向,所以它不会在php中提交它,它不起作用。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表中的空值。

我做了一些研究,似乎还有一些人有这个问题,但我还没有看到答案。

+5

添加var_d ump($ _ POST ['message'])检查之前,看看它包含的是什么 – Pierre

+0

'var_dump($ _ POST)'显示什么? –

+0

你有做'var_dump($ _ POST ['message']);'确保它不是空的? – Einacio

回答

2

您可能在字符串中有一些空格,而trim()没有去除空格。

对它做一个strlen()以查看发生了什么,然后逐字节地记录它(http://stackoverflow.com/questions/591446/how-do-i-get-the-byte-values-对的一字符串中的PHP)。你能想到

的一件事是,以确保您的textarea没有在标记的内容(空格,linkebreaks,等等),就像这样:

<textarea></textarea> 
+0

这听起来很有前途! – carlgcoder

2

我敢肯定你的最后尝试将工作,如果你做得对,这:

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

...是一个语法错误。 empty是一种语言结构,不接受表达式。尝试:

$message = isset($_POST['message']) ? trim($_POST['message']) : ''; 
if (empty($message)) { 
    // $_POST['message'] is empty 
} 
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(); 
} 
相关问题