Page 1 sur 1

Réécriture de scripts envoi formulaire à l'occasion d'une mi

Posté : 02 mai 2009, 18:41
(message d'un néophyte)

A la suite du projet de migration de mon site premier http://www.hotelcanal.fr vers un nouveau site (plus ouvert à l'international) mon hébergeur Amen m'a proposé de choisir leur nouveau mode hébergement Webpro+ ... ce que j'ai fait mais ce qu'ils ne m'avaient pas dit, c'est qu'il semble que le nouveau serveur ne soit plus en PHP4 mais PHP5 (alors que mon site premier a été développé en 2005 en PHP4 )

Bref mon problème actuel est que les variables $ d'un formulaire ne me sont plus transmises ...

Message d'erreur généré

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /web/sites/vhbu3/0/111/124668/public/www/en/contact.php on line 2

La Hotline technique d'Amen (spécialiste réseau mais pas en PHP) m'a indiqué de retravailler mes scripts tels quels :

Rester en PHP5 avec register_globals à Off et modifier vos scripts.
Pour chacune des variables de votre mail qui sont en provenance d'un formulaire, vous pouvez les déclarer avec $_request comme suit
$Nom= $_REQUEST['Nom']; $Prenom= $_REQUEST['Prenom']; etc...

Ce que j'ai fait comme suit :

codes sources réécrits :

Code : Tout sélectionner

<? $message = "Bonjour, \n\n Un nouveau visiteur vient de réserver (en anglais). \n Voici sa demande de réservation: \n\nhttp \n$Commentaire= $_REQUEST[ 'Commentaire' ] \n$TypeChambre= $_REQUEST[ 'TypeChambre' ] / $lit= $_REQUEST[ 'lit' ] \n\n$Nom= $_REQUEST[ 'Nom' ] / $Ville= $_REQUEST[ 'Ville' ] \n$Telephone1= $_REQUEST[ 'Telephone1' ] / $Telephone2= $_REQUEST[ 'Telephone2' ] \n$Mail= $_REQUEST[ 'Mail' ] \n\ncatégorie : $TypeChambre= $_REQUEST[ ' TypeChambre ' ] \narrivée : $Date= $_REQUEST[ 'Date' ] \nnbre nuits : $NbNuits= $_REQUEST[ 'NbNuits' ] \nnbre chbres : $NbChambres= $_REQUEST[ 'NbChambres' ] \nnbre pers. : $NbPersonnes= $_REQUEST[ 'NbPersonnes' ] \n\nmob. réd. : $Mobilite= $_REQUEST[ 'Mobilite' ] \ngarage : $Garage= $_REQUEST[ 'Garage' ] \npers. sup. : $Personnesup= $_REQUEST[ ' Personnesup' ] \n\n"; $texte = $message."\n"; ?>
alors que mon code source initiale (en PHP4 opérationnel) était :

Code : Tout sélectionner

<? $message = "Bonjour, \n\n Un nouveau visiteur vient de réserver (en anglais). \n Voici sa demande de réservation: \n\nhttp \n$commentaire \n$TypeChambre / $lit \n\n$nom / $ville \n$telephone1 / $telephone2 \n$mail \n\ncatégorie : $TypeChambre \narrivée : $date \nnbre nuits : $NbNuits \nnbre chbres : $NbChambres \nnbre pers. : $NbPersonnes \n\nmob. réd. : $mobilite \ngarage : $garage \npers. sup. : $personnesup \n\n"; $texte = $message."\n"; ?>
Mais le message d'erreur et le défaut de transmission demeurent.

Voila je ne sais si tout ceci vous parlera... mais a tout hasard help !

Jacques[/quote]

Posté : 02 mai 2009, 21:35
par Ryle
Le fait de passer register_globals à off a pour but d'obliger les développeurs à sécuriser les scripts, en devant spécifier explicitement l'origine des variables auxquels ils font appel (plus d'infos dans la faq)

En gros :
$Nom= $_REQUEST['Nom'];
A pour but de récupérer la valeur du champ "Nom" envoyé par le formulaire via la méthode get ou post, et stocker cette valeur dans la variable $Nom.

Ce n'est qu'une fois tes variables récupérées que tu pourras les utiliser dans ton script (l'idéal niveau sécurité étant de remplacer $_REQUEST par $_POST ou $_GET en fonction de la façon dont sont transmises les données) :
<?php
// récupère les données du formulaire :
$commentaire = $_REQUEST['commentaire'];
$TypeChambre = $_REQUEST['TypeChambre'];
$lit = $_REQUEST['lit'];
$nom = $_REQUEST['nom'];
...

$message = "Bonjour, \n\n Un nouveau visiteur vient de réserver (en anglais). \n Voici sa demande de réservation: \n\nhttp \n$commentaire \n$TypeChambre / $lit \n\n$nom / $ville \n$telephone1  / $telephone2 \n$mail \n\ncatégorie : $TypeChambre \narrivée : $date \nnbre nuits : $NbNuits \nnbre chbres : $NbChambres \nnbre pers. : $NbPersonnes \n\nmob. réd. : $mobilite \ngarage : $garage \npers. sup. : $personnesup \n\n"; 

$texte = $message."\n"; 
?>
Pour te simplifier la tâche, tu peux aussi utiliser la fonction extract() pour générer dynamiquement les variables associées aux éléments transmis par le formulaire :
<?php
// récupère les données du formulaire :
extract($_REQUEST);

$message = "...";
?>