La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  PHP invisible
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: PHP invisible  (Lu 9819 fois)
PHP invisible
« sur: le 02-04-2013 a 18:35:15 »
auron818
Membre récent
*

Hors-Ligne

Messages: 9





Voir le Profil    E-Mail
Répondre avec citation

Bonjour à tous !!

Voilà je viens vers vous car j'essai de lancer un formulaire de contact sur mon site.
Vraiment rien de bien compliqué, sauf que...

Je n'arrêtais pas de me retrouver avec une erreur (apparemment il fallait ajouter le fichier .htaccess qui devait contenir une ligne de commande)

Ca à l'air de fonctionner.., sauf que lorsque je tente d'envoi un mail via le formulaire de contact j'ai une page blanche qui s'affiche ensuite... je ne comprends pas pourquoi...

Pouvez-vous m'aider ??

Voici le code en question:

Code:
<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoye']))
{
    /* Récupération des valeurs des champs du formulaire */
    if (get_magic_quotes_gpc())
    {
      $nom         = stripslashes(trim($_POST['nom']));
      $prenom                   = stripslashes(trim($_POST['prenom']));
      $email                = stripslashes(trim($_POST['email']));
      $liste_qui           = stripslashes(trim($_POST['liste_qui']));
      $message      = stripslashes(trim($_POST['message']));
    }
    else
    {
      $nom         = trim($_POST['nom']);
      $prenom              = trim($_POST['prenom']);
      $email              = trim($_POST['email']);
      $liste_qui           = trim($_POST['liste_qui']);
      $message      = trim($_POST['message']);
    }

    /* Expression régulière permettant de vérifier si le
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';

    /* Expression régulière permettant de vérifier qu'aucun
    * en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';

    /* Si le formulaire n'est pas posté de notre site on renvoie
    * vers la page d'accueil */
    if($_SERVER['HTTP_REFERER'] != 'http://www.entrepot-osswald.net/contacts.php')
    {
      header('Location: http://www.entrepot-osswald.net/');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($nom)
          || empty($prenom)
          || empty($email)
          || empty($liste_qui)
          || empty($message))
    {
      $alert = 'Tous les champs doivent être renseignés';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $email))
    {
      $alert = 'L\'adresse '.$email.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $email)
            || preg_match($regex_head, $nom)
            || preg_match($regex_head, $prenom))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    elseif (!isset($_COOKIE['sent']))
    {
        /* Destinataire (mon adresse mail) */
        $to = 'auron818@free.fr';

        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis entrepot-osswald.net par '.$nom.' '.$prenom.' '.$liste_qui."\r\n\r\n";
        $msg .= 'Voici le message qui vous est adressé :'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $message."\r\n";
        $msg .= '***************************'."\r\n";

        /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' '.$prenom.' <'.$email.'>'."\r\n\r\n";

        /* Envoi de l'e-mail */
        if (mail($to, $nom, $msg, $headers))
        {
            $alert = 'E-mail envoyé avec succès';

            /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de
            * renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 120);

            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = 'Erreur d\'envoi de l\'e-mail';
        }

    }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
}
?>

Code:
       <form id="form" method="post" action="contacts.php">
              <p>
               <input name="nom" type="text" id="nom" placeholder="Votre nom" required /> <label for="nom">Nom</label>
            </p>
            <p>
               <input name="prenom" type="text" id="prenom" placeholder="Votre prenom" required /> <label for="name">Prenom</label>
            </p>
            <p>
               <input name="email" type="email" id="email" placeholder="Votre email" required /> <label for="name">em@il</label>
            </p>
            <p>
                <select name="liste_qui" id="liste_qui">
                   <option value="choisissez">Choisissez...</option>
                   <option value="particulier">Particulier</option>
                    <option value="professionnel">Professionnel</option>
                </select><br />
              <label for="message"></label>
              <textarea name="message" id="message" rows="10" cols="50" placeholder="Entrez votre message ici"></textarea>
            </p>
            <p>
               <input type="submit" value="envoyer" id="envoyer" />
        </form>

Rapporter au modérateur  

Re:PHP invisible
« Répondre #1 sur: le 02-04-2013 a 19:13:54 »
WebD
Superactif
****

Hors-Ligne

Sexe: Male
Messages: 938





Voir le Profil    WWW    E-Mail
Répondre avec citation

Il manque name="envoye" à ton submit du coup ce test ne passe pas:

if (isset($_POST['envoye']))

Rapporter au modérateur  

Agence Web  | Sticker MacBook | Lunettes personnalisées
Re:PHP invisible
« Répondre #2 sur: le 02-04-2013 a 19:44:26 »
auron818
Membre récent
*

Hors-Ligne

Messages: 9





Voir le Profil    E-Mail
Répondre avec citation

Super !

Ca fonctionne merci beaucoup ^^

Comment j'ai pu oublier ça ??...

Par contre encore un petit soucis, lorsque j'envoi le formulaire je suis automatiquement redirigé sur la first page du site.

Je soupçonne la balise:
Code:
if($_SERVER['HTTP_REFERER']


Vous en dites quoi ??

« Dernière Édition: le 02-04-2013 a 19:55:25 par auron818 » Rapporter au modérateur  
Re:PHP invisible
« Répondre #3 sur: le 03-04-2013 a 09:44:46 »
auron818
Membre récent
*

Hors-Ligne

Messages: 9





Voir le Profil    E-Mail
Répondre avec citation

En fait le formulaire n’envoie rien du tout..
Je ne reçois pas de mail par contre la personne est automatiquement redirigé vers la page principal.

Rapporter au modérateur  
Re:PHP invisible
« Répondre #4 sur: le 03-04-2013 a 10:55:40 »
pppplus
Habitué
***

Hors-Ligne

Messages: 482



php / mysql

Voir le Profil    WWW
Répondre avec citation

sur votre fichier contacts.php

mettez simplement

<?php
print_r($_POST);
exit;
?>

vous verrez si vous avez bien les données du formulaire.
Quant à la redirection sur la page d'accueil, vous devez avoir une redirection peut-être sur le .htaccess ?

Rapporter au modérateur  

capsules rechargeables Dolce Gusto et Nespresso
jeux flash gratuits avec la plus grosse boutique cadeaux du net
Accessoires cuisine pratiques
Re:PHP invisible
« Répondre #5 sur: le 03-04-2013 a 21:59:28 »
auron818
Membre récent
*

Hors-Ligne

Messages: 9





Voir le Profil    E-Mail
Répondre avec citation

Bonjour,

merci beaucoup pour votre aide.
J'ai donc ajouter ces lignes à mon code php mais je me retrouve avec une erreur:
Code:
Array ( [nom] => a [prenom] => a [email] => a@a.fr [liste_qui] => professionnel [message] => 654 [envoyer] => envoyer )
Warning: Cannot modify header information - headers already sent by (output started at /home/auron818/public_html/contacts.php:4) in /home/auron818/public_html/contacts.php on line 36


Voici mon code php:
Code:
<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoyer']))
print_r($_POST);
{
    /* Récupération des valeurs des champs du formulaire */
    if (get_magic_quotes_gpc())
    {
      $nom         = stripslashes(trim($_POST['nom']));
      $prenom       = stripslashes(trim($_POST['prenom']));
      $email      = stripslashes(trim($_POST['email']));
      $liste_qui   = stripslashes(trim($_POST['liste_qui']));
      $message      = stripslashes(trim($_POST['message']));
    }
    else
    {
      $nom         = trim($_POST['nom']);
      $prenom      = trim($_POST['prenom']);
      $email      = trim($_POST['email']);
      $liste_qui   = trim($_POST['liste_qui']);
      $message      = trim($_POST['message']);
    }

    /* Expression régulière permettant de vérifier si le
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';

    /* Expression régulière permettant de vérifier qu'aucun
    * en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';

    /* Si le formulaire n'est pas posté de notre site on renvoie
    * vers la page d'accueil */
    if($_SERVER['HTTP_REFERER'] != 'http://www.entrepot-osswald.net/contacts.php')
    {
      header('Location: http://www.entrepot-osswald.net/contacts.php');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($nom)
          || empty($prenom)
          || empty($email)
          || empty($liste_qui)
          || empty($message))
    {
      $alert = 'Tous les champs doivent être renseignés';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $email))
    {
      $alert = 'L\'adresse '.$email.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $email)
            || preg_match($regex_head, $nom)
            || preg_match($regex_head, $prenom))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    elseif (!isset($_COOKIE['sent']))
    {
        /* Destinataire (mon adresse mail) */
        $to = 'auron818@free.fr';

        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis entrepot-osswald.net par '.$nom.' '.$prenom.' '.$liste_qui."\r\n\r\n";
        $msg .= 'Voici le message qui vous est adressé :'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $message."\r\n";
        $msg .= '***************************'."\r\n";

        /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' '.$prenom.' <'.$email.'>'."\r\n\r\n";

        /* Envoi de l'e-mail */
        if (mail($to, $nom, $msg, $headers))
        {
            $alert = 'E-mail envoyé avec succès';

            /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de
            * renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 120);

            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = 'Erreur d\'envoi de l\'e-mail';
        }

    }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
   exit;
}
?>


Je ne comprends vraiment pas pourquoi mon formulaire ne fonctionne pas...
Voici ce que contient mon fichier .htaccess:
Code:
SetEnv PHP_VER 5

Rapporter au modérateur  
Re:PHP invisible
« Répondre #6 sur: le 03-04-2013 a 22:08:19 »
pppplus
Habitué
***

Hors-Ligne

Messages: 482



php / mysql

Voir le Profil    WWW
Répondre avec citation

déjà problème :

<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoyer']))
print_r($_POST);
{
....

C'est plutôt :
if (isset($_POST['envoyer']))
{
print_r($_POST);
....


Ensuite, l'erreur ligne 36 est certainement cette ligne :

    if($_SERVER['HTTP_REFERER'] != 'http://www.entrepot-osswald.net/contacts.php')
    {
      header('Location: http://www.entrepot-osswald.net/contacts.php');
    }

header(xxx); n'est possible que s'il n'y a eu aucune sortie avant.
Et comme je vous ai fait faire un print... ça bloque header()

Et ce header() est la cause de votre redirection.

En début, faites un
echo $_SERVER['HTTP_REFERER'];

et vous verrez, que ça ne fait jamais : http://www.entrepot-osswald.net/contacts.php
D'où la redirection.

Lorsque vous bloquez, faites des echo ou print un peu partout, ça vous éclairera sur ce que vous cherchez et sur ce que fait réellement le script.

Rapporter au modérateur  

capsules rechargeables Dolce Gusto et Nespresso
jeux flash gratuits avec la plus grosse boutique cadeaux du net
Accessoires cuisine pratiques
Re:PHP invisible
« Répondre #7 sur: le 04-04-2013 a 00:55:58 »
auron818
Membre récent
*

Hors-Ligne

Messages: 9





Voir le Profil    E-Mail
Répondre avec citation

Bonjour,

Merci beaucoup pour l'aide précieuse que vous m'apportez !!
Je me retrouve actuellement devant un message d'erreur:
Code:
Array ( [nom] => Nicolas [prenom] => Alexia [email] => auron818@free.fr [liste_qui] => particulier [message] => 156 [envoyer] => envoyer ) http://www.entrepot-osswald.net/contacts.html
Warning: Cannot modify header information - headers already sent by (output started at /home/auron818/public_html/contacts.php:5) in /home/auron818/public_html/contacts.php on line 37


Voici mon code actuel:
Code:
<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoyer']))
{
   print_r($_POST);
    /* Récupération des valeurs des champs du formulaire */
    if (get_magic_quotes_gpc())
    {
      $nom        = stripslashes(trim($_POST['nom']));
      $prenom      = stripslashes(trim($_POST['prenom']));
      $email      = stripslashes(trim($_POST['email']));
      $liste_qui  = stripslashes(trim($_POST['liste_qui']));
      $message      = stripslashes(trim($_POST['message']));
    }
    else
    {
      $nom        = trim($_POST['nom']);
      $prenom      = trim($_POST['prenom']);
      $email      = trim($_POST['email']);
      $liste_qui  = trim($_POST['liste_qui']);
      $message      = trim($_POST['message']);
    }

    /* Expression régulière permettant de vérifier si le
    * format d'une adresse e-mail est correct */
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';

    /* Expression régulière permettant de vérifier qu'aucun
    * en-tête n'est inséré dans nos champs */
    $regex_head = '/[\n\r]/';

    /* Si le formulaire n'est pas posté de notre site on renvoie
    * vers la page d'accueil */
   echo $_SERVER['HTTP_REFERER'];
    if($_SERVER['HTTP_REFERER'] != 'http://www.entrepot-osswald.net/contacts.php')
    {
      header('Location: http://www.entrepot-osswald.net/contacts.php');
    }
    /* On vérifie que tous les champs sont remplis */
    elseif (empty($nom)
          || empty($prenom)
          || empty($email)
          || empty($liste_qui)
          || empty($message))
    {
      $alert = 'Tous les champs doivent être renseignés';
    }
    /* On vérifie que le format de l'e-mail est correct */
    elseif (!preg_match($regex_mail, $email))
    {
      $alert = 'L\'adresse '.$email.' n\'est pas valide';
    }
    /* On vérifie qu'il n'y a aucun header dans les champs */
    elseif (preg_match($regex_head, $email)
            || preg_match($regex_head, $nom)
            || preg_match($regex_head, $prenom))
    {
        $alert = 'En-têtes interdites dans les champs du formulaire';
    }
    /* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
    elseif (!isset($_COOKIE['sent']))
    {
        /* Destinataire (mon adresse mail) */
        $to = 'auron818@free.fr';

        /* Construction du message */
        $msg  = 'Bonjour,'."\r\n\r\n";
        $msg .= 'Ce mail a été envoyé depuis entrepot-osswald.net par '.$nom.' '.$prenom.' '.$liste_qui."\r\n\r\n";
        $msg .= 'Voici le message qui vous est adressé :'."\r\n";
        $msg .= '***************************'."\r\n";
        $msg .= $message."\r\n";
        $msg .= '***************************'."\r\n";

        /* En-têtes de l'e-mail */
        $headers = 'From: '.$nom.' '.$prenom.' <'.$email.'>'."\r\n\r\n";

        /* Envoi de l'e-mail */
        if (mail($to, $nom, $msg, $headers))
        {
            $alert = 'E-mail envoyé avec succès';

            /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de
            * renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 120);

            /* On détruit la variable $_POST */
            unset($_POST);
        }
        else
        {
            $alert = 'Erreur d\'envoi de l\'e-mail';
        }

    }
    /* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
    else
    {
        unset($_POST);
    }
  exit;
}
?>


Désolé pour tout le temps que je vous fait perdre, merci de prendre autant de temps pour moi !!

Rapporter au modérateur  
Re:PHP invisible
« Répondre #8 sur: le 04-04-2013 a 10:52:30 »
pppplus
Habitué
***

Hors-Ligne

Messages: 482



php / mysql

Voir le Profil    WWW
Répondre avec citation

Relisez ma réponse précédente, je vous ai mis
1- pourquoi le message d'erreur (Warning: Cannot modify header information)
2- votre test sur $_SERVER['HTTP_REFERER'] n'est pas bon

Rapporter au modérateur  

capsules rechargeables Dolce Gusto et Nespresso
jeux flash gratuits avec la plus grosse boutique cadeaux du net
Accessoires cuisine pratiques
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg