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 :

$_SERVER['HTTP_REFERER'] dans un formulaire pour mailer les erreur 404


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut $_SERVER['HTTP_REFERER'] dans un formulaire pour mailer les erreur 404
    Bonjour,

    J'ai fat une page d'erreur 404 qui s'affiche avec apache, donc quand un utilisateur a un faut lien, il aterie sur la page erreur 404, sur cette page l'utilisateur a un bouton submit pour siganler l'erreur 404 automatiquement au webmaster par mail.

    Le formulaire (1er page)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?PHP $PHP_AUTH_USER = strip_tags($_SERVER['PHP_AUTH_USER']);
    $login = $PHP_AUTH_USER; ?>
    <form action="erreur-404-confir.php" method='post'>
    	  <input type="HIDDEN" name="utilisateur"  size="30" value="<?php echo $login ?>"> 
    	  <input type="HIDDEN" name="page_precedente"  size="30" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />
      <input type="submit" name="envoyer" value="Signaler l'erreur 404 au webmaster">
    Avec ceci je reçois le lien du formulaire ??, alors que je devrai recevoir le lien de la page precedente avant la page d'erreur 404
    et non pas le formulaire, puisque le formulaire demmande le lien precedent pour être passé d'une page l'autre pour y être envoyer par mal, le formulaire et dans la page erreur-404.php qui saute sur erreur-404-confir.php pour envoyer le mail.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $_SERVER['HTTP_REFERER']; ?>
    voila le resultat de l'email un fois reçus
    Bonjour,

    Une ou des erreurs 404 vous est signaler par un utilisateur.

    Dètail :
    --------
    Utilisateur : laurent.
    Page ou le lien est corompu : http://localhost/maison/N4/test/membre/.

    ---
    Email automatique.
    Ne pas rèpondre à cette email.


    recuperation de données et envoi mail (La 2eme page)
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?PHP
    //---- UTILISATEUR ----
    		  $bouton1 = $_POST['envoyer'];
    		  if(!empty($bouton1)) { 
    		  $id = trim($_POST['id']);
    		   $utilisateur = trim($_POST['utilisateur']); 
    		   if(!empty($id) && !empty($utilisateur)) { 
    		   echo 'Utilisateur : '.$utilisateur.'<br/>';
    		   } 
    		   else 
    		   { 
    		   echo '<div align="center">Vous n\'avez pas rempli le champ : utilisateur.'.'<br/>';
    		   echo '<div align="center"><a href="'. $_SERVER['HTTP_REFERER'] .'">Retour</a>';
    		   //exit();
    		    }
    			}
     
    //---- PAGE PRECEDENTE ----
    		  $bouton2 = $_POST['envoyer'];
    		  if(!empty($bouton2)) { 
    		  $id = trim($_POST['id']);
    		   $page_precedente = trim($_POST['page_precedente']); 
    		   if(!empty($id) && !empty($page_precedente)) { 
    		   echo 'page_precedente : '.$page_precedente.'<br/>';
    		   } 
    		   else 
    		   { 
    		   echo '<div align="center">Vous n\'avez pas rempli le champ : page precedente.'.'<br/>';
    		   echo '<div align="center"><a href="'. $_SERVER['HTTP_REFERER'] .'">Retour</a>';
    		   //exit();
    		    }
    			}
     
    ?>
    <?php echo ' <div align="center"><font face="arial" size="4" color="red">un email  a été adressé au webmaster concernant l\'erreur 404  a la page  '.$page_precedente.' par l\'utilisateur '.$utilisateur.'! </font><br /> ';
    echo ' <div align="center"><font face="arial" size="4" color="red">Merci d\'avoir signaler l\'erreur 404 .</font><br /> ';
     
    echo '<br/>';
    echo '<a href="../../N3/index-n3.php">accueil</a>';
    // Envoi mail 
    $email = "xxxx@xxxx.fr";
    $expediteur = "xxxx@xxx.fr";
    $reponse = "xxxxx@xxxx.fr";
    $objet = "Erreur 404 signaler";
    $message =  
    	 "Bonjour,
    	 
    	 Une erreur 404 vous est signaler par un utilisateur.
    	 
    	 Dètail :
    	 --------
    	 Utilisateur : $utilisateur.
    	 Page ou le lien est corompu : $page_precedente.
          
    	 ---
    	 Email automatique.
    	 (Ne pas rèpondre à cette email.)";
     
    mail ($email, $objet, $message, "From: $expediteur\r\nReply-To: $reponse");
    ?>
    Je ne comprend pas pourquoi cela ne fonctionne pas ou y a t'il une erreur dans mon code ??

    Merci d'avance, cordialement
    Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
    DreamPlug | 512 mo ram | SSD 16 GO | Linux debian 2.6.39.4 | armv5tel | Lamp | PHP 5.3.3-7 | Apache 2.2.16 | Mysql 14.14

  2. #2
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Avec ceci je reçois le lien du formulaire ??, alors que je devrai recevoir le lien de la page precedente avant la page d'erreur 404
    Et bien déjà, si je regarde le lien dans ton mail, ce n'est pas celui du formulaire que tu obtiens, mais un lien avec aucun nom de page :
    -http://localhost/maison/N4/test/membre/. (pas de nom ici)

    Ceci dit, le HTTP_REFERER que tu devrais obtenir c'est la page inexistante en question.

    Mais comment procède tu pour capter cette erreur 404 pour rediriger vers la page erreur-404.php ?
    Et comment fais tu tes essais, avec quelle URL ?


    A coté ça, et là c'est purement personnel, mais j'ai jamais trouvé ça zen de mettre directement $_SERVER['HTTP_REFERER'] dans les liens, j'estime cette données peu sûr.
    Mais encore une, c'est perso.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut
    bjr,

    Et bien déjà, si je regarde le lien dans ton mail, ce n'est pas celui du formulaire que tu obtiens, mais un lien avec aucun nom de page :
    -http://localhost/maison/N4/test/membre/. (pas de nom ici)
    J'ai pas fait attention , zute..., mais alors comment faire car avec ceci cela ne fonctionnera pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER['REQUEST_URI']

    Mais comment procède tu pour capter cette erreur 404 pour rediriger vers la page erreur-404.php ?
    Avec apache dans le fichier .htaccess

    Extrait du fichier .htacces
    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
    18
    #AuthName "Accès réservé"
    #AuthType Basic
    #AuthUserFile "L:/Program files 2/wamp/www/maison/n4/.htpasswd"
    #require user laurent
     
    #<files camera.html>
    AuthUserFile "L:/Program files 2/wamp/www/maison/N4/.htpasswd"
    AuthGroupFile "L:/Program files 2/wamp/www/maison/N4/.htgroup 
    AuthName "Accès réservé"
    AuthType Basic
    #<Limit GET POST>
    require valid-user
    #</Limit> 
     
    # 401 : pas d'autorisation d'accès au document
    ErrorDocument  401  /maison/commun/template/erreur-401.php
    # 404 : la page demandée n'existe pas 
    ErrorDocument  404  /maison/commun/template/erreur-404.php

    Ceci dit, le HTTP_REFERER que tu devrais obtenir c'est la page inexistante en question.
    Oui , et si je ne me trompe pas c'est pareil qu'un lien de retour du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="'. $_SERVER['HTTP_REFERER'] .'">Retour</a>';
    pour avoir la page precedente.

    Merci d'avance.
    Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
    DreamPlug | 512 mo ram | SSD 16 GO | Linux debian 2.6.39.4 | armv5tel | Lamp | PHP 5.3.3-7 | Apache 2.2.16 | Mysql 14.14

  4. #4
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Je ne parviens pas à voir où ce situerais l'erreur.

    Faudrait faire des essais simples.
    Crée un lien dans une page vers une page inexistante (genre truc.html).

    Ensuite, et théoriquement, on devrait être redirigé vers erreur-404.php. Dans cette page, rajoute un print_r($_SERVER).
    Qu'est ce que tu obtiens comme info si tu click sur le lien ?
    (HTTP_REFERER, REQUEST_URI, REDIRECT_URL entre autre)

    J'ai pas fait attention , zute...,
    Ok, mais alors c'est quoi le nom que tu obtiens ?
    Et tu n'as pas dis comment tu effectuais tes essais.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. [AC-2010] Bouton dans formulaire pour ouvrir les importations enregistrées
    Par borisp dans le forum VBA Access
    Réponses: 0
    Dernier message: 21/07/2014, 12h36
  2. [RegEx] preg_match dans formulaire pour recupérer les name et value
    Par natsou_k dans le forum Langage
    Réponses: 6
    Dernier message: 19/04/2010, 20h52
  3. .htaccess pour gérer les erreurs 404 et alias
    Par antrax2013 dans le forum Apache
    Réponses: 4
    Dernier message: 04/12/2008, 17h11
  4. Réponses: 10
    Dernier message: 06/07/2007, 02h54
  5. Réponses: 5
    Dernier message: 07/09/2006, 12h33

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