web-dev-qa-db-fra.com

PHP si l'URL est égale à cela, effectuez l'action

J'ai donc un titre de page qui fait partie d'un modèle Magento; Je souhaite qu'il affiche 1 des 2 options, en fonction de l'URL. Si l'URL est l'option 1, affichez le titre 1. Si l'URL est autre chose, affichez le titre 2. Voici ce que j'ai trouvé, mais cela fait planter ma page:

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

Quelqu'un a des idées?

EDIT: Donc ça devrait ressembler à ça?

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

Recherchez-vous l'URL sur laquelle se trouve actuellement la page? Vous utilisez parse_url dans le mauvais sens; c'est-à-dire si vous souhaitez uniquement obtenir l'hôte ou le domaine, c'est-à-dire uniquement "dev.obtura.com". Il semble que vous en vouliez plus que cela. De plus, vous ne définissez jamais la variable $domain, Donc parse_url() ne sait pas quoi en faire. Ainsi, telle qu'elle est maintenant, votre instruction if renverra toujours "Créer un compte".

Au lieu de cela, définissez $Host Avec $ _ SERVER variables:

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

Vous devrez également supprimer le "http: //" de votre vérification - $Host Ne contiendra que tout après "http: //"

Comme Aron Cederholm l'a suggéré, vous devez ajouter des points-virgules (;) À la fin de vos instructions d'écho.

Ainsi, votre code PHP devrait ressembler à ceci:

$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');
}
23
Luke Shaheen

Je ne suis pas sûr que vous récupériez le domaine correctement. Je ne comprends pas vraiment beaucoup parse_url, et vous ne nous avez pas montré ce que $domain est défini comme.

Normalement, si je veux obtenir le nom de domaine, je ferais ceci: $Host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] Puis le reste de votre code.

Que si, sinon, la déclaration me semble légitime, alors j'essaierais ce qui précède et voir comment cela se passe. ;)

Edit: Oups, John m'a battu. :)

4
Jack

Vous devez ajouter des points-virgules à vos instructions dans votre 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');
}
4
Aron Cederholm