Code php petit souci preg_match

Noel-barbu Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   -  
Noel-barbu Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Dites-moi je rencontre une petit erreur PHP et j'aimerais savoir comment régler ça, j'ai un site web en PHP avec une include qui fais appelle a une page PHP contenant ceci :

<?php
$message1 ='opera';
$message2 ='firefox';
$message3 ='Internet Explorer';
$message4 ='inconnu';

$style_page_firefox='<link href="dHUveS9lc3QvcGFzL2R1L3RvdXQvQWxjYXNhcmQhLw==/page.aspx"';
$style_page_opera=' <link href="dHUveS9lc3QvcGFzL2R1L3RvdXQvQWxjYXNhcmQhLw==/page.aspx" ';


if (ereg("^Opera", $_SERVER["HTTP_USER_AGENT"])) {
echo $style_page_opera;
echo $message1;
}
else {
echo $style_page_firefox;
echo $message4;
}

Le problème que je rencontre est que 1 le code PHP ne détecte pas le navigateur et 2 le considère toute suite comme un navigateur inconnue alors que je suis sous opera, en affichant l'erreur suivantes:

Deprecated:  Function ereg() is deprecated in config/verification.php on line  52

la ligne 52 du fichier verification.php correspond à ceci:

if (ereg("^Opera", $_SERVER["HTTP_USER_AGENT"])) {

J'ai regarder sur le web que l'erreur pourrais etre du a erreg qui n'est pas supporter dans la version 5.3 de PHP mais quand je le remplace par preg_match() ça me fais pareil

Deprecated:  Function preg_match(): No ending delimiter in config/verification.php on line  52

La version de mon serveur est PHP 5.4.27

j'ai tenter par la même occasion ceci :

$opera='^Opera';
if (preg_match('/' .$opera. '/', $_SERVER["HTTP_USER_AGENT"])) {
echo $style_page_opera;
echo $message1;
}
$firefox='^Firefox';
if (preg_match('/' .$firefox. '/', $_SERVER["HTTP_USER_AGENT"])) {
echo $style_page_firefox;
echo $message2;
}
else {
echo $style_page_firefox;
echo $message4;
}

Plus de message d'erreur cette fois-ci mais ne reconnais pas le navigateur et donc applique la valeur par default.

D'où le fait que je mette echo $message2 .... pour vérifier sur quel navigateur il le reconnais.

Merci de votre aide.
A voir également:

1 réponse

Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
 
Bonjour,
Fais un p'tit echo $_SERVER["HTTP_USER_AGENT"] pour savoir exactement ce qu'il y a dedans.

Pour le moment tu demande (dans le cas d'Opera) que le chaîne commence par Opera (Sensible à la casse.), ce n'est peut-être tout simplement pas le cas.
0
Noel-barbu Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   2
 
ok je reguarde ça de suite
0
Noel-barbu Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   2
 
et bien je n'est rien qui s'affiche ...
0
Nhay Messages postés 838 Date d'inscription   Statut Membre Dernière intervention   126
 
Tu est sûr ? Tu n'étais pas dans un if ?
Sinon, test avec un autre navigateur pour voir si ça viens du serveur ou de ton navigateur.
0
Noel-barbu Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   2
 
je vais vérifier ...
0
Noel-barbu Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   2
 
voilà ce que ça me met

Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 OPR/22.0.1471.70

et voilà mon code php


/* echo $_SERVER["HTTP_USER_AGENT"]; */

$Firefox='^Firefox';
$Opera='^Mozilla 5';

if (preg_match('/' .$Firefox. '/', $_SERVER["HTTP_USER_AGENT"])) {
echo $style_page_firefox;
echo $message2;
}
if (preg_match('/'.$Opera.'/', $_SERVER["HTTP_USER_AGENT"])) {
echo $style_page_opera;
echo $message1;
}
else {
}
0