begin process at 2010 03 21 22:16:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

detection navigateur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

detection navigateur

vendredi 3 août 2007 à 14:32:16 | detection navigateur

gaillardo

Bonjour à tous,

J'ai un petit problème avec une détection de navigateur avec getenv("HTTP_USER_AGENT") qui fonction bien en local avec easyPHP mais lorsque je la met sur le serveur plus rien ne marche.

Voici le code :

    $nav = getenv("HTTP_USER_AGENT");
    $nav=substr($nav, 0, 11);
    echo $nav;
    if ($nav == "Mozilla/4.0")
    {
    
        if(!isset($_GET['r']))
        {
        echo "<script language=\"JavaScript\">
        <!--
        document.location=\"$PHP_SELF?r=1&Largeur=\"+screen.width+\"&Hauteur=\"+screen.height;
        //-->
        </script>";
        }
        else
        {   
            // Code à afficher en cas de détection de la résolution d'affichage
            if(isset($_GET['Largeur']) && isset($_GET['Hauteur']))
            {
                if((($_GET['Largeur'])=="1280" ) && ($_GET['Hauteur'])=="1024")// Résolution détectée
                   {
                   ?><link rel="stylesheet" type="text/css" href="css/1280x1024-ie_dominique.css" ><?php
                   }
                elseif((($_GET['Largeur'])=="1024" ) && ($_GET['Hauteur'])=="768")// Résolution détectée
                   {
                   ?><link rel="stylesheet" type="text/css" href="css/1024x768-ie_dominique.css" ><?php
                   }
                else
                {
                   
                  ?><link rel="stylesheet" type="text/css" href="css/1024x768-ie_dominique.css" >
                  <script language="JavaScript">
       
        alert("Résolution inappropriée ! Résolution conseillée : 1280x1024 ou 1024x768");
       
        </script>;<?php
                }
            }
            else
            {
                echo "Résolution non détectée !";
            }
        }   
    }
    if ($nav == "Mozilla/5.0")
    {
        if(!isset($_GET['r']))
        {
        echo "<script language=\"JavaScript\">
        <!--
        document.location=\"$PHP_SELF?r=1&Largeur=\"+screen.width+\"&Hauteur=\"+screen.height;
        //-->
        </script>";
        }
        else
        {   
            // Code à afficher en cas de détection de la résolution d'affichage
            if(isset($_GET['Largeur']) && isset($_GET['Hauteur']))
            {
                if((($_GET['Largeur'])=="1280" ) && ($_GET['Hauteur'])=="1024")// Résolution détectée
                   {
                   ?><link rel="stylesheet" type="text/css" href="css/1280x1024-dominique.css" ><?php
                   }
                elseif((($_GET['Largeur'])=="1024" ) && ($_GET['Hauteur'])=="768")// Résolution détectée
                   {
                   ?><link rel="stylesheet" type="text/css" href="css/1024x768-dominique.css" ><?php
                   }
                else
                {
                   
                  ?><link rel="stylesheet" type="text/css" href="css/1024x768-dominique.css" >
                  <script language="JavaScript">
       
        alert("Résolution inappropriée ! Résolution conseillée : 1280x1024 ou 1024x768");
       
        </script>;<?php
                }
            }
            else
            {
                  echo "Résolution non détectée !";
            }
        }   
    }




Si quelqu'un peu me mettre sur la voie se serai cool. Merci d'avance et à bientôt.
vendredi 3 août 2007 à 14:45:41 | Re : detection navigateur

J_G

Salut,

Tonpb est là :

document.location=\"$PHP_SELF?r=1&Largeur=\"+screen.width+\"&Hauteur=\"+screen.height;

PHP_SELF renvoi l'adresse physique du fichier (c:\truc\chose\fichier.php)

Essaye simplement ainsi :
document.location=\"?r=1&Largeur=\"+screen.width+\"&Hauteur=\"+screen.height;


A+
vendredi 3 août 2007 à 16:04:14 | Re : detection navigateur

gaillardo

Salut à toi et merci pour ta réponse,

J'ai essayé comme tu m'a dit mais ça ne change rien. Je pense que l'erreur n'est pas là car  à l'affichage j'ai  la page sans la css. Je ne rentre donc pas dans la première boucle if et je n'affiche pas le contenu de la variable $nav. Je pense que le problème vient plutôt de getenv mais je ne trouve pas la solution.

A+
vendredi 3 août 2007 à 17:07:22 | Re : detection navigateur

Evangun

Hello, c'est la config serveur qui fait ça, moi une fois c'était pareil, je ne pouvais pas utiliser $_SERVER['PHP_SELF'], il fallait écrire autre chose (mais je ne sais plus quoi)...
Il y a plusieurs syntaxes pour récupérer les variables d'environnement, teste-les (cf php.net), autrement vérifie auprès de ton hébergeur.
à+
dimanche 5 août 2007 à 02:00:44 | Re : detection navigateur

gaillardo

Salut,
C'est bon j'ai trouvé un code qui fonctionne su rmon server :

echo "<script language=\"JavaScript\">
        <!--
        document.location=\"?r=1&Largeur=\"+screen.width+\"&Hauteur=\"+screen.height;
        //-->
        </script>";

Maintenant j'ai un autre problème. Toute cette ligne s'affiche dans mon url et c'est pas très propre. J'ai éssayé de remplacer mes GET par des POST mais j'obtient une boucle sans fin qui me plante tout. Ce qu'il faudrai c'est que je puisse récupérer les valeurs de screen.width et screen.height dans des variables php. Si quelqu'un à une idée ou désire d'autre explications plus claire qu'il n'ésite pas.
A+
dimanche 5 août 2007 à 11:33:23 | Re : detection navigateur

Evangun

Hello,

et bien ça paraît évident, tu mets quelque chose qui empêche la boucle infinie...
une variable en cookie par exemple. Si elle existe, pas d'envoi, sinon tu valides le formulaire.

à+
dimanche 5 août 2007 à 18:18:03 | Re : detection navigateur

gaillardo

Salut, merci pour ta réponse mais j'ai rien compris. C'est pas un formulaire. C'est une detection du navigateur et de la résolution :

Je te montre mon code :

if(ereg("MSIE", $_SERVER["HTTP_USER_AGENT"]))
    {
        $nav="IE";
    }
    else
    {
        $nav="MOZ";
    }
       
    if ($nav == "IE")
    {
    
        if(!isset($_GET['r']))
        {
        echo "<script language=\"JavaScript\">
        <!--
        document.location=\"?r=1&Largeur=\"+screen.width+\"&Hauteur=\"+screen.height;
        //-->
        </script>";
        }
        else
        {   
            // Code à afficher en cas de détection de la résolution d'affichage
            if(isset($_GET['Largeur']) && isset($_GET['Hauteur']))
            {
                if((($_GET['Largeur'])=="1280" ) && ($_GET['Hauteur'])=="1024")// Résolution détectée
                   {
                   ?><link rel="stylesheet" type="text/css" href="css/1280x1024-ie_dominique.css" ><?php
                   }
                elseif((($_GET['Largeur'])=="1024" ) && ($_GET['Hauteur'])=="768")// Résolution détectée
                   {
                   ?><link rel="stylesheet" type="text/css" href="css/1024x768-ie_dominique.css" ><?php
                   }
                elseif((($_GET['Largeur'])=="1440" ) && ($_GET['Hauteur'])=="900")// Résolution détectée
                   {
                   ?><link rel="stylesheet" type="text/css" href="css/1440x900-ie_dominique.css" ><?php
                   }
                else
                {
                   
                  ?><link rel="stylesheet" type="text/css" href="css/1024x768-ie_dominique.css" >
                  <script language="JavaScript">
       
        alert("Résolution inappropriée ! Résolution conseillée : 1280x1024 ou 1024x768");
       
        </script><?php
                }
            }
            else
            {
                echo "Résolution non détectée !";
            }
        }   
    }
    if ($nav == "MOZ")
    {
        if(!isset($_GET['r']))
        {
       
       
        echo "<script language=\"JavaScript\">
        <!--
        document.location=\"?r=1&Largeur=\"+screen.width+\"&Hauteur=\"+screen.height;
        //-->
        </script>";
        }
        else
        {   
            // Code à afficher en cas de détection de la résolution d'affichage
            if(isset($_GET['Largeur']) && isset($_GET['Hauteur']))
            {
                if((($_GET['Largeur'])=="1280" ) && ($_GET['Hauteur'])=="1024")// Résolution détectée
                   {
                    ?><link rel="stylesheet" type="text/css" href="css/1280x1024-dominique.css" ><?php
                   }
                elseif((($_GET['Largeur'])=="1024" ) && ($_GET['Hauteur'])=="768")// Résolution détectée
                   {
                   ?><link rel="stylesheet" type="text/css" href="css/1024x768-dominique.css" ><?php
                   }
                elseif((($_GET['Largeur'])=="1440" ) && ($_GET['Hauteur'])=="900")// Résolution détectée
                   {
                   ?><link rel="stylesheet" type="text/css" href="css/1440x900-dominique.css" ><?php
                   }
                else
                {
                   
                  ?><link rel="stylesheet" type="text/css" href="css/1024x768-dominique.css" >
                  <script language="JavaScript">
       
        alert("Résolution inappropriée ! Résolution conseillée : 1280x1024 ou 1024x768");
       
        </script>;<?php
                }
            }
            else
            {
                  echo "Résolution non détectée !";
            }
        }   
   
   
    }
?>
</head>


Si tu pouvais m'éclairer ce serai cool.
Merci d'avance.
A+
dimanche 5 août 2007 à 18:30:03 | Re : detection navigateur

Evangun

Tu ne vas pas détecter à chaque page la résolution de l'écran, non ? donc il faut que tu l'enregistres une bonne fois pour toutes. Soit en session soit par cookies.

Quand la valeur n'existe ni en session ni en cookies, c'est que tu n'as pas encore détecté alors tu balances ton code de détection.

Qu'est-ce que tu ne comprends pas ?
à+
mardi 7 août 2007 à 19:55:17 | Re : detection navigateur

gaillardo

Ok je comprend mieu,
Il faut que je créer une variable soit en session soit en cookie depuis le code javascript pour pouvoir y avoir acces depuis n'importe où  ?  Je ne l'ai jamais fait  que me conseil-tu entre ces deux possibilités et comment créer la variable et comment la tester ?
Si j'ai bien compris, au lieu d'avoir tous ce code dans mon header je teste simplement cette variable "globale" et si elle est vide  je met un include vers un autre fichier qui teste la résolution.
Merci encore pour ton aide et à bientôt.
mardi 7 août 2007 à 20:58:52 | Re : detection navigateur

Evangun

C'est tout à fait ça.

Maintenant pour choisir entre cookies et session, ça dépend un peu du site. Les sites à fort trafic préféront les cookies pour ne pas empiéter sur les performances du serveur, les petits sites préféreront les sessions pour leur aspect pratique et plus fiable.

Le javascript peut enregistrer la variable en cookie, mais pas en session. Pour enregistrer en session, il faut qu'il *envoie* la variable au serveur (php donc) qui lui pourra l'enregistrer en session. Le php, lui, peut enregistrer en session et en cookie, c'est pratique.

Le problème maintenant c'est plutôt : que se passera-t-il la première fois qu'un visiteur arrivera sur ton site, et que la largeur d'écran n'aura pas été enregsitré ? Veux-tu lui afficher qqch sur cette 1ère page (mais il faudrait que ton javascript puisse s'adapter tout seul sans rechargement de page, bof bof) ou plutôt choper la valeur et le rediriger tout de suite ailleurs pour pouvoir passer la variable au php ? Evidemment je conseille la 2ème solution.

Bon, on parle on parle, mais j'ai oublié de dire un truc : mieux vaut faire un site pour une seule résolution (1024x768), sinon c'est vraiment galère à gérer, et puis tu ne peux pas toujours avoir la résolution du gars... Moi je n'utilise le javascript que pour gérer le centrage de mes page, c'est tout. Au pire si le visiteur n'a pas javascript, le site reste collé à gauche de l'écran.

à+

1 2

Cette discussion est classée dans : hauteur, résolution, get, largeur, nav


Répondre à ce message

Sujets en rapport avec ce message

Pb php : ImageCreateFromJPEG [ par Trascal ] /*Bijour,j'ai un ti pb en php :/ quelqu'un pourrait-il m'aider? voici mon pb$donnees est de type "fichier.jpg"et $directory est un répertoire que l'on pb redimension image jpeg/bmp [ par David_monchy ] Salut à tous, j'ai voulu faire une fonction permettant de redimensionner une image uploadée. Je me suis inspiré des fonctions de ce site, et tout marc attaque upload [ par speedylol ] Bonjour j'ai trouver une petit script ici sur sympa que j'ai modifier pour crée des miniature en respctant le dimensions , mais j'ai un probléme d'att ameliorer mon code pour la redimension d'image [ par 0123azerty ] bjr a tous ...// connexion à la BDinclude ('bdd.php');<br redimenssionner image [ par fvv ] Bonjour, Le code que j'utilise pour réduire la taille de mes images ne marche pas : ça me crée une miniature 150*150 dans le bon dossier mais toute no Probleme de récursivité [ par ketluts ] Bonjour à tous, voilà je me suis amusé à créer un générateur de labyrinthe et ayant vu qu'un défi avait eu lieu justement sur ce forum il y a maintena problèm affichage miniature [ par fornatus ] Bonjour je n'arrive pas à afficher mes miniatures malgré le fait que celles-ci restent cliquables et s'ouvrent correctement dans une pop.Voici le code Probleme popup Javscript et php [ par corbakoo ] Bonsoir à tous Voilà mon probleme :J'utilise la fonction :function popup(page,largeur,hauteur,options){ var top=(screen.height-hauteur)/2; var left=( Variable get et post : transformation automatique [ par TULGRIM ] Bonjour a tous,Suite au changement de version de non serveur php, il me faut transformer toutes les varaibles envoyees par les formulaires et les URL liste deroulante d' apres BDD [ par laperche ] Bonjour, J'ai créé une liste deroulante d' après une BDD, "groupe", "nom", "population", etc...Mon problème est que tous les lignes de la colonne "gro


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales