Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1273 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Balise <form> qui ne renvoie rien à mon script PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Balise <form> qui ne renvoie rien à mon script PHP

n°1790842
Photofanch
Posté le 23-09-2008 à 11:37:30  profilanswer
 

Bonjour
 
J'ai réalisé un formulaire, qui renvoie vers un code php. Celui-ci doit renvoyer les champs du formulaire par mail.
 
Mon script php se retrouve dans le formulaire:
<form action="monscript.php" method="post">
 
Ce script contient le code suivant:
 
<?php
//on définir et initialise quelques variables
$destinataire='moi@monsite.com';
$header='From: '.$_POST['monMail'];
$subject='Nouvelle réservation';
$message = 'Nom: ' . $_POST['monNom'] . '\n';
$message .= 'Prénom: ' . $_POST['monPrenom'] . '\n';
$message .= 'Age: ' . $_POST['monAge'] . '\n';
$message .= 'Adresse: ' . $_POST['monAdr'] . '\n';
$message .= 'Code Postal: ' . $_POST['monCP'] . '\n';
$message .= 'Ville: ' . $_POST['maVille'] . '\n';
$message .= 'Numero de tel: ' . $_POST['monTel'] . '\n';
$message .= 'URL: ' . $_POST['monSite'] . '\n';
$message .= 'Mail: ' . $_POST['monMail'] . '\n';
//on envoie le mail en séparant les adresse des deux destinataires par une virgule et un espace
mail($destinataire,$subject,$message,$header);
//on dirige vers le résultat
header('Location: http://www.monsite.com/test/merci.html');
?>
 
Et le message que je reçois m'indique systématiquement:
 
Nom:
Prénom:
Age:
...
 
Ma balise FORM ne renvoit rien !!!!! ni avec Firefox ni avec IE...
 
J'ai modifié mon code, au lieu d'envoyer le mail, je lui demande de m'écrire directement ce que me poste le formulaire
J'ai donc écrit:
echo $message;
 
 
Et il me donne la chose suivante (j'ai renseigné les champs dans la page html, chacun comporte normalement la valeur "zz" ):
Nom: \nPrénom: \nAge: \nAdresse: \nCode Postal: \nVille: \nNumero de tel: \nURL: \nMail: \n
 
 
Je n'ai donc que des variables vides ?
 
 
 
J'aurais pourtant juré que c'était le script php qui ne marche pas, puisque je suis bien meilleur programmateur en html qu'en php... Mais non, j'ai la preuve que ma balise <FORM> ne renvoie rien!!!!!
 
En visitant les différents sujets sur internet, qui parlaient de ce problème, j'ai lu qu'il fallait modifier les paramètres de serveur php, ou tester de nouveaux codes... Pourtant à la base, j'utilise un script tout à fait basique, que beaucoup utilisent tous les jours et qui marche.
 
Pareil en renvoyant les champs de mon formulaire sous Flash, avec ActionScript3: je reçois des messages vides!!!!!
 
S'il vous plaît, aidez-moi à comprendre ce problème, je suis dessus depuis 8h ce matin et je ne trouve aucune solution!!!
 
Merci!
 
 

mood
Publicité
Posté le 23-09-2008 à 11:37:30  profilanswer
 

n°1790857
olivthill
Posté le 23-09-2008 à 12:08:30  profilanswer
 

Qu'y a-t-il entre <form action="monscript.php" method="post">  et </form> ?
Par exemple, est-ce que l'on a bien <input type=text name="monNom" id="monNom"> ?
Est-ce qu'il y a un boutton de type "submit" (pour déclencher l'action du form) et non pas uniquement de type "button" (qui ne déclenche pas cette action) ?

n°1790892
omega2
Posté le 23-09-2008 à 13:05:56  profilanswer
 

Fait un "print_r($_POST);" pour voir ce que cette variable contient.
Sinon, vérifie la variable "$monMail" dès le début du script pour voir si les données ne seraient pas là.
 
Au fait, c'est quelle version de php sur ce serveur?

n°1790945
CyberDenix
Posté le 23-09-2008 à 15:47:39  profilanswer
 

Photofanch a écrit :

puisque je suis bien meilleur programmateur en html qu'en php...


 
On dit programmeur, ou développeur si on est distingué.
 
Et je ne sait pas pas comment tu fais pour "programmer" du HTML.
Le langage HTML (HyperText Markup Language) est, comme son nom l'indique, un langage de balisage... et en aucun cas un langage de programmation !
 
 :hello:  
 
 
Essaye ceci :
 
form.php

Code :
  1. <?php
  2.  
  3. echo '<form action=\'test.php\' method=\'post\'>'."\n";
  4. echo '  <input type=\'text\' name=\'city\' />'."\n";
  5. echo '</form>'."\n";
  6.  
  7. ?>


 
test.php

Code :
  1. <?php
  2.  
  3. echo '$_POST[\'city\'] = '.$_POST['city'];
  4.  
  5. ?>


Message édité par CyberDenix le 23-09-2008 à 15:48:48

---------------
Directeur Technique (CTO)
n°1791068
grosbin
OR die;
Posté le 23-09-2008 à 19:50:10  profilanswer
 

toi t'es fan du single quote :D


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1791136
leflos5
On est ou on est pas :)
Posté le 24-09-2008 à 02:16:52  profilanswer
 

grosbin a écrit :

toi t'es fan du single quote :D


C'est bien quand le double n'est pas nécessaire en php mais en html c'est " obligatoire :o

n°1791163
Photofanch
Posté le 24-09-2008 à 09:06:34  profilanswer
 

Oui en Html je sais que c'est obligatoire :p
 
Désolé pour le "programmateur" mais comme je n'écris du html que quand j'ai besoin de mettre mon site à jour, j'ai fait un petit écart de vocabulaire, je m'excuse auprès des puristes (tout comme "programmer" du html, je suis photographe, pas webdesigner, donc sorry là aussi)
 
 
Donc mon code html est bien en double quote, là où mon script php est en single quote.
 
 
>> olivthill: j'ai bien mis, partout, des balises input de type text, comme celle-ci <input type=text name="monNom" id="monNom">, mais sans déclarer d'id dans les balises. Si je ne m'abuse c'est le "name" qui est posté au script php, pas l'id. Mais si j'ai faux, c'est peut-être de là que vient mon erreur.
Et j'ai bien un bouton de validation de type <input type="submit">
 
 
Merci pour les réponses, et si vous en avez d'autres, je suis preneur...


Message édité par Photofanch le 24-09-2008 à 09:07:22
n°1791199
omega2
Posté le 24-09-2008 à 10:32:16  profilanswer
 

Photofanch > Pour le coup du "programmeur contre programmateur", c'est un peu comme si tu disais "portique" quand tu parles d'un portier. ;) C'est juste des mots qui ne désignent pas du tout la même chose.
Bon sinon, ça en est où? T'as essayé ce qu'on t'a indiqué?

n°1791429
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 24-09-2008 à 15:04:25  profilanswer
 

hello,
effectivement c'est bien le "name" qui est envoyé.
 
Faudrait que tu postes soit le formulaire, soit le résultat du print_r($_POST) pour qu'on puisse avancer ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1791451
Photofanch
Posté le 24-09-2008 à 15:45:14  profilanswer
 

OK je fais ça ce soir si j'ai le temps
 
Je regarde aussi du côté des paramètres php du serveur ovh, on ne sait jamais.

mood
Publicité
Posté le 24-09-2008 à 15:45:14  profilanswer
 

n°1791675
gatsu35
Blablaté par Harko
Posté le 25-09-2008 à 07:49:06  profilanswer
 

AFFICHE LE CODE HTML GENERE DE TON FORMULAIRE  
 
MERCI

n°1791734
Photofanch
Posté le 25-09-2008 à 11:10:46  profilanswer
 

Le print_r($_POST) me renvoie:
 
Array ( )  
 
 
Le formulaire, le voici (imbriqué dans un tableau, j'ai donc fait une copie du code sans les balises tr, td, ...
 
 
<form name="FCS_resa" class="cssform" action="form.php" method="post">
<input type="text" name="monNom">
<input type="text" name="accNom">
<input type="text" name="monPrenom">
<input type="text" name="accPrenom">
<input type="text" name="monAge">
<input type="text" name="accAge">
<input type="text" name="monAdr">
<input type="text" name="accLien">
<input type="text" name="monCP">
<input type="text" name="maVille">
<input type="text" name="monTel">
<select name="formuleChoisie">
<option value ="book6">Book 6 photos</option>
<option value ="book9">Book 9 photos</option>
<option value ="book12">Book 12 photos</option>
<option value ="book15">Book 15 photos</option>
<option value ="book20">Book 20 photos</option>
<option value ="book24">Book 24 photos</option>
</select>
<input type="text" name="monSite" value="http://">
<select name="rdvCoiffMaqu">
<option value ="non">Je m'en occupe</option>
<option value ="oui">Me prendre un rdv</option>
</select>
<input type="text" name="monMail">
<select name="joignable">
<option value ="matin">Le matin</option>
<option value ="midi">Au déjeûner</option>
<option value ="ap_midi">Dans l'après-midi</option>
<option value ="soir">Le soir</option>
<option value ="journee">Toute la journée</option>
<option value ="weekend">Le week-end</option>
</select>
<textarea name="commentaires"></textarea>
<input type="submit" class="formbutton" value="Envoyer">
</form>
 

n°1791750
omega2
Posté le 25-09-2008 à 11:39:21  profilanswer
 

  • $_POST et les autres superglobales du genre n'existent que si la version de php est supérieure ou égale à 4.1.0 .

   => A vérifier à l'aide de la fonction phpversion() ( <? echo phpversion(); ?> )
 

  • $HTTP_POST_VAR et les autres variables du genre n'existent que si "register_long_arrays" est à "on" dans le php.ini

   => A vérifier à l'aide de la fonction phpinfo()
 

  • Les variables telles que "$monNom" ne sont créé automatiquement que si "register_globals" est à "on" dans le php.ini.

   => A vérifier à l'aide de la fonction phpinfo()
 
 
 
Vu qu'on a quasiment pas avancé en 48 heures voilà en gros ce qu'il faut que tu vérifies. A partir de là tu sauras ce que tu peux utiliser pour récupérer tes variables. A noter que seules les superglobales ($_POST et co) sont accessible dans les fonctions sans faire de "global $unevariable;".

n°1792010
CyberDenix
Posté le 25-09-2008 à 17:15:14  profilanswer
 

1) Ferme tes balises input : <input ... />
2) Ne mets pas d'espace entre le value et le = dans tes éléments option.
3) Indente ton code
4) Ceci ne te pose-t-il pas de problèmes ? Je m'en occupe
 
En HTML, tu peux mettre des simples ou double quote autour des attributs.
En XHTML tu dois mettre des simples ou double quote autour des attributs.


---------------
Directeur Technique (CTO)
n°1792570
Photofanch
Posté le 26-09-2008 à 16:05:33  profilanswer
 

C'est sûr que mon HTML est assez ancien, mais bon j'ai toujours fait comme ça donc j'y suis habitué.  
 
Le "je m'en occupe" ne pose pas de problème puisque dans le POST, ça doit renvoyer quelque chose comme &rdvCoiffMaqu=non
 
 
Pour la config php:
 
Version 4.4.9
register_globals est On
Je n'ai aucune trace de register_long_arrays
 
Faut-il ajouter une ligne register_long_arrays dans le php.ini ?
 

n°1792576
Photofanch
Posté le 26-09-2008 à 16:12:48  profilanswer
 

Je reviens sur mon message précédent:
 
Après une petite manip indiquée par ovh, je suis passé à la version 5.2.6
 
Et là, ô miracle, register_globals et register_long_arrays sont "On"
 
Je teste à nouveau le script, et toujours le même problème:
 
Les champs sont vides.

n°1792577
flo850
moi je
Posté le 26-09-2008 à 16:14:49  profilanswer
 

register_long_arrays  n'est utile que si tu utilise $HTTP_POST_VARS, ce qui n'est pas le cas  
 
 
est ce que ton formulaire et la page de traitement sont des fichiers php distincts ?

n°1792579
Photofanch
Posté le 26-09-2008 à 16:22:16  profilanswer
 

le formulaire: resa.html
le script: form.php
 
Ce sont deux fichiers distincts

n°1792580
Photofanch
Posté le 26-09-2008 à 16:23:33  profilanswer
 

J'ajoute que ça me pose le même problème lorsque c'est un formulaire en Flash qui renvoie vers le script php...

n°1792582
omega2
Posté le 26-09-2008 à 16:27:17  profilanswer
 

$_POST est toujours à vide quelque soit le script?
 
Un truc auquel je viens de penser. Dans le php.ini, la ligne "variables_order" permet de définir quelles sont les superglobales qui sont créé. Je ne vois pas pourquoi ça aurait été modifié, mais si ton navigateur envoie bien les données ça peut être utile de regarder ça.
 
En dehors de ce que j'ai déjà dit, d'une erreur au niveau de l'html ou d'une erreur dans ton script qui viderait les $_* ou dans le .htaccess qui empêcherait leur création, je ne vois pas ce qui empêcherait le remplissage de $_POST.

n°1792586
Photofanch
Posté le 26-09-2008 à 16:38:28  profilanswer
 

variables_order m'indique EGPCS
 
le .htaccess ne contient qu'une ligne, qui force l'utilisation de php5
 
Mes codes html et php sont dans les messages ci-dessus.

n°1792614
Photofanch
Posté le 26-09-2008 à 17:11:20  profilanswer
 

Je viens de tester une manip toute bête: héberger mon script sur un autre site.
 
Je passe d'un mutualisé OVH à un autre mutualisé OVH, et allez comprendre pourquoi, le script n'a pas été modifié, mais ça marche...
 
C'est quand même un peu gros, non ?
 
En tout cas merci à tous (et toutes :p ) pour vos conseils et le temps passé sur le problème.

n°1793570
leflos5
On est ou on est pas :)
Posté le 29-09-2008 à 21:04:27  profilanswer
 

Parfois aussi il suffit que le transfert soit foireux et ça donne des résultats foireux :spamafote:

n°1795444
Profil sup​primé
Posté le 03-10-2008 à 19:32:16  answer
 

question écrasement de superglobales :  
j'appelle la page :
GET: id=1
POST: id=2
COOKIE: id=3
 

Code :
  1. <?php
  2. echo $_REQUEST['id'];
  3. ?>


 
$_REQUEST['id'] sera toujours égal selon la conf ?

n°1795924
omega2
Posté le 06-10-2008 à 10:31:46  profilanswer
 

luc@s > RTFM :$_REQUEST
request_order
 
Résumé : Le contenu dépend de la configuration depuis php5.3 .


Message édité par omega2 le 06-10-2008 à 10:32:24
n°1796717
Profil sup​primé
Posté le 07-10-2008 à 17:48:36  answer
 

:o

Spoiler :

merci

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Balise <form> qui ne renvoie rien à mon script PHP

 

Sujets relatifs
[PHP] Requete sql avec virgules[PHP + PDF] Insérer un filigrane
PHP: Une commande pour parcourir un tableau...class CSS != balise style 0o [auto-résolu]
Script pour scanner un réseau et connaitre les hosts connectéProblème avec PHP photo module
Petit question sur le résultat d'une heure dans un scriptRecuperer les informations du formualaire en PHP
[PHP] equivalent de super en php[PHP MYSQL] Recherche table
Plus de sujets relatifs à : Balise <form> qui ne renvoie rien à mon script PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR