2015-06-30 53 views
-2

我做的代码块:页眉位置PHP

$tag = $_GET['tag']; 

if ($_SERVER[HTTP_REFERER'] == 'http://sitename.com/portfolio' || $_SERVER['HTTP_REFERER'] == 'sitename.com/tags/?tagname=' . $tag) : ?> 

<figure class="folio-item"> 
    <img src="<?php echo $mod->src; ?>" alt=""> 
</figure> 

<?php else : ?> 
    <?php header('http://sitename.com/portfolio'); ?> 
<?php endif ?> 

因此,如果声明是真实的它使数字,这确实工作。 但是当声明不正确时,它给了我一个空文件,而不是标题为sitename.com/portfolio

我该怎么做这项工作?

解决方案:

$tag = $_GET['tag']; 

if ($_SERVER[HTTP_REFERER'] == 'http://sitename.com/portfolio' ||  $_SERVER['HTTP_REFERER'] == 'sitename.com/tags/?tagname=' . $tag) : ?> 

<figure class="folio-item"> 
    <img src="<?php echo $mod->src; ?>" alt=""> 
</figure> 

<?php else : ?> 
    <?php header('Location:http://sitename.com/portfolio'); ?> 
<?php endif ?> 

我添加地点:像布赖恩头功能说。

+1

从合成角度讲,'$ tag = $ _GET ['tag']'缺少一个分号,'$ _SERVER [HTTP_REFERER']'缺少一个引号,并且两者都不可靠。 –

+0

呵呵,我确实发现了问题,分号存在于我的文件中,没有在这里输入。 <?php header('http://sitename.com/portfolio'); ?>必须是<?php header('location:http://sitename.com/portfolio'); ?> – Floeske

+1

然后查看如何使用标题http://php.net/manual/en/function.header.php –

回答

3

,你必须告诉它你设置一个位置,而不是另一头属性

<?php else : ?> 
    <?php header('Location: http://sitename.com/portfolio'); exit; ?> 
<?php endif ?> 

exit;语句告诉它停止执行允许重定向。您还需要确保在重定向之前不会吐出任何html。

+0

是的,谢谢,就是这样!我肯定会使用exit,在重定向原因之前不会去工作 – Floeske

+1

它会在没有退出的情况下工作,但如果浏览器行为异常,可以观察到更多的PHP输出,所以重定向后放置退出总是一个好主意。 –

+0

很高兴我能帮上忙。戴夫是对的,你并不需要它,但是我有问题来自它和'出口;'帮了很多。 –