Changement d'hébergement -> formulaire hs

Eléphanteau du PHP | 10 Messages

17 mars 2011, 03:19

Bonjour,

Mon site était hébergé chez NFrance et mon formulaire marchait très bien. =D>

Sur ma page contact j'avais :
<form method=POST action="traitement.php">
              <blockquote>
                <div align="left">
                  <br>
                  <br>
                  <input type="text" name="prenom" size="19" maxlength="50" value="Pr&eacute;nom" onFocus="javascript:if(this.value == 'Pr&eacute;nom') this.value='';" onBlur="javascript:if(this.value == '') this.value='Pr&eacute;nom';">
                  <input type="text" name="nom" size="20" maxlength="50" value="Nom" onFocus="javascript:if(this.value == 'Nom') this.value='';" onBlur="javascript:if(this.value == '') this.value='Nom';">
                  <br>
                </div>
                <div align="left">
                  <p>
                    <input type="text" name="email" size="20" maxlength="50" value="Adresse e-mail" onFocus="javascript:if(this.value == 'Adresse e-mail') this.value='';" onBlur="javascript:if(this.value == '') this.value='Adresse e-mail';">
                  </p>
                  <p>&nbsp; </p>
                </div>
                <div align="left">
                  <p><strong><font color="#FFFFFF" size="2" face="Arial, Helvetica, sans-serif">Commentaire :</font></strong></p>
                </div>
                <div align="left">
                  <p>
                    <TEXTAREA cols=60 rows=7 id=CPE value="" name=_Message style="margin-left:110px;"></TEXTAREA>
                </p>
                </div>
                <p><br>
                      <input name="submit" type="submit" value="Envoyer">
                      <input name="reset" type="reset" value="Annuler">
                  </div>
                </p>
              </blockquote>
            </form>
Et sur ma page de traitement
<?
            //On affiche ici les informations saisie
echo " Merci $prenom $nom,<br>";
?>
            <br>
            nous vous r&eacute;pondrons dans les plus brefs d&eacute;lais </span>
            <p align="center" class="Style3"><span class="Style3">Edu</span>chine</p>
            <p align="center">&nbsp;</p>
             <?

$_Message = stripslashes($_Message);

//On envoit un mail contenant les données
mail("*****@educhine.com","Formulaire Contact","Prénom : $prenom\n Nom : $nom\n Email : $email\n\n Message :\n$_Message","From: $email\nReply-To: $email"); 

?>
J'ai copié à l'identique le site sur mon nouvel hébergeur Hostpapa et là les formulaires me sont bien envoyés par email mais vide... Une idée du problème ? #-o

Merci de m'aider :priere:

Julien

Eléphant du PHP | 241 Messages

17 mars 2011, 03:47

Bonsoir,
il n'y a que ca dans ton fichier de traitement PHP ?
Sinon, il nous faut le code en entier pour mieux voir où sont les problèmes :mrgreen:

Eléphanteau du PHP | 10 Messages

17 mars 2011, 05:46

Bonjour,

Merci pour ta réponse. Non il y a plus dans mon fichier, mais pas grand chose non plus :
<html>
<head>
<title>Educhine vous dit merci !</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK REL="SHORTCUT ICON" HREF="http://www.educhine.com/favicon.ico">
<style type="text/css">
<!--
.Style3 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #FFFFFF;}
.Style4 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>
</head>

<body bgcolor="#666666" link="#FFFFFF" vlink="#FFFFFF" alink="#333333" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="85%"  border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td height="500"><p align="center">&nbsp;</p>
      <p align="center"><img src="images/logoeduchine.gif" width="379" height="128"></p>      
      <p align="justify">                  <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td bgcolor="#CC6600"><div align="center">
            <p>&nbsp;</p>
            
            <span class="Style3">
            <?
            //On affiche ici les informations saisie
echo " Merci $prenom $nom,<br>";
?>
            <br>
            nous vous r&eacute;pondrons dans les plus brefs d&eacute;lais </span>
            <p align="center" class="Style3"><span class="Style3">Edu</span>chine</p>
            <p align="center">&nbsp;</p>
             <?

$_Message = stripslashes($_Message);

//On envoit un mail contenant les données
mail("****@educhine.com","Formulaire Contact","Prénom : $prenom\n Nom : $nom\n Email : $email\n\n Message :\n$_Message","From: $email\nReply-To: $email"); 

?>
            <p align="center">
              <input name="submit" type="submit" class="bouton" onClick="window.close()" value="Fermer la fen&ecirc;tre">
            </p>
            <p align="center">&nbsp;</p>
          </div></td>
        </tr>
      </table>
      <p>&nbsp;</p>
  &nbsp;
    <p></p></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</html>

ViPHP
xTG
ViPHP | 7331 Messages

17 mars 2011, 08:54

Cela vient du fait que tu programmes en prenant compte une vieille configuration qui est désactivée chez la plupart des hébergeurs par sécurité.

Quand on utilise une variable provenant d'un formulaire en méthode POST il faut utiliser le tableau super-global $_POST.
Un champs de name prenom ne se récupérera donc par via $prenom mais via $_POST['prenom'].

Cette configuration implique aussi les autres variables super-globales.
url => $_GET
session => $_SESSION
cookie => $_COOKIE

Eléphanteau du PHP | 10 Messages

17 mars 2011, 11:55

Merci pour le tuyau ! =D>
Cela fait une bonne heure que je tourne sur le net mais je n'arrive pas à transformer mon code initial en un nouveau code intégrant ce système de tableau super-global.
Tous les exemples que je trouve ne font pas appel à la fonction mail() et je ne m'en sors pas du tout. :oops: :oops: :oops:

Désolé de vous solliciter encore, mais si quelqu'un pouvait m'indiquer à quoi doit ressembler mon code initial une fois passé à la moulinette du système de tableau super-global ce serait génial ! 8-|

ViPHP
xTG
ViPHP | 7331 Messages

17 mars 2011, 13:42

Simplement renommer toutes les variables en utilisant le tableau super-global qui la contient.

$prenom => $_POST['prenom']
$email => $_POST['email']
$_Message => $_POST['_Message']

Il n'y a pas plus simple. ^^'

Eléphanteau du PHP | 10 Messages

17 mars 2011, 14:50

ah bon ? Je crois que j'ai déjà essayé et que ça plantait, mais je vais le refaire.
Dois-je également les changer dans le formulaire ou que dans le fichier "traitement.php" ?

Merci encore !

ViPHP
xTG
ViPHP | 7331 Messages

17 mars 2011, 15:52

Tu n'as pas de PHP dans le formulaire, donc je ne vois pas de quoi tu parles...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 mars 2011, 16:10

de plus remplacer les <? par <?php histoire d'éviter des soucis les short tag ne sont plus par défaut sur les dernière version de php ;)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 10 Messages

18 mars 2011, 01:18

Alors, j'ai changé mon code comme conseillé ce qui donne pour la ligne mail() :
mail("****@educhine.com","Formulaire Contact","Prénom : $_POST['prenom']\n Nom : $_POST['nom']\n Email : $_POST['email']\n\n Message :\n$_POST['_Message']","From: $_POST['email']\nReply-To: $_POST['email']"); 
Mais on me signale une erreur sur la ligne 38 (celle qui correspond à la fonction mail() ) :
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/traitement2.php on line 38
:shock:

ViPHP
xTG
ViPHP | 7331 Messages

18 mars 2011, 08:51

En regardant la coloration syntaxique on remarque tout de suite ce qui cloche. ;)

Enserres tes variables de type array ainsi :
echo "{$unArray['unIndex']}";

Eléphanteau du PHP | 10 Messages

21 mars 2011, 05:27

J'ai trouvé, il manquait en fait cela en début de code PHP :
$prenom = $_POST['prenom']; 
$nom = $_POST['nom']; 
$email = $_POST['email'];
$_Message = $_POST['_Message'];
Pas facile d'être un débutant... =P~