Redirection PHP pour différents navigateurs

Résolu/Fermé
elpah Messages postés 23 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 15 janvier 2009 - 9 mai 2008 à 11:58
mjmdurand Messages postés 246 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 27 juillet 2013 - 18 juil. 2008 à 19:04
Bonjour,

Dernièrement, j’utilisé un code PHP me permettent de définir mes feuilles CSS en fonction des différents navigateurs …

<?php
if (ereg("MSIE", $_SERVER["HTTP_USER_AGENT"])) {
echo
"<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/1.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/3.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/4.css\" />";
} else if (ereg("^Mozilla/", $_SERVER["HTTP_USER_AGENT"])) {
echo
"<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/1v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/3v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/4v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/5.css\" />";
} else if (ereg("^Opera/", $_SERVER["HTTP_USER_AGENT"])) {
echo
"<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/1v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/3v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/4v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/5.css\" />";
} else {
echo
"<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/1v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/3v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/4v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/5.css\" />";

}
?>

Mais pour un meilleur intégration de mon code en fonction des navigateurs j’ai décidé faire une redirection de pages automatique en fonction du navigateur utilisé en partent d’une base de code du styles

<?php
/* Redirige vers une page ie 6 */
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'indexie.php';
header("Location: http://$host$uri/$extra");
exit;
?>

Mon problème est le suivent comment adapté ce code PHP pour qu’il redirige l’internaute en fonction de son navigateur ?

Comment faire pour que si je surf avec IE je sois rédigé vers la page me consternent et a l’inverse si je surf avec Firefox resté sur cette page si ces une page prévu pour se navigateur … dernier petit problème comment redirigé que les navigateur inférieur a IE 7.

En vous remerciant d’avance pour toute réponse que vous pourriez m’apporter.

11 réponses

t'a 2 solutions : ou t'est pas très bon en php, alors tu fait un dossier pour Ie, un dossier pour Mozilla, un dossier pour Opera et un dossier pour les navigateurs inconnus (on ne sait jamais apres tout), puis tu fait une redirection sur les pages respectives de ces dossiers :

---------------------------------------------------------------------------------------------------------------------------------------------------------------

<?php

//si le navigateur est ie
if (ereg("MSIE", $_SERVER["HTTP_USER_AGENT"]))
{
header (location: indexie.php');
}

//si le navigateur est Mozilla
elseif (ereg("^Mozilla/", $_SERVER["HTTP_USER_AGENT"]))
{
header (location: indexfirefox.php');
}

//si le navigateur est Opera

elseif (ereg("^Opera/", $_SERVER["HTTP_USER_AGENT"]))
{
header (location: indexopera.php');
}

//si le navigateur est inconnu

else
{
header (location: index.php');
}
?>

---------------------------------------------------------------------------------------------------------------------------------------------------------------

Tu t'en doutes, ca devient vite dur a entretenir, c'est pour cela, que je te propose une autre alternative avec des variables :

<?php

//on verifie les navigateurs et on leur attribue une variable propre a chacun

if (ereg("MSIE", $_SERVER["HTTP_USER_AGENT"]))
{
$navigateur=ie;
}

elseif (ereg("^Mozilla/", $_SERVER["HTTP_USER_AGENT"]))
{
$navigateur=mozilla;
}

elseif (ereg("^Opera/", $_SERVER["HTTP_USER_AGENT"]))
{
$navigateur=opera;
}

else
{
$navigateur=inconnu;
}

?>
---------------------------------------------------------------------------------------------------------------------------------------------------------------

puis, on va maintenant afiicher le texte désiré en fonction du navigateur, par exemple les liens css dans le header

<?php

//d'abord, on verifie que $navigateur existe
if (isset ($navigateur))
{

//si le navigateur est ie
if ($navigateur==ie)
{
echo
"<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/1.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/3.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/4.css\" />";
}

//si le navigateur est Mozilla
elseif ($navigateur==mozilla)
{
echo
"<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/1v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/3v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/4v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/5.css\" />";
}

//si le navigateur est Opera
elseif ($navigateur==opera)
{
echo
"<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/1v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/3v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/4v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/5.css\" />";
}

//si le navigateur est inconnu
elseif ($navigateur==inconnu)
{
"<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/1v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/3v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/4v2.css\" />
<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"./CSS/5.css\" />";
}
}
?>

----------------------------------------------------------------------------------------------------------------------------------------------------------------

<?php

//maintenant, supposons que l'on veut afficher du texte a l'écran (quoi de plus normal ?) en fonction du navigateur

//d'abord, on verifie que $navigateur existe


if (isset ($navigateur))
{

if ($navigateur==ie)
{
echo
"votre texte ici avec les balises div, p, ect...ect...ect...";
}

elseif ($navigateur==mozilla)
{
echo
"votre texte ici avec les balises div, p, ect...ect...ect...";
}

elseif ($navigateur==opera)
{
echo
"votre texte ici avec les balises div, p, ect...ect...ect...";
}

elseif ($navigateur==inconnu)
{
echo
"votre texte ici avec les balises div, p, ect...ect...ect...";
}
}
?>

A savoir que le texte devra être entré après chaque "echo" (souvent, un simple copier/coller suffit. De plus, le code est souvent le même quel que doit le navigateur).

La second méthode permet en fait un affichage conditionnel de la page. Pratique a condition de bien connaitre le php.


Petites notes :
*pense a utiliser la concaténation, c'est bien plus pratique que les guillemets, crois moi ! si tu veut l'apprendre, je te conseille le site du zéro ici : https://openclassrooms.com/fr/courses#ss_part_1

*Qui a dit que le php était facile ? Bonne chance !
8
mjmdurand Messages postés 246 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 27 juillet 2013 44
9 juin 2008 à 14:51
//d'abord, on verifie le navigateur
if (ereg("MSIE", $_SERVER["HTTP_USER_AGENT"]))
{
//ensuite, on verifie la version
if (ereg("7", $_SERVER["HTTP_USER_AGENT"]))
{
$navigateur=ie7;
}
if (ereg("6", $_SERVER["HTTP_USER_AGENT"]))
{
$navigateur=ie6;
}
}



Bien entendu, il faudra adapter le code a la nouvelle variable.
3
elpah Messages postés 23 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 15 janvier 2009
12 juin 2008 à 18:35
Merci pour ta réponse
0
mjmdurand Messages postés 246 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 27 juillet 2013 44
17 juin 2008 à 21:58
petite modif importante:

//d'abord, on verifie le navigateur
if (ereg("MSIE", $_SERVER["HTTP_USER_AGENT"]))
{
//ensuite, on verifie la version
if (ereg("MSIE 7", $_SERVER["HTTP_USER_AGENT"]))
{
$navigateur=ie7;
}
if (ereg("MSIE 6", $_SERVER["HTTP_USER_AGENT"]))
{
$navigateur=ie6;
}
}
2
elpah Messages postés 23 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 15 janvier 2009
23 juin 2008 à 13:41
Salut

je voudrai simplifié mon code php en utilisent <? include("./IE.php"); ?> a la place de mettre mon code html en echo mais comment l'intégrer a ton code ???

Merci pour l'aide que tu ma déjà apporté...
0
mjmdurand Messages postés 246 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 27 juillet 2013 44
30 juin 2008 à 10:34
je te redonne le code que j'avais écrit dans un post un peu plus au dessus qui devrait repondre a ta question :

//maintenant, supposons que l'on veut afficher du texte a l'écran (quoi de plus normal ?) en fonction du navigateur

//d'abord, on verifie que $navigateur existe

if (isset ($navigateur))
{

if ($navigateur==ie)
{
include ('votrefichier');
}

elseif ($navigateur==mozilla)
{
include ('votrefichier');
}

elseif ($navigateur==opera)
{
include ('votrefichier');
}

elseif ($navigateur==inconnu)
{
include ('votrefichier');
}
}
?>
2

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

Posez votre question
mjmdurand Messages postés 246 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 27 juillet 2013 44
7 juin 2008 à 21:50
je pense aussi utiliser cette fonction ... seulement, voilà, je suis en train de l'étudier.

Dès que j'ai du nouveau, je previens
1
si tu veut me contacter, mon nouvel identifiant sur ce site est mjmdurand, ne sois pas surpris !
0
mjmdurand Messages postés 246 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 27 juillet 2013 44
2 juin 2008 à 21:09
des questions ?
0
elpah Messages postés 23 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 15 janvier 2009
7 juin 2008 à 14:36
je te remercie pour ta réponse, je suis désolé de te répondre si tard (petit problème de FAI) j'ai suivi tes conseilles et tous marche parfaitement sauf qu'il pourrai être intéressent de différencié IE 7 des version inférieures... en gros je voudrai faire apparaitre un encadré (et d'autre éléments) en fonction des versions de IE et des autres navigateurs.

Merci du temps que tu as pris pour me répondre.
0
mjmdurand Messages postés 246 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 27 juillet 2013 44
24 juin 2008 à 17:06
euh... ca depend de ce que tu veut inclure en fait...

si c'est un menu ou une image alors la, ca risque d'etre dur sinon si c'est pour afficher du texte, alors la ca devrait marcher.

Pour les images, il faudrait que tu crée une page par fraction de code en fait...

A toi de voir la meilleure solution.
0
elpah Messages postés 23 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 15 janvier 2009
24 juin 2008 à 20:53
se serai pour affichez du texte contenu dans une page php en fonction du navigateur mais j'ai du mal a voire comment le faire, comment inclure <? include("./IE.php"); ?> dans le code que tu ma fourni ??
0
elpah Messages postés 23 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 15 janvier 2009
8 juil. 2008 à 22:31
désolé du retard sa fonction parfaitement, je te remerci.
0
Bonjour,

j'ai essayer de copier le code et je n'arrive à le faire marcher...

le echo foire..
0
mjmdurand Messages postés 246 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 27 juillet 2013 44
18 juil. 2008 à 19:04
la fonction echo, je l'utilise avec la concanectation (ou quelque chose du genre) .

Le problème peut provenir du fait que dans ton echo il y ait ce genre de texte :


echo 'mon pseudo est 'mjmdurand'';


php ne comprendra pas. Pour qu'il comprenne ces instruction, il faut taper le code suivant :


echo 'mon pseudo est \'mjmdurand\'';


pour les guillemets, il n'y a rien a faire par contre :


echo 'mon pseudo est "mjmdurand"';
0
votre de mote passe
-1
elpah Messages postés 23 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 15 janvier 2009
9 mai 2008 à 15:38
je ne voie pas la pertinence de la reponce
0