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 :

[Cookies] Empêcher l'envoi d'un message à chaque rafraîchissement de la page [Fait]


Sujet :

Langage PHP

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut [Cookies] Empêcher l'envoi d'un message à chaque rafraîchissement de la page
    Bonjour

    J'ai récemment développé une page php gérant les erreurs http. Lorsque q'un visiteur tombe sur cette page, un message m'est automatiquement envoyé.

    Le soucis que je rencontre en ce moment est le suivant à savoir si le visiteur en question rafraîchit la page en appuyant sur F5, je reçois un autre message et ce petit manège peut durer très longtemps à moins de trouver une solution.

    Auriez-vous une petite idée à me soumettre ? J'ai pensé aux sessions ? Qu'en pensez-vous ? Auriez-vous un petit exemple ?

    Merci

  2. #2
    Membre éprouvé Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Points : 1 042
    Points
    1 042
    Par défaut
    bonjour,

    Moi perso, je fais un header qui me renvoie à la page voulu (cela peut être la même), cela permet d'annihiler toutes les variables POST.


    ++

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Citation Envoyé par sharrascript Voir le message
    Moi perso, je fais un header qui me renvoie à la page voulu (cela peut être la même), cela permet d'annihiler toutes les variables POST.
    C'est une idée mais elle ne me tente pas vraiment. Je pencherai plus sur l'utilisation des sessions mais à part ouvrir une session au moment ou le visiteur accède à ma page et l'a détruire au moment ou le navigateur se ferme hmm je ne vois pas comment effectuer les tests

  4. #4
    Membre éprouvé Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Points : 1 042
    Points
    1 042
    Par défaut
    le header est très pratique, mais si tu ne veux pas l'utiliser c'est qu'il doit y avoir des raisons

    Donc pour la session, c'est une idée. Tu la crée au moment de ta requête ce qui empêchera de la renvoyer une deuxième fois après test et conditions.

    Dans tous les cas la session se détruit normalement à la fermeture du navigateur de l'utilisateur. A savoir que tant qu'il ne le ferme pas la session existe.

    Ou alors, les détruire après un certains temps. pourquoi pas.
    (Après voir ce que tu préfère, cookies ou session)

  5. #5
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Citation Envoyé par sharrascript Voir le message
    le header est très pratique, mais si tu ne veux pas l'utiliser c'est qu'il doit y avoir des raisons
    Voici un exemple, imaginons que je sois sur mon site et que je clique sur un lien pointant sur un script CGI. Malheureusement, celui-ci est très mal programmé donc je tombe directement sur une page d'erreur 500 et aussitôt un mail m'est envoyé.

    Sur cette page personnalisé est indiquée, veuillez rafraîchir la page avec F5 et si le problème persiste, veuillez nous contacter à l'adresse suivante.

    Sauf que si le visiteur appui de nouveau sur F5, je reçois un autre mail etc...

    Je ne vois pas comment le header pourrait empécher l'envoit du message. Du moins, je ne sais pas comment le mettre en oeuvre.

    Merci

  6. #6
    Membre éprouvé Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Points : 1 042
    Points
    1 042
    Par défaut
    Ha...

    En effet^^

    J'avais pas compris qu'un rafraichissement devait avoir lieu... désolé

    Oui, vu sous cet angle, un système de session peut être nécessaire.

  7. #7
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    A mon avis m'adresser un email à chaque fois qu'un visiteur tombe sur ma page 403 n'est pas la bonne solution car même avec une session, je ne vois pas comment résoudre ce problème.

    Avez-vous d'autres idées à partager s'il vous plaît ?

    Merci

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Pourquoi ne pas plutôt opter pour un fichier de log ?
    Chaque fois qu'une erreur apparait, tu rajoutes une ligne dans le fichier en question. C'est très facile ensuite de supprimer des lignes identiques qui se suivent.
    Il me semble même que PHP permet en jouant avec la configuration de logger automatiquement les erreurs dans un fichier

    Cela dit effectivement ça oblige à aller vérifier de temps en temps le fichier de log. Quoique cron doit pouvoir s'en charger pour toi

  9. #9
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 887
    Points : 16 320
    Points
    16 320
    Par défaut
    Tu peux t'aider de ce script :
    http://a-pellegrini.developpez.com/t...php/mail/#L4.4
    (à partir de "Une dernière vérification nous permettra d'éviter qu'une personne n'envoie deux fois l'e-mail en rafraichissant sa page.")

  10. #10
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Béé c'est pas très compliqué et il te suffirai d'une seule variable de session (unique pour chaque utilisateurs) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    if ( !isset($_SESSION['EMailVisiteurEnvoyer']) )
    {
       //Code pour envoyer l'email.
       $_SESSION['EMailVisiteurEnvoyer'] = true;
    }
    ?>
    Une fois que l'email sera envoyer, la variable de session sera créer et passera la condition du IF sur FALSE et ne te renverra donc pas de message. Après si tu veut une autre méthode en utilisant des fonctions spécifiques , propose ^^.

  11. #11
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour

    Merci à tous de vos propositions. Je vais opter pour la solution du fichier de log. J'utiliserai également une tâche cron pour recevoir par email ce fichier.

    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/06/2008, 14h05
  2. Réponses: 6
    Dernier message: 30/04/2007, 10h07
  3. A respecter lors de l'envoi d'un message (Version 2)
    Par Aurelien.Regat-Barrel dans le forum Windows
    Réponses: 0
    Dernier message: 04/01/2003, 15h59

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