2012-03-01 11 views
8

Quindi ho un titolo di pagina che fa parte di un modello di Magento; Mi piacerebbe che visualizzasse 1 delle 2 opzioni, a seconda di cosa sia l'URL. Se l'URL è l'opzione 1, visualizzazione titolo 1. Se l'URL è niente altro, visualizzazione titolo 2. Questo è ciò che mi è venuta, ma sta facendo la mia pagina incidente:PHP se l'URL è uguale a questo quindi eseguire l'azione

<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> 

Qualcuno ha qualche idea?

EDIT: Quindi dovrebbe apparire così?

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

Che cosa significa "rendere la mia pagina in crash"? Hai ricevuto un messaggio di errore? Più avanti: dove hai definito la variabile $ domain? –

+0

Tutto ciò che precede questa parte della pagina viene caricato, quindi si interrompe. Nessun messaggio di errore – miles

+0

Ho ottenuto $ dominio da questo thread: http://stackoverflow.com/questions/1122261/php-check-if-domain-equals-value-then-perform-action – miles

risposta

22

Stai cercando l'URL su cui si trova la pagina? Stai utilizzando parse_url nel modo sbagliato; vale a dire se si desidera ottenere solo l'host o il dominio, ad esempio "dev.obtura.com". Sembra che tu voglia di più. Inoltre, non si imposta mai la variabile $domain, quindi parse_url() non sa cosa fare con esso. Così com'è ora, la tua dichiarazione if restituirà sempre "Crea un account".

Invece, impostare $host con $_SERVER variabili:

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

Sarà inoltre necessario rimuovere il "http: //" dal vostro controllo - $host conterrà solo tutto dopo "http: //"

Come suggerito da Aron Cederholm, è necessario aggiungere punto e virgola (;) alla fine delle istruzioni echo.

Così, il vostro codice PHP dovrebbe essere simile a questo:

$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

Vedere la mia modifica sopra – miles

+0

@miles Modifiche la mia risposta per contenere le tue osservazioni, per gli altri che vengono a vedere la risposta. –

4

io non sono sicuro che stai recupero destra dominio. Non capisco molto bene parse_url, e non ci hai mostrato cosa è definito come $domain.

Normalmente, se desidero ottenere il nome di dominio, farei questo: $host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] Quindi il resto del codice.

Che se, altrimenti, la dichiarazione mi sembra legittima, quindi proverei quanto sopra e vedere come va. ;)

Modifica: Oops, John mi ha battuto. :)

+0

Vedere la mia modifica sopra. L'ho provato, ma ho ottenuto lo stesso risultato di prima. – miles

3

È necessario aggiungere il punto e virgola alle istruzioni all'interno del proprio if.

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

La pagina non si blocca più, ma l'istruzione non funziona. Sto ancora ottenendo il secondo titolo "Crea un account" – miles

+1

Prova a echeggiare $ host per capire perché non è uguale all'URL desiderato. –

+0

@miles Hai provato a impostare $ host come suggerivo? –

Problemi correlati