2011-08-29 82 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(); 
} 
相關問題