2010-04-22 50 views
1

好吧,說我有一個網頁的網址:URL.com/checkout/completed,我怎麼能建立一個if語句來執行:如何確定使用php/smarty的網站的路徑?

<if "This page has url of checkout/completed"> 

No Content 

<else> 

Content 

</if> 

有沒有辦法?一個簡單的方法,我的php/smarty-fu缺乏..很多。

編輯:

{if $smarty.server.REDIRECT_URL eq 'http://www.euroworker.no/checkout/completed'} 
&nbsp; 
{else} 
<div id="scrollwrap"> 
    <div class="scrollFieldContent"> 

Scrolled content 
     </div> 

<div class="probetalings">Velg betalingsmåte</div> 

{include file="/choosePaymentMethod.tpl"} 
</div> 

{/if} 

感謝。

回答

2

看一看$_SERVER['REQUEST_URI'];$_SERVER['REDIRECT_URL'];

if($_SERVER['REDIRECT_URL'] == 'checkout/completed') { 
    echo 'Some content'; 
} 

在智者:

{if $smarty.server.REDIRECT_URL eq 'checkout/completed'} 
Some content 
{/if} 

如果你沒有REDIRECT_URL集,並使用REQUEST_URI,你可能想使用strstr,而不是典型的如果您只想匹配該URI而忽略可能發送的任何附加參數,或者按照@Pekka建議的SCRIPT_NAME

if(strstr($_SERVER['REQUEST_URI'], 'checkout/completed')) { 
    echo 'Some content'; 
} 

編輯:嘗試:

{if $smarty.server.REQUEST_URI eq '/checkout/completed'} 
+0

一個完美的答案,但爲什麼'REDIRECT_URL'?當我在我的WAMP設置中調用PHP腳本時,它沒有設置。這不僅適用於有某種類型的重定向嗎? – 2010-04-22 11:30:38

+0

@Pekka - 我的設置有一些原因。如果OP沒有'REDIRECT_URL',我另外投入'REQUEST_URI'。可能與mod_rewrite和我的ZF設置有關。 – karim79 2010-04-22 11:32:52

+0

@karim我明白了。請注意,雖然'REQUEST_URI'將包含任何傳遞的GET參數:'/ checkout/completed?a = b&c = d&e = f',您在進行比較時需要考慮這一點。 – 2010-04-22 11:33:51

2

我寧願SCRIPT_NAME將返回完整的請求路徑,但不喜歡REQUEST_URI查詢字符串一樣。

if ($_SERVER["SCRIPT_NAME"] == "/checkout/completed") 
...... 
+0

我不知道'不明白你的腳本名是什麼意思,我是否需要在腳本名上添加另一個腳本? – Kyle 2010-04-22 11:33:32

+0

@Kyle抱歉,不是,這是關於$ _SERVER變量使用的問題。 web服務器,通過'$ _SERVER'數組在每一個腳本中都可用,'SCRIPT_NAME'就是其中之一,它有幾個非常相似的變量,但是在不同的情況下(有時是服務器設置),它們的行爲是不同的。 ..)'條件如上面引用 – 2010-04-22 11:34:57

+0

感謝您的解釋,我應該回家學習PHP更多 +1 – Kyle 2010-04-22 11:47:57