Problème Formulaire

Problème Formulaire - PHP - Programmation

Marsh Posté le 31-10-2002 à 16:03:20    

Voilà, j'ai voulu faire un p'tit formulaire opur faire un concours sur mon site.
 
La page de test se trouve là : http://frenchiroquai.com/contact.php
 
Mais comme c un concours, j'ai voulu rajouter des boutons radio pour les réponses.
 
Je pensais que ce que j'avais fait marcherait mais non, j'obtiens ça quand je fais "envoyer" :
Parse error: parse error, unexpected ';' in /home/opt3/local/apache/htdocs/sites/f/frenchiroquai.com/html/formulaires/concours.php on line 354
 
Bon, comme je sens que je vais galérer à vous expliquer, voici plutôt en premier lieu le fichier avec le formulaire :

Code :
  1. <table width="100%" border="0">
  2.   <tr>
  3.     <td class="maintitle" valign="top">Concours</td>
  4.   </tr>
  5. </table><?
  6. if ($mail=='confirm') {print('Votre participation au concours a bien été envoyée, la liste de gagnants sera donnée prochainement sur Frenchiroquai.');}
  7. else {print('
  8. <span class="normal">
  9. <form vname="FormName" action="html/formulaires/concours.php" method="post" enctype="multipart/form-data" name="form">
  10.   <table border="0" cellpadding="5" cellspacing="0" width="100%" class="normal">
  11.     <tr>
  12.       <td width="20%" align="left" valign="top">Votre adresse e-mail:</td>
  13.       <td align="left" valign="top" width="80%"> <input type="text" name="email" size="35"><br>
  14.         <span class="footer"><font color="#FF0000">(noubliez pas votre adresse
  15.         e-mail sinon votre participation ne pourra être validée)</em></font></span>
  16.         <br>
  17.         <br> </td>
  18.     </tr>
  19.     <tr>
  20.       <td align="left" valign="top">Question n°1</td>
  21.       <td align="left" valign="top">Quel est le titre du premier album de Jamiroquai
  22.         ?
  23.         <p>
  24.           <label>
  25.           <input type="radio" name="qu1" value="Emergency On Planet Earth">
  26.           Emergency On Planet Earth</label>
  27.           <br>
  28.           <label>
  29.           <input type="radio" name="qu1" value="The Return Of The Space Cowboy">
  30.           The Return Of The Space Cowboy</label>
  31.           <br>
  32.           <label>
  33.           <input type="radio" name="qu1" value="Travelling Without Moving">
  34.           Travelling Without Moving</label>
  35.           <br>
  36.           <br>
  37.         </p></td>
  38.     </tr>
  39.     <tr>
  40.       <td align="left" valign="top">Question n°2</td>
  41.       <td align="left" valign="top">Quel est le nom du nouveau claviériste
  42.         de Jamiroquai ?
  43.         <p>
  44.           <label>
  45.           <input type="radio" name="qu2" value="Toby Smith">
  46.           Toby Smith</label>
  47.           <br>
  48.           <label>
  49.           <input type="radio" name="qu2" value="Matt Johnson">
  50.           Matt Johnson</label>
  51.           <br>
  52.           <label>
  53.           <input type="radio" name="qu2" value="Nick Fyffe">
  54.           Nick Fyffe</label>
  55.           <br>
  56.           <br>
  57.         </p></td>
  58.     </tr>
  59.     <tr>
  60.       <td width="20%" align="left" valign="top">Question n°3</td>
  61.       <td align="left" valign="top">Dans quel groupe Derrick McKenzie a joué
  62.         avant de rejoindre Jamiroquai en tant que batteur ?
  63.         <p>
  64.           <label>
  65.           <input type="radio" name="qu3" value="Brand New Heavies">
  66.           Brand New Heavies</label>
  67.           <br>
  68.           <label>
  69.           <input type="radio" name="qu3" value="Urban Species">
  70.           Urban Species</label>
  71.           <br>
  72.           <label>
  73.           <input type="radio" name="qu3" value="Red Hot Chili Peppers">
  74.           Red Hot Chili Peppers</label>
  75.           <br>
  76.           <br>
  77.         </p></td>
  78.     </tr>
  79.     <tr>
  80.       <td align="left" valign="top" width="20%">Commentaires :</td>
  81.       <td align="left" valign="top" width="80%"> <textarea rows="5" name="msg" cols="40"></textarea>
  82.       </td>
  83.     </tr>
  84.     <tr>
  85.       <td align="left" valign="top" width="20%"></td>
  86.       <td align="left" valign="top" width="80%"> <div align="left">
  87.           <input type="submit" value="Envoyer" onClick="verifForm(this.form)">
  88.         </div></td>
  89.     </tr>
  90.   </table>
  91. </form>
  92. </span>');}
  93. ?>


 
Et maintenant, voici le fichier appelé par le formulaire :

Code :
  1. z<?
  2. $dest="concours@frenchiroquai.com";
  3. $reponse=StripSlashes(include('confirm-aide.php'));
  4. class Mail
  5. {
  6.         var $sendto= array();
  7.         var $from, $msubject;
  8.         var $acc= array();
  9.         var $abcc= array();
  10.         var $aattach= array();
  11.         var $priorities= array( '1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)' );
  12. // Mail contructor
  13. function Mail()
  14. {
  15.         $this->autoCheck( true );
  16. }
  17. /*                autoCheck( $boolean )
  18. *                activate or desactivate the email addresses validator
  19. *                ex: autoCheck( true ) turn the validator on
  20. *                by default autoCheck feature is on
  21. */
  22. function autoCheck( $bool )
  23. {
  24.         if( $bool )
  25.                 $this->checkAddress = true;
  26.         else
  27.                 $this->checkAddress = false;
  28. }
  29. /*                Subject( $subject )
  30. *                define the subject line of the email
  31. *                $subject: any valid mono-line string
  32. */
  33. function Subject( $subject )
  34. {
  35.         $this->msubject = strtr( $subject, "\r\n" , "  " );
  36. }
  37. /*                From( $from )
  38. *                set the sender of the mail
  39. *                $from should be an email address
  40. */
  41. function From( $from )
  42. {
  43.         if( ! is_string($from) ) {
  44.                 echo "Class Mail: error, From is not a string";
  45.                 exit;
  46.         }
  47.         $this->from= $from;
  48. }
  49. /*                To( $to )
  50. *         set the To ( recipient )
  51. *                $to : email address, accept both a single address or an array of addresses
  52. */
  53. function To( $to )
  54. {
  55.         // TODO : test validité sur to
  56.         if( is_array( $to ) )
  57.                 $this->sendto= $to;
  58.         else
  59.                 $this->sendto[] = $to;
  60.         if( $this->checkAddress == true )
  61.                 $this->CheckAdresses( $this->sendto );
  62. }
  63. /*                Cc()
  64. *                set the CC headers ( carbon copy )
  65. *                $cc : email address(es), accept both array and string
  66. */
  67. function Cc( $cc )
  68. {
  69.         if( is_array($cc) )
  70.                 $this->acc= $cc;
  71.         else
  72.                 $this->acc[]= $cc;
  73.         if( $this->checkAddress == true )
  74.                 $this->CheckAdresses( $this->acc );
  75. }
  76. /*                Bcc()
  77. *                set the Bcc headers ( blank carbon copy ).
  78. *                $bcc : email address(es), accept both array and string
  79. */
  80. function Bcc( $bcc )
  81. {
  82.         if( is_array($bcc) ) {
  83.                 $this->abcc = $bcc;
  84.         } else {
  85.                 $this->abcc[]= $bcc;
  86.         }
  87.         if( $this->checkAddress == true )
  88.                 $this->CheckAdresses( $this->abcc );
  89. }
  90. /*                Body()
  91. *                set the body of the mail ( message )
  92. */
  93. function Body( $body )
  94. {
  95.         $this->body= $body;
  96. }
  97. /*                Send()
  98. *                fornat and send the mail
  99. */
  100. function Send()
  101. {
  102.         // build the headers
  103.         $this->_build_headers();
  104.         // include attached files
  105.         if( sizeof( $this->aattach > 0 ) ) {
  106.                 $this->_build_attachement();
  107.                 $body = $this->fullBody . $this->attachment;
  108.         }
  109.         // envoie du mail aux destinataires principal
  110.         for( $i=0; $i< sizeof($this->sendto); $i++ ) {
  111.                 $res = mail($this->sendto[$i], $this->msubject,$body, $this->headers);
  112.                 // TODO : trmt res
  113.         }
  114. }
  115. /*                Organization( $org )
  116. *                set the Organisation header
  117. */
  118. function Organization( $org )
  119. {
  120.         if( trim( $org != "" )  )
  121.                 $this->organization= $org;
  122. }
  123. /*                Priority( $priority )
  124. *                set the mail priority
  125. *                $priority : integer taken between 1 (highest) and 5 ( lowest )
  126. *                ex: $m->Priority(1) ; => Highest
  127. */
  128. function Priority( $priority )
  129. {
  130.         if( ! intval( $priority ) )
  131.                 return false;
  132.         if( ! isset( $this->priorities[$priority-1]) )
  133.                 return false;
  134.         $this->priority= $this->priorities[$priority-1];
  135.         return true;
  136. }
  137. /*                Attach( $filename, $filetype )
  138. *                attach a file to the mail
  139. *                $filename : path of the file to attach
  140. *                $filetype : MIME-type of the file. default to 'application/x-unknown-content-type'
  141. *                $disposition : instruct the Mailclient to display the file if possible ("inline" ) or always as a link ("attachment" )
  142. *                        possible values are "inline", "attachment"
  143. */
  144. function Attach( $filename, $filetype='application/x-unknown-content-type', $disposition = "inline" )
  145. {
  146.         // TODO : si filetype="", alors chercher dans un tablo de MT connus / extension du fichier
  147.         $this->aattach[] = $filename;
  148.         $this->actype[] = $filetype;
  149.         $this->adispo[] = $disposition;
  150. }
  151. /*                Get()
  152. *                return the whole e-mail , headers + message
  153. *                can be used for displaying the message in plain text or logging it
  154. */
  155. function Get()
  156. {
  157.         $this->_build_headers();
  158.         if( sizeof( $this->aattach > 0 ) ) {
  159.                 $this->_build_attachement();
  160.                 $this->body= $this->body . $this->attachment;
  161.         }
  162.         $mail = $this->headers;
  163.         $mail .= "\n$this->body";
  164.         return $mail;
  165. }
  166. /*         ValidEmail( $email )
  167. *         return true if email adress is ok - regex from Manuel Lemos (mlemos@acm.org)
  168. *                $address : email address to check
  169. */
  170. function ValidEmail($address)
  171. {
  172.         if( ereg( ".*<(.+)>", $address, $regs ) ) {
  173.                 $address = $regs[1];
  174.         }
  175.          if(ereg( "^[^@  ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$",$address) )
  176.                  return true;
  177.          else
  178.                  return false;
  179. }
  180. /*                CheckAdresses()
  181. *         check validity of email addresses
  182. *         if unvalid, output an error message and exit, this may be customized
  183. *                $aad : array of emails addresses
  184. */
  185. function CheckAdresses( $aad )
  186. {
  187.         for($i=0;$i< sizeof( $aad); $i++ ) {
  188.                 if( ! $this->ValidEmail( $aad[$i]) ) {
  189.                         echo "Class Mail, method Mail : invalid address $aad[$i]";
  190.                         exit;
  191.                 }
  192.         }
  193. }
  194. /********************** PRIVATE METHODS BELOW **********************************/
  195. /*                _build_headers()
  196. *                 [INTERNAL] build the mail headers
  197. */
  198. function _build_headers()
  199. {
  200.         // creation du header mail
  201.         $this->headers= "From: $this->from\n";
  202.         $this->to= implode( ", ", $this->sendto );
  203.         if( count($this->acc) > 0 ) {
  204.                 $this->cc= implode( ", ", $this->acc );
  205.                 $this->headers .= "CC: $this->cc\n";
  206.         }
  207.         if( count($this->abcc) > 0 ) {
  208.                 $this->bcc= implode( ", ", $this->abcc );
  209.                 $this->headers .= "BCC: $this->bcc\n";
  210.         }
  211.         if( $this->organization != ""  )
  212.                 $this->headers .= "Organization: $this->organization\n";
  213.         if( $this->priority != "" )
  214.                 $this->headers .= "X-Priority: $this->priority\n";
  215. }
  216. /*
  217. *                _build_attachement()
  218. *                internal use only - check and encode attach file(s)
  219. */
  220. function _build_attachement()
  221. {
  222.         $this->boundary= "------------" . md5( uniqid("myboundary" ) ); // TODO : variable bound
  223.         $this->headers .= "MIME-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$this->boundary\"\n\n";
  224.         $this->fullBody = "This is a multi-part message in MIME format.\n--$this->boundary\nContent-Type: text/plain; charset=us-ascii\nContent-Transfer-Encoding: 7bit\n\n" . $this->body ."\n";
  225.         $sep= chr(13) . chr(10);
  226.         $ata= array();
  227.         $k=0;
  228.         // for each attached file, do...
  229.         for( $i=0; $i < sizeof( $this->aattach); $i++ ) {
  230.                 $filename = $this->aattach[$i];
  231.                 $basename = basename($filename);
  232.                 $ctype = $this->actype[$i];        // content-type
  233.                 $disposition = $this->adispo[$i];
  234.                 if( ! file_exists( $filename) ) {
  235.                         echo "Class Mail, method attach : file $filename can't be found"; exit;
  236.                 }
  237.                 $subhdr= "--$this->boundary\nContent-type: $ctype;\n name=\"$basename\"\nContent-Transfer-Encoding: base64\nContent-Disposition: $disposition;\n  filename=\"$basename\"\n";
  238.                 $ata[$k++] = $subhdr;
  239.                 // non encoded line length
  240.                 $linesz= filesize( $filename)+1;
  241.                 $fp= fopen( $filename, 'r' );
  242.                 $data= base64_encode(fread( $fp, $linesz));
  243.                 fclose($fp);
  244.                 $ata[$k++] = chunk_split( $data );
  245. /*
  246.                 // OLD version - used in php < 3.0.6 - replaced by chunk_split()
  247.                 $deb=0; $len=76; $data_len= strlen($data);
  248.                 do {
  249.                         $ata[$k++]= substr($data,$deb,$len);
  250.                         $deb += $len;
  251.                 } while($deb < $data_len );
  252. */
  253.         }
  254.         $this->attachment= implode($sep, $ata);
  255. }
  256. } // class Mail
  257. $subject=StripSlashes($subject);
  258. $qu1="Question n°1 :
  259. $_REQUEST['qu1']";
  260. $qu2="Question n°2 :
  261. $_REQUEST['qu2']";
  262. $qu3="Question n°3 :
  263. $_REQUEST['qu3']";
  264. $msg=StripSlashes($msg);
  265. $msg="Commentaires :
  266. $msg";
  267. $m= new Mail; // create the mail
  268.         $m->From( "$email" );
  269.         $m->To( "$dest" );   
  270.         $m->Subject( "Participation au concours" );
  271.         $m->Body( $qu1; $qu2; $qu3; $msg);        // set the body
  272. if ($email1!="" ) {
  273.         $m->Cc( "$email1" );
  274. }
  275.         $m->Priority($priority) ; 
  276. if ("$NomFichier_name"!="" ) {
  277. copy("$NomFichier","../upload/$NomFichier_name" );
  278. $m->Attach( "../upload/$NomFichier_name", "application/octet-stream" );
  279. }
  280.         $m->Send();
  281. if ("$NomFichier_name"!="" ) {
  282. Unlink("../upload/$NomFichier_name" );   }   
  283. echo "$reponse";
  284. ?>


 
Je vous remercie d'avance pour votre aide, aidez-moi vite, car je dois mettre en ligne mon concours très rapidement.

Reply

Marsh Posté le 31-10-2002 à 16:03:20   

Reply

Marsh Posté le 31-10-2002 à 16:37:04    

Hum avant totue chose as-tu bien été voir ligne 354 du fichier concours.php?
 
Une parse error se corrige d'habitude assez facilement ;)
 
Sinon, poste le code COMPLET du fichier concours.php, car ce n'est pas clair dans ton post ;)

Reply

Marsh Posté le 31-10-2002 à 17:00:50    

qui est assez courageux pour compter jusqua 354  :D
 
ca serait pas ca par hasard ???
 
$m->Body( $qu1; $qu2; $qu3; $msg);       // set the body


Message édité par beleg le 31-10-2002 à 17:02:29
Reply

Marsh Posté le 31-10-2002 à 17:28:56    

Ho ptain :D
 
J'ai fait un copier-coller sur UE, mais pas trouvé la bonne ligne [:spamafote]

Reply

Marsh Posté le 31-10-2002 à 17:32:32    

Fred999 a écrit a écrit :

Ho ptain :D
 
J'ai fait un copier-coller sur UE, mais pas trouvé la bonne ligne [:spamafote]




 
idem ... ce que jai collé c la ligne 351
et cest mal indenté :D

Reply

Marsh Posté le 31-10-2002 à 17:57:54    

beleg a écrit a écrit :

 
 
idem ... ce que jai collé c la ligne 351
et cest mal indenté :D  




 
Le forum ne reconnaît pas les tabulations, donc ta belle indentation ne rend jamais ;)
 
De plus, une longueur de ligne infinie ne serait pas de trop, là c'est très souvent illisible! :D
 
Allez à force de le demander Joce avait fait la feature [code], y a pas de raison qu'il ne l'améliore pas ;)

Reply

Marsh Posté le 31-10-2002 à 18:42:59    

Ne vous embêtez plus, jh'ai trouvé tout seul la solution !!! Merci pour votre aide !

Reply

Marsh Posté le 31-10-2002 à 18:53:56    

Si tu bosses sous windows et que t'as pas de logiciel qui indique sur quelle ligne t'en es, essayes phpedit.
Sous win9x il merde parfois mais sous winNT, j'ai pas encore eu de problème (je gardes pas plus de 10 fichier ouvert à la fois).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed