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 :

appeler une fonction php quand on sort de la page


Sujet :

Langage PHP

Vue hybride

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut appeler une fonction php quand on sort de la page
    Bonjour,

    je voudrais faire ce qui est marqué dans le titre ; j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php 
    function deconnecte() {
    $sql = stripslashes('update `licencie` set connecte="0"');
    $result = mysql_query($sql) or die(mysql_error($id_conni));
    }
     
    ?>
    <script>
    function deconnect() {
    <?php
    deconnecte();
    ?>
    }
    window.unload=deconnect;
    </script>
    <?php
    ...
    mais ça visiblement pas vu que si on regarde le html généré, ça s'arrête après la ligne function deconnect() { ; y a-t-il moyen de faire ce que je souhaite ?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut


    Tu n'as pas encore compris la portée de PHP (serveur) et de JavaScript (client)...

    Déjà, comment veux-tu qu'un script JavaScript interprète une fonction PHP ?

    PHP travaille sur le serveur, crée une page HTML et se contente de l'envoyer au navigateur. Une fois qu'il a fait ça, la connexion est terminée ! PHP n'a donc aucun moyen de savoir ce qu'il se passe côté navigateur (et encore heureux d'ailleurs) !

    En plus, je comprends pas ta logique... La dernière fois, tu voulais créer un cookie "connecte" qui dure 100 ans, maintenant, tu veux déconnecter à la fermeture du navigateur...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    La dernière fois, tu voulais créer un cookie "connecte" qui dure 100 ans, maintenant, tu veux déconnecter à la fermeture du navigateur...
    C'est vrai que c'est pas pareil...Comme il m'est difficile d'écrire du code avant l'émission de tout header, j'ai abandonné l'idée des cookies et mise sur un champ MYSQL "connecte" ; donc, il ne pourra y avoir plusieurs connectés simultanés, mais à son arrivée, l'utilisateur doit s'identifier et à la sortie, je voulais le déconnecter automatiquement.
    PHP n'a donc aucun moyen de savoir ce qu'il se passe côté navigateur
    Ca, d'accord, mais mon but, c'est l'inverse : que le navigateur demande une action au serveur. Donc, est-ce possible ?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Dis-moi, tu n'as jamais entendu parler des sessions ? Parce que ça fonctionne exactement dans ce sens : au bout de temps de temps d'inactivité (que tu peux choisir), la session est supprimée.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Je n'arrive pas à te suivre : comment javascript peut-il écrire une variable serveur ?

  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
    Les sessions PHP "s'arrêtent" quand on ferme le navigateur, c'est le comportement que tu cherches à avoir
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    J'ai jamais dit que JavaScript était capable de faire ça...
    J'ai juste dit que le mécanisme de session est précisément fait pour ce que tu demandes.
    Si une session active ne demande aucun document pendant une certaine durée (par défaut 180 min), alors la session est détruite.
    Ensuite, si tu veux un mécanisme plus précis, tu peux l'affiner en détectant l'activation de JavaScript puis en réglant la durée de la session par exemple à deux minutes et en envoyant toutes le 1'30 une requête AJAX qui va réactiver la session. Du coup, la session expire au maximum 2 minutes après la fermeture de la page.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 209
    Par défaut
    Navigateur (avec intertrateur javascript) <--> Reseaux <--> Serveur (php, mysql etc...)

    Donc pour ecrire une variable sur le serveur depuis le navigateur il faut soit envoyer un formulaire, soit une requete AJAX depuis le navigateur.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut Pseudo-cookies sans la contrainte d'être avant les headers
    Bonjour,

    comme je suis dans un environnement où on a pas accès à tout le fichier (juste une partie du <body>), j'ai mis au point un système de pseudo-cookie qui n'utilise pas ce mécanisme mais qui vu de l'utilisateur a le même effet ; en gros le but était que si un utilisateur se connecte une fois (nom d'utilisateur+mot de passe), puis quitte le site et revient (sur le même poste), il est reconnu donc tout de suite connecté.
    L'idée est d'utiliser l'adresse IP du poste et de la stocker dans MySQL (en l'ayant filtrer par md5). Donc quand l'utilisateur revient sur le site, on commence par lire l'adresse IP ($_SERVER["REMOTE_ADDR"]) et si on trouve md5($_SERVER["REMOTE_ADDR"]) dans la table de la base MySQL, il est connecté. Voici en gros à quoi ressemble le code (très simple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //test : l'utilisateur est-il connecté ?
    $ip=md5($_SERVER["REMOTE_ADDR"]);
    $sql = stripslashes('SELECT * from `licencie` where address_IP="'.$ip.'"');
    $result = mysql_query($sql) or die(mysql_error($id_conni));
    if (mysql_num_rows($result)==0) { echo "Pour accéder à cette page, il faut être connecté.";exit();}
    Bon évidemment, ça serait mieux en MySQLi ou en PDO, mais l'idée reste la même.

  10. #10
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Par défaut
    Et si un autre utilisateur se connecte au site avec la même machine avec un navigateur différent ? Ca se passe comment ? L'utilisateur est connecté ou non ?

    De plus, l'utilisation de MD5 est à proscrire de nos jours. Au pire du sha1, un poil mieux du sha256, le must un algo de cryptage (AES, RSA, etc.) et non de hashage.

    Pour les fonctions mysql_* t'as déjà tout dit.

    Ceci étant je comprends pas exactement pourquoi tu as besoin de faire ça

    Edit : maintenant que le sujet a été déplacé, je comprends mieux...
    Je ne suis pas schizophrène, nous sommes unanime !!!

    ► Pensez à la balise code et au CODE HTML GENERE !!!!
    ► Au si c'est le cas et au à ceux qui vous ont aidé.
    Vous souhaitez participer aux rubriques CSS et (X)HTML ? Contactez-nous !

    Créer des colonnes de même hauteur en CSS
    Glossaire CSS
    Les bordures en CSS3
    Les transitions en CSS3

  11. #11
    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
    L'ip ne permet pas d'identifier un utilisateur.
    Deux connectés d'une entreprise vont par exemple apparaître avec l'IP de leur proxy.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Remarque intéressante ; je savais pas ; mais si ça ne permet pas juste, de départager 2 personnes de la même entreprise, en l'occurrence, pas trop grave...

  13. #13
    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
    Moi je trouve ça un peu grave : je vais sur le même site que mon collegue et j'arrive directement sur sa connexion.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Lien <a href .. qui appelle une fonction php
    Par CristinaB dans le forum Langage
    Réponses: 1
    Dernier message: 30/05/2008, 16h03
  2. Appeler une fonction php toutes les x secondes
    Par alex_is_there dans le forum Langage
    Réponses: 7
    Dernier message: 20/04/2008, 11h32
  3. Réponses: 5
    Dernier message: 07/04/2008, 14h58
  4. Appeler une fonction php dans une requete mysql
    Par yobogs dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/11/2007, 13h43
  5. [JQUERY] Comment appeler une fonction php avec jquery
    Par popogendarme dans le forum jQuery
    Réponses: 1
    Dernier message: 20/03/2007, 16h07

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