Condition (if) + Variable ($g_defaut)

Résolu/Fermé
gregory2710 - 11 juin 2011 à 12:13
 gregory2710 - 11 juin 2011 à 15:30
Bonjour,

J'ai une petite question. J'ai actuellement la variable suivante :

$config['g_defaut']   = "filles";            // Syn. of the home


Serait-il possible de faire une condition en PHP :

SI = L'URL du site est 'www.coucou-les-garcons.com', 'garcons'
SI = L'URL du site est 'www.coucou-les-filles.com', 'filles'

Je sais qu'il est possible de récupérer l'URL par $_SERVER['SERVER_NAME'], mais pour faire la condition et monter le tout... Est-ce que quelqu'un peut-il m'aider ?

Merci beaucoup ! :)

9 réponses

Utilisateur anonyme
11 juin 2011 à 12:34
if(preg_match("#fille#ig",$_SERVER['SERVER_NAME'])){
 $config['g_defaut']   = "filles";
}elseif(preg_match("#garon#ig",$_SERVER['SERVER_NAME'])){
 $config['g_defaut']   = "garcons";
}

Explications :
if(Condition1){Action1}elseif(Condition2){Action2} : Si la 1ère condition est TRUE, on exécute l'action 1; sinon, on teste la condition 2,...
preg_match("#fille#ig",$_SERVER['SERVER_NAME']) : renvoie TRUE s'il a trouvé "fille" dans la chaîne $_SERVER['SERVER_NAME'], FALSE sinon.

C'est ce que tu cherchais ?
0
gregory2710
11 juin 2011 à 12:40
Je comprends pas vraiment ton script là...

Où est le comparaison de l'URL ?

Je voudrais que SI le visiteur est sur :

www.filles.com / ce soit : $config['g_defaut'] = "fille";

ou SI le visiteur est sur :

www.garcon.com / ce soit : $config['g_defaut'] = "garcon";
0
Utilisateur anonyme
11 juin 2011 à 12:49
Ouai ouai c'est exactement ça ! La comparaison des url est dans la fonction preg_match().

Alors, explications plus détaillées :
if(preg_match("#fille#gi",$_SERVER['SERVER_NAME'])){ /* = SI on trouve le mot fille dans le domaine ($_SERVER['SERVER_NAME'])...*/
$config['g_defaut'] = "fille"; /* = ALORS on définit $config["g_defaut"] comme "fille"*/
}elseif(preg_match("#garcon#gi",$_SERVER['SERVER_NAME'])){ // = SINON, SI on trouve le mot garcon dans le domaine...*/
$config['g_defaut'] = "garcon"; /* = ALORS on définit $config["g_defaut"] comme "garcon"*/
}

Donc pour résumer, on cherche dans l'url le mot fille;
- S'il est trouvé : on définit ta variable
- S'il n'est pas trouvé : on cherche dans l'url le mot garcon;
* S'il est trouvé : on définit la variable

Ca va mieux comme ça ?
0
gregory2710
11 juin 2011 à 13:42
Merci, mais dans ton script, j'entre où le "www.garcon.com" et "www.fille.com" ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gregory2710
11 juin 2011 à 13:45
Lorsque je mets :

if(preg_match("#www.fille.com#ig",$_SERVER['SERVER_NAME'])){
 $config['g_defaut']   = "fille";
}elseif(preg_match("#www.garcon.com#ig",$_SERVER['SERVER_NAME'])){
 $config['g_defaut']   = "garcon";
}


J'obtiens l'erreur suivante sur ma page :

Warning: preg_match() [function.preg-match]: Unknown modifier 'g' in /home/httpd/vhosts/*.com/httpdocs/includes/config.php on line 41

Warning: preg_match() [function.preg-match]: Unknown modifier 'g' in /home/httpd/vhosts/*.com/httpdocs/includes/config.php on line 43
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
11 juin 2011 à 13:52
Salut,

Je ne connait pas les 'modifiers' dans les expressions régulières, mais tu as mis "www.garcon.com" dans le premier argument de preg_match();

Erreur... Dans le code que rd_9 t'as donné, il a mis "#garcon#ig", et pas "#www.garcon.com#i" ; Laisse le code que l'on te donne.

Il faut aussi savoir : le nom du domaine sera coucou-les-garcons.com ou bien garcon.com ou alors les deux ??

Si c'est l'un OU l'autre alors on peut se passer des regex et comparer simplement, sinon il faudra en effet les utiliser.
0
gregory2710
11 juin 2011 à 13:55
Salut Bilow,

Je n'ai pas modifié le code qui m'a été donné qui est le suivant :

if(preg_match("#fille#ig",$_SERVER['SERVER_NAME'])){
 $config['g_defaut']   = "filles";
}elseif(preg_match("#garon#ig",$_SERVER['SERVER_NAME'])){
 $config['g_defaut']   = "garcons";
}


Et qui indique bien "#ig". Par ton messge, je déduis donc qu'il fait mettre "#i".

Le seul et unique nom de domaine serait "garcon.com".
0
Bilow Messages postés 1022 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
11 juin 2011 à 15:08
Salut,

On ne t'a donné que des #filles#, et tu as mis #www.filles.com# ; Enfin c'est pas grave.

$_SERVER['SERVER_NAME'] peut donner deux valeurs différentes pour un même domaine :
- garcon.com
- www.garcon.com

On va donc oublier les Regex, et simplement comparer.

// Soit $genre qui vaudra 'fille' ou 'garcon'
$nom = $_SERVER['SERVER_NAME'];

if($nom == "garcon.com" || $nom == "www.garcon.com"){
$genre = "garcon";
}

else if($nom == "filles.com" || $nom == "www.filles.com"){
$genre = "fille";
}

else{
// Erreur...
$genre = "ERR";
}

echo "Le genre est : $genre";

Les Regex, c'est bien, mais il vaut toujours mieux faire plus simple ;-)
0
gregory2710
11 juin 2011 à 15:30
Le problème est résolu. Merci beaucoup à tous ! :)
0