2011-07-25 41 views
0

我這裏有一個很奇怪的問題..

我有我的方式:

<form class="attach" name="attach" method="post" action="main.php"> 
    <label for="aurl">URL:</label> 
    <input type="text" name="aurl" id="aurl" size="50"/> 
    <input type="submit" id="submit" name="submit" value="Submit"/> 
</form> 

如果我做print_r($_POST)我看到它的罰款。

但是,如果我這樣做,在print_r後:

if(!empty($_POST['aurl'])) { 
    $url = $_POST['aurl']; 

我不能使用$_POST['aurl']print_r顯示一個空數組。

有什麼想法可以在這裏發生什麼?

我全碼: http://pastebin.com/Ayt1qCUY

+1

在執行'empty()'之前'print_r($ _ POST)'的輸出是什麼?您需要提供發生這種情況的所有代碼。當你嘗試使用'$ _POST ['aurl']'時會發生什麼? – element119

+1

顯示您的所有代碼。其他事情可能正在發生。 –

+0

你可以發佈更多與$ _POST變量一起工作的代碼嗎?目前看起來沒問題。 – DKSan

回答

1

如果$_POST['aurl']具有的值爲0, 「0」 或 「」,empty($_POST['aurl'])將返回true。我更喜歡使用isset($_POST['aurl'])

+0

我最初使用'isset',但是嘗試'empty',因爲我認爲這導致了問題。 – seth

-5

最好使用isset。如果你想檢查一個字符串爲空,我建議使用strlen。正如Hughes所描述的那樣,對於某些角色來說,空是有問題

+0

這不是問題,它是一個功能,它非常有意義由於PHP評估爲'false',所以在'empty'中有這個功能 –

+3

但是返回「0」完全是錯誤的,因爲它的名字是字符串,並且它不是空的,這就是我稱之爲有問題的原因。 – blottedscience

+0

我不同意我們都知道PHP是垃圾的事實,「0」也是錯誤的,但是你不會建議不要使用'!'運算符來進行布爾檢查,對嗎? –

0

可以使用

echo"url:"; 
print_r($_POST['aurl']); 
die; 

,看看有什麼是aurl然後用

if(isset($_POST['aurl'])) { 
$url = $_POST['aurl']; 
} 
0

如果你要調試POST和GET,請使用的print_r($ _ GET);和print_r($ _ POST);看到所有的POST和GET你可以在操作頁面中使用;-)