Redirection PHP pour différents navigateurs

Résolu
elpah Messages postés 23 Statut Membre -  
mjmdurand Messages postés 246 Date d'inscription   Statut Membre Dernière intervention   -
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.
Configuration: Ubuntu Gutsy 7.10
Firefox 2.0.0.14

11 réponses

  1. mjm
     
    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
  2. mjmdurand Messages postés 246 Date d'inscription   Statut Membre Dernière intervention   44
     
    //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
    1. elpah Messages postés 23 Statut Membre
       
      Merci pour ta réponse
      0
  3. mjmdurand Messages postés 246 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
    1. elpah Messages postés 23 Statut Membre
       
      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
  4. mjmdurand Messages postés 246 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mjmdurand Messages postés 246 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
  7. mjm
     
    si tu veut me contacter, mon nouvel identifiant sur ce site est mjmdurand, ne sois pas surpris !
    0
  8. mjmdurand Messages postés 246 Date d'inscription   Statut Membre Dernière intervention   44
     
    des questions ?
    0
    1. elpah Messages postés 23 Statut Membre
       
      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
  9. mjmdurand Messages postés 246 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
    1. elpah Messages postés 23 Statut Membre
       
      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
  10. elpah Messages postés 23 Statut Membre
     
    désolé du retard sa fonction parfaitement, je te remerci.
    0
    1. linoa
       
      Bonjour,

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

      le echo foire..
      0
  11. mjmdurand Messages postés 246 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
  12. mote passe
     
    votre de mote passe
    -1
    1. elpah Messages postés 23 Statut Membre
       
      je ne voie pas la pertinence de la reponce
      0