2015-06-30 50 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

很高興我能幫上忙。戴夫是對的,你並不需要它,但是我有問題來自它和'出口;'幫了很多。 –