2010-08-13 87 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