IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comportement anormal du navigateur (IE ou FF)


Sujet :

Langage PHP

  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut Comportement anormal du navigateur (IE ou FF)
    Bonsoir,

    j'exécute un code PHP qui teste si l'utilisateur est déjà connecté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $nbconn=0;
    $sql="select `connecte` from `connection`";
    $sql = stripslashes($sql);
    $result = mysql_query($sql) or die(mysql_error());
    while ($ligne=mysql_fetch_array($result,MYSQL_NUM)) {
    	if ($ligne[0]=="1") $nbconn++; }
    if ($nbconn != 0) echo "Vous &ecirc;tes d&eacute;j&agrave; connect&eacute;.<br>";
    Le problème, c'est que même s'il est déjà connecté, le code ne le voit pas, par contre si je fais rafraichir, il le voit (IE ou FF) ; et pourtant, j'ai vidé mon cache (supprimer les fichiers dans "Fichiers internet temporaires") ; comment éviter cela ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comment est faite la relation entre ce code et l'utilisateur connecté ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    J'ai volontairement évité d'utiliser les cookies et les sessions ; donc, quand un utilisateur se connecte (par exemple, via un bouton "se connecter") j'écris "1" dans le champ "connecte" de la base MySQL "connection" (OK, en français, on aurait écrit "connexion", mais quand j'ai codé ça, je devais être influencé par l'anglais).

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    mais la ta requete retoune la table connection en entier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Non, elle ne retourne que tous les champs "connecte" de cette table, et donc si au moins un est non nul, je dois le détecter.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourquoi lire toutes les lignes de la base au lieu d'utiliser une condition dans ta requête ?

    Comment est indentifié l'utilisateur dans ta table 'connecte' ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 110
    Par défaut
    J'ai volontairement évité d'utiliser [...] les sessions
    Une raison particulière ?

    Non parce que là, il va falloir mettre à jour ta table connection a chaque fois. En plus si l'utilisateur a un problème avec son navigateur du genre "Une erreur s'est produit et Windows doit fermer Internet Explorer" (ce qui arrive très souvent), ta table ne sera pas mise à jour et toute personne connaissant le pseudo de ton utilisateur aura accès à son compte !

    Vraiment là je ne comprend pas pourquoi tu décidé du'utiliser ce système à la place des sessions

  8. #8
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Pourquoi lire toutes les lignes de la base au lieu d'utiliser une condition dans ta requête ?

    Comment est indentifié l'utilisateur dans ta table 'connecte' ?
    +1 par ce que là cela veux dire que si un utilisateur et déclaré connecté, plus personne ne le peux
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  9. #9
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par popo Voir le message
    J'ai volontairement évité d'utiliser [...] les sessions
    Une raison particulière ?
    La raison, c'est que je développe ça pour aider quelqu'un qui compte ensuite reprendre la main dessus (la maintenance) et il utilise un outil qui ne lui donne pas la main sur tout le code, mais uniquement ce qui se trouve entre les balises <body> (et encore). Donc les sessions_start() et les setcookie, laisse tomber (surtout qu'il y a de l'affichage avant (notamment la gestion du menu)).

    Pourquoi lire toutes les lignes de la base au lieu d'utiliser une condition dans ta requête ?

    Comment est identifié l'utilisateur dans ta table 'connecte' ?
    Pour répondre à ça : je n'y avais pas pensé, mais je vais faire la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="select `connecte` from `connection` where `connecte`=1";
    et compter le nombre de lignes de la réponse avec mysql_nb_rows.
    Et pour identifier l'utilisateur, dans la table, il y a un champ "login".

  10. #10
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    +1

    J'ai volontairement évité d'utiliser les cookies et les sessions ; donc, quand un utilisateur se connecte (par exemple, via un bouton "se connecter") j'écris "1" dans le champ "connecte" de la base MySQL "connection"
    Si 10 autres utilisateurs arrivent juste derrière, les 10 seront considérés comme "Connectés" pour la simple raison qu'il y a rien qui les différencies des uns des autres.
    Ou alors c'est l'inverse, pour X raison les soient disant connectés seront considérés comme déconnectés parce que la valeur sera 0 dans la BDD.

    Ton mécanisme est peut être tout juste valable pour 1 seul utilisateur, encore que.


    Il faut un élément "extérieur" qui va dire qu'on a affaire à tel ou tel utilisateur, et les sessions sont justement là pour ça car dès qu'un utilisateur déboule la 1ère fois, le serveur Web lui accorde un identifiant unique.
    Si on gère bien les sessions, cet identifiant est conservé tout le long de la navigation sur le site sans avoir besoin de transmettre une donnée ... ceci jusqu'à son expiration ou destruction volontaire.

  11. #11
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Donc les sessions_start() et les setcookie, laisse tomber (surtout qu'il y a de l'affichage avant (notamment la gestion du menu)).
    Alors c'est la façon dont est conçu le site qui est en cause, pas les sessions.

    Il faut revoir tout ce principe, car il n'est pas normal qu'il y ait de l'affichage avant de lancer la session.

    Pour ma part tu contourne un manque de conception au départ par un autre mécanisme qui risque d'être encore plus mal goupillé, voir impossible à mettre en place.
    Je ne dis pas cela méchamment, c'est juste une remarque, un constat.


    Parcourt ce forum, et tu lira souvent que l'on conseil de faire tous les traitements Php avant le moindre élément HTML, en somme on sépare la couche traitement et la couche interface (graphique).
    Efforce toi de respecter ce concept, et tu rencontreras nettement moins de problème, de plus ton code sera bien plus lisible, compréhensible, etc ...


    A mon avis, quasi tous les site "dynamiques" exploitent le couple session/cookie, ce n'est pas un hasard, c'est juste qu'il est difficile de faire autrement.

  12. #12
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Ton mécanisme est peut être tout juste valable pour 1 seul utilisateur, encore que.
    Je n'y avais pas pensé, mais même si le risque est faible (peu d'utilisateurs) , c'est quand même gênant (ce qui n'est pas le cas avec les sessions ; je ne parle pas de cookie, car ici, il n'est pas question de rester connecté si on quitte le site). Je ne vois pas comment faire sans session.

    Citation Envoyé par RunCodePhp Voir le message
    Alors c'est la façon dont est conçu le site qui est en cause, pas les sessions.
    Disons plutôt que l'outil utilisé (fait pour des gens qui ne connaissent même pas le html, mais qui leur permet quand même de générer des sites web) qui est mal foutu : en fait, j'essayais un mécanisme qui permet d'utiliser au maximum l'outil et nécessite le moins possible d'interventions externes (d'où le rejet des sessions et des cookies, car c'est impossible à gérer si on veut rester dans l'outil). (Cela dit, j'ai beau casser du sucre sur cet outil, je l'apprécie quand même beaucoup, car il fait pour moi la gestion du menu, ce que je ne saurais pas faire).

  13. #13
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Disons plutôt que l'outil utilisé (fait pour des gens qui ne connaissent même pas le html, mais qui leur permet quand même de générer des sites web) qui est mal foutu
    Peut être, mais personne ici n'a idée de cet outil.
    Est ce un outil spécifique, un projet unique développé au sain de l'entreprise ?
    Un outil payant ? Du coup il doit avoir un SAV qui devrait te permettre d'avoir des infos.
    Un outil Open Source ? Donc il devrait là aussi avoir une communauté spécialisée de cet outil, non ?

    En tout cas tu as l'air bien seul face à l'évolution de cet outil, à trouver des solutions, alors qu'être plusieurs serait bien mieux.

    Certes, tu demande de l'aide sur ce forum, mais personne n'a idée de l'ensemble de ton outil, et c'est surtout là le problème je pense.


    Ca fait un peu un "sermon", mais la voix que tu prends me semble pas du tout la bonne, donc t'aider à le mettre en place c'est un peu aller à contre courant.
    On ne peu pas aider comme ça de manière inconsidérée, ça n'a pas de sens.

  14. #14
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Un outil payant ? Du coup il doit avoir un SAV qui devrait te permettre d'avoir des infos.
    En fait, c'est un outil payant (pas cher), ils ont récemment créé aussi un forum qui lui est dédié (sur lequel je vais beaucoup aussi). L'outil en question, c'est lui, mais je pense être un des utilisateurs les plus avertis (au vue de leur forum), et si je viens régulièrement aussi sur ce forum, c'est pour faire des trucs qui ne concernent pas du tout les créateurs de ce logiciel. (Vu qu'il s'adresse à des gens qui ne connaissent pas forcément le html alors le PHP...)

  15. #15
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Il n'y a finalement pas de comportement anormal du navigateur : j'ai trouvé dans mon code une remise à 0 du champ de la base MySQL...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/08/2007, 15h15
  2. Generics : comportement anormal ?
    Par ®om dans le forum Langage
    Réponses: 1
    Dernier message: 13/07/2007, 17h18
  3. Comportement anormal de mon code?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 3
    Dernier message: 16/01/2007, 14h10
  4. CASE WHEN avec un comportement anormal
    Par damien.sans dans le forum Oracle
    Réponses: 5
    Dernier message: 23/08/2006, 11h03
  5. Comportement anormal de la tabulation sur une DBGrid
    Par fredfred dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/05/2005, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo