2010-08-13 96 views
0

似乎不能正確使用語法來得到它:PHP語法問題與頭

<?php 
if isset $_POST['tutorial'] { 
    header('Location: /phonebooks?tutorial=1b'); 
} else { 
    header('Location: /phonebooks?phonebook_created=1'); 
}; 
?> 

我在做什麼錯?

+4

這是基本的語法。在我看來,在繼續嘗試用PHP編寫代碼之前,你應該仔細閱讀它。這會讓事情在未來更順利。 – 2010-08-13 15:12:11

回答

3

您在if條件和$_POST['tutorial']附近缺少括號,這是isset的一個參數。它應該是:

<?php 
if (isset($_POST['tutorial'])) 
{ 
    header('Location: /phonebooks?tutorial=1b'); 
} 
else 
{ 
    header('Location: /phonebooks?phonebook_created=1'); 
} 
?> 

正如在評論中指出,需要一個絕對URL的Location頭以及(所以不是/phonebooks?tutorial=1b,你需要指定http(s)://yourdomain.com/phonebooks?tutorial=1b)。

+3

根據RFC的規定,'Location:'標頭應該是完整的URI(即它們應該以'http://'或'https://'開頭。 – TRiG 2010-08-13 15:12:08

+0

單個條件'if'聲明?這是一段時間,因爲我已經剔出了PHP技能 – 2010-08-13 15:12:58

+0

@Anthony是的,括號是所有需要條件('if','for','while'等)的php關鍵字的條件。 ) – 2010-08-13 15:13:47

3

好的,首先,您需要使用括號。多個括號。

第一組需要去各地if結構的內容:

if (...) { 

第二組需要去各地isset()函數調用:

isset($_POST['tutorial']) 

所以該行變爲:

if (isset($_POST['tutorial'])) { 

您還有其他問題。不要在相關網址中使用位置標頭。它違背了HTTP規範。總是使用絕對URL,否則你可能會破壞一些網絡服務器(我知道IIS討厭它)或瀏覽器...

+0

+1的解釋。 – 2010-08-13 15:31:38