2012-03-01 52 views
8

所以我有一个页面标题是Magento模板的一部分;我希望它显示2个选项中的1个,具体取决于URL的内容。如果URL是选项1,显示标题1.如果URL为别的,显示标题2,这是我想出了,但它使我的页面崩溃:PHP如果URL等于这个,然后执行操作

<div class="page-title"> 
<h1><?php 
$host = parse_url($domain, PHP_URL_HOST); 
if($host == 'http://domain.com/customer/account/create/?student=1') { 
echo $this->__('Create an account if you are a Post Graduate Endodontic Resident and receive our resident pricing. Please fill in all required fields. Thank you!') 
} 
else 
{ 
echo $this->__('Create an Account') 
} 
?></h1> 
</div> 

人有什么想法?

编辑:所以它应该看起来像这样?

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
if($host == 'http://domain.com/customer/account/create/?student=1') 
+1

“使我的页面崩溃”是什么意思?你是否收到错误信息?更进一步:你在哪里定义了变量$ domain? – 2012-03-01 20:13:45

+0

在页面的这部分加载之前的一切,然后停止。没有错误信息 – miles 2012-03-01 20:32:19

+0

我从这个线程得到了$域:http://stackoverflow.com/questions/1122261/php-check-if-domain-equals-value-then-perform-action – miles 2012-03-01 20:33:13

回答

22

您是否正在寻找该页面当前所在的网址?您错误地使用parse_url;即如果您只想获取主机或域名,即只有“dev.obtura.com”。看起来你想要的不仅仅是这些。另外,您从不设置$domain变量,所以parse_url()不知道如何处理它。因此,现在,您的if声明将始终返回“创建帐户”。

相反,与$_SERVER变量设置$host

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

你也将需要删除的 “http://” 从您的支票 - $host将只包含一切后的 “http://”

由于Aron Cederholm建议,您需要在您的回声语句的末尾添加分号(;)。

所以,你的PHP代码应该是这样的:

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
if($host == 'domain.com/customer/account/create/?student=1') 
{ 
    echo $this->__('Create an account if you are a Post Graduate Endodontic Resident and receive our resident pricing. Please fill in all required fields. Thank you!'); 
} 
else 
{ 
    echo $this->__('Create an Account'); 
} 
+0

看我上面的编辑 – miles 2012-03-01 20:25:06

+0

@miles编辑我的回答是包含您的观察结果,其他人将会看到答案。 – 2012-03-01 20:47:44

4

我不知道您要提取的域名权。我不是很了解parse_url,而且您还没有向我们展示$domain的定义。

通常情况下,如果我想获得域名,我会这样做:$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']然后剩下的代码。

如果,否则陈述似乎对我来说是合法的,所以我会尝试上述并看看如何。 ;)

编辑:哎呀,约翰打我。 :)

+0

看到我上面的编辑。我尝试过,但得到了和以前一样的结果。 – miles 2012-03-01 20:34:51

3

您应该在您的if-else内部的语句中添加分号。

if($host == 'http://dev.obtura.com/customer/account/create/?student=1') { 
    echo $this->__('Create an account if you are a Post Graduate Endodontic Resident and receive our resident pricing. Please fill in all required fields. Thank you!'); 
} 
else 
{ 
    echo $this->__('Create an Account'); 
} 
+0

页面不再崩溃,但语句不起作用。我仍然得到第二个'创建帐户'标题 – miles 2012-03-01 20:39:11

+1

尝试回显$主机以查看您的自我为什么它不等于您想要的网址。 – 2012-03-01 20:42:00

+0

@miles你是否按照我的建议尝试设置$ host? – 2012-03-01 20:42:36

相关问题