8722 sujets

Développement web côté serveur, CMS

Bonjour à toutes et à tous et merci de m'accueillir sur votre forum,


Voilà, je vous expose mon problème (je précise que je suis débutant).
J'ai créé une série de formulaires HTML avec traitement PHP et envoi des données par mail à différents destinataires. Certaines de ces données sont affichées sous forme de tableaux dans la page de confirmation et dans les mails envoyés.

Jusqu'à présent mon système fonctionnait bien. Je viens cependant d'activer PHP5.4 sur mon serveur et là, gros problème !!! Les variables ne sont plus envoyées...

Je précise que mon système fonctionnait avec php5.2 et avec la fonction register_globals activée car mes variables étaient récupérées sous cette forme : $exemple

A priori php 5.4 ne permet plus d'activer register_globals donc je suis bien embêté...

Avez-vous une idées pour que je puisse continuer à utiliser mes formulaires sans avoir à modifier en profondeur toutes mes pages de traitement ?

Merci de votre aide


Ci-dessous un exemple de formulaire (réduit pour aller à l'essentiel)


Formulaire HTML :

<HTML>
<HEAD>

<TITLE>ENGAGEMENTS GYM</TITLE>

</HEAD>
<BODY>
  
<FORM name="form1" method="POST" action="t6633.php?<?PHP echo SID; ?>">
  
<H2> VOS COORDONNEES</H2>
Association*: <INPUT type="text" name="association" size=50> Correspondant*: <INPUT type="text" name="correspondant" size=51> </p>
Adresse*: <INPUT type="text" name="adresse" size=60> Mail*: <INPUT type="text" name="mail" size=36> Tel*: <INPUT type="text" name="tel" size=12> </p></p>
Les champs marqués d'un * doivent obligatoirement être renseignés. </p></p>

</p> 
Veuillez remplir les informations ci-dessous :</p>  
</p> 
</p> 
<H2> LISTE DES INSCRITS </H2>
<TABLE BORDER WIDTH=1000 BORDER="1" CELLSPACING="0" BGCOLOR="#FFFFAA">
  <TR>
 <TH WIDTH=20> N° </TH> 
 <TH WIDTH=340> Nom/Prénom </TH>
 <TH WIDTH=240> N°Licence </TH>
 <TH WIDTH=200> Date de Naissance (JJ/MM/AAAA) </TH> 
 <TH WIDTH=200> S'inscrit en ... </TH>                                                 
</TR>
  <TR>
 <TD> 1 </P></TD>  
 <TD ALIGN="center"><INPUT TYPE="text" NAME="a_1" size="40" </P></TD>
 <TD ALIGN="center"><INPUT TYPE="text" NAME="a_2" size="29" </P></TD>
 <TD ALIGN="center"><INPUT TYPE="text" NAME="a_3" size="25" </P></TD>
 <TD ALIGN="center"><SELECT NAME="a_4" size="1"><OPTION> <OPTION>GYM 1 <OPTION>GYM 2 </SELECT></TD> 
  </TR>      
</TABLE>
</p>

<INPUT type="submit" style="height: 50px" value="Envoyer la demande d'inscription au Comité" onClick="return verif()"> (Obligatoire pour que votre demande soit prise en compte)</p>

</FORM>
</BODY>
</HTML>



Page de traitement et d'envoi du mail :

<?php
//destinataire :
$to = "adresse@mail.com, $mail";

// sujet :
$subject = "INIGYM";

// message :
$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<H2>COORDONNEES</H2>
<table BORDER WIDTH=\"600\" BORDER=\"1\" CELLSPACING=\"0\">
<tr>
<td>$association</td>
</tr>
<tr>
<td>$correspondant</td>
</tr>
<tr>
<td>$adresse</td>
</tr>
<tr>
<td>$mail</td>
</tr>
<tr>
<td>$tel</td>
</tr>
<tr>
<td>$commentaire</td>
</tr>
</table>
</p>

<H2>INSCRIPTIONS INIGYM </H2>
<table BORDER WIDTH=\"1000\" BORDER=\"1\" CELLSPACING=\"0\">
<tr>
<th WIDTH=\"350\">Nom/Prénom</th>
<th WIDTH=\"250\">N°Licence</th>
<th WIDTH=\"200\">Date de Naissance (JJ/MM/AAAA)</th>
<th WIDTH=\"200\">S'inscrit en ...</th>
</tr>
<tr>
<td>$a_1</td>
<td>$a_2</td>
<td>$a_3</td>
<td>$a_4</td>
</tr>
</table>
</p>
</body>
</html>
";

// Pour envoyer un mail au format html, vous pouvez configurer le type content-type :
$headers = "MIME-Version: 1.0\r\n";
$headers .= "content-type: text/html; charset=iso-8859-1\r\n";

// D'autres en-têtes : errors, From cc's, bcc's, etc :
$headers .= "From: $association <$mail> \n";

//envoi du mail :
mail($to, $subject, $message, $headers);

echo "<HTML><HEAD>";
echo "<TITLE>Formulaire envoyé ! </TITLE></HEAD><BODY>";
echo "<P align=center>";
echo '<img src="logoCD.png" border="0" /> ';
echo "<HR align=center>";
echo "<H1 align=center> <font color='#000000'> Merci, $correspondant </H1>";
echo "<P align=center> Votre formulaire a bien été envoyé !</P>";
echo "<P align=center> Ci-dessous la liste récapitulative des inscrits : </P>";
echo "<center><table BORDER WIDTH=\"1000\" BORDER=\"1\" CELLSPACING=\"0\">
<tr>
<th WIDTH=\"350\">Nom/Prénom</th>
<th WIDTH=\"250\">N°Licence</th>
<th WIDTH=\"200\">Date de Naissance (JJ/MM/AAAA)</th>
<th WIDTH=\"200\">S'inscrit en ...</th>
</tr>
<tr>
<td>$a_1</td>
<td>$a_2</td>
<td>$a_3</td>
<td>$a_4</td>
</tr>
</table></center>";
echo "</BODY></HTML>";
?> 
Bon je me lance.
Tu envoies tes variables en POST.
il faut que t3366.php déclaré dans action au début de ton form soit le nom de ton fichier de traitement avec le bon chemin.
Plutôt que du global récupère le POST:
dans ton fichier de traitement, tout en haut :
<?php
if(isset ($_POST)){
extract ($_POST);
}
// ce que je te propose c'est de renommer t3366.php en sauvegarde3366.php
// fait un nouveau t3366.php avec juste
<?php
if(isset ($_POST)){
extract ($_POST);
echo $association.$correspondant.$adresse.$mail.$tel.$a_1.$a_2.$a_3.$a_4;
}
?>
// et tu verras si les variable passe. si c'est le cas tu completes ton fichier initial.
tiens moi courant, je débute aussi et j'aimerai savoir si c'est correct.
Au fait j'ai stocké ton code dans un coin ça peut servir. Je suis aussi dans une association sportive.
Modifié par Lemonstr (01 Mar 2013 - 11:29)
Merci pour ta réponse.
Celle-ci semble proche de la solution que j'ai pu trouver moi-même il y a très peu de temps.

J'ai simplement ajouté au début de mon fichier de traitement php les éléments suivants :

<?php

// Annonce des variables récupérées

$association = $_POST['association'];
$correspondant = $_POST['correspondant'];
$adresse = $_POST['adresse'];
$mail = $_POST['mail'];
$tel = $_POST['tel'];
$commentaire = $_POST['commentaire'];

$a_1 = $_POST['a_1']; 
$a_2 = $_POST['a_2'];
$a_3 = $_POST['a_3'];
$a_4 = $_POST['a_4'];

//destinataire :
$to = "adresse@mail.com, $mail";

//etc....



J'ai testé le formulaire avec une version 5.4 de php et tout semble fonctionner comme avant.
Ouf... Smiley sweatdrop

N'hésite pas en cas de besoin.

Bon courage.