Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/02/2011, 11h39   #1
Invité de passage
 
Inscription : février 2008
Messages : 7
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2008
Messages : 7
Points : 0
Points : 0
Envoyer un message via MSN à daYmo Envoyer un message via Yahoo à daYmo
Par défaut Problème bizarre de formulaire POST

Bonjour,

je fais appel au forum car j'ai un problème que je n'arrive pas à résoudre mais j'ai identifié la source.
Je n'ai jamais vu cela et je ne comprends pas d'où cela peut venir (config. d'apache ? mod_security ?)
Voilà ce qu'il se passe : j'ai un visiteur qui m'a fait part d'une impossibilité d'envoyer un message sur mon site ou de remplir un formulaire d'inscription.
Ce visiteur a tenté sur 2 ordinateurs différents à des endroits différents et c'est ce qui m'inquiète.

Alors sur le site, il n'a aucun problème avec les formulaire de recherche qui sont en METHOD="get".
Mais dès qu'il s'agit d'un formulaire en METHOD="POST" c'est comme s'il n'envoyait auncune information ! Quel que soit le formulaire sur mon site ... (j'ai créé une page de test avec un simple formulaire).

Je demande à ce visiteur d'aller sur un autre site qui utilise un formulaire method=POST : cela fonctionne mais c'est un page de résultat différente de la page du formulaire.

Je lui fais donc tester une derniere chose :
j'ai sur une page test1.php un formaulaire en POST dont le résultat est sur une autre page (test2) c'est à dire le <form action="test2.php" method="post"> et là comme par magie sur la page test2.php je récupère les valeurs en POST !
Mais si je tente de récupérer les valeur sur la même page que celle du formulaire alors c'est comme s'il n'envoyait aucune information.

A noter que cela n'arrive qu'avec quelques visiteurs car tous mes tests et pleins plein d'autres visiteurs arrivent à créer leur compte etc.

Quelqu'un a-t-il déjà rencontré ce genre de problème ou bien quelqu'un a-t-il une idée ?

Merci beaucoup.
daYmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 12h08   #2
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
un pt'it peu de code?
tu n'utiliserais pas
Code :
<form action=<?php echo $_SERVER['PHP_SELF'] ; ?>
?
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 12h14   #3
Invité de passage
 
Inscription : février 2008
Messages : 7
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2008
Messages : 7
Points : 0
Points : 0
Envoyer un message via MSN à daYmo Envoyer un message via Yahoo à daYmo
le code est bon et basique ...

dans test1.php
Code :
1
2
<form action="test1.php" method="post>
...

sur cette même page avant je mets
Code :
1
2
if(isset($_POST['variable']))
echo "YES : variable=".$_POST['variable'];
Bref, cela fonctionne pour la plupart des visiteurs sauf un qui me pose ce soucis hier !

Et ce qui est super étrange c'est que si j'ai la même chose mais avec un action sur une page différente alors le $_POST['variable'] contient une valeur....
daYmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 12h22   #4
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
que te dit
?
ça n'arrive qu'à 'lui', ou a plusieurs? Je ne veux pas le blâmer, mais peut-être qu'il clique avec le bouton de l'aspirateur...
le submit ne serait pas intercepté par du js? ça expliquerais un comportement différent côté client... (js désactivé, différences d'interprétations, etc...)
enfin, c'est quelques pistes...
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 12h59   #5
Invité de passage
 
Inscription : février 2008
Messages : 7
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2008
Messages : 7
Points : 0
Points : 0
Envoyer un message via MSN à daYmo Envoyer un message via Yahoo à daYmo
Eh bien en fait il n'y a aucune valeur en POST qui passe pour lui SI ET SEULEMENT SI la page de formulaire est le même que la page de résultat

Pas de JS rien du tout. Pour comprendre je lui ai fait un formulaire de ce qu'il y a de plus basique : 1 form, un champ text et un bouton submit.

Si j'ai ma page test1.php avec le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if(isset($_POST['message'])
echo "MESSAGE RECU : ".$_POST['message'];
?>
<form action="test1.php" method="POST">
	<textarea name="message"></textarea>
	<br /><br />
	<input type="submit" value="ENVOYER"></input>		
</form>
 
===> Lui çà n'affiche jamais le message !
 
MAIS si j'ai ma page test1.php 
<form action="test2.php" method="POST">
	<textarea name="message"></textarea>
	<br /><br />
	<input type="submit" value="ENVOYER"></input>		
</form>
et test2.php :
Code :
1
2
3
4
<?php
if(isset($_POST['message'])
echo "MESSAGE RECU : ".$_POST['message'];
?>
===> Alors le message s'affiche pour lui ! C'est à en perdre la tête.


Donc pas de soucis de code, de navigateur client etc. C'est un problème vraiment spécial !
daYmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 13h05   #6
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
essaye tout de même avec $_SERVER['PHP_SELF'], comme indiqué plus haut, juste pour voir...
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 13h33   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Je te recommande d'utiliser 'empty' en lieu et place de 'isset', car ce qui nous intéresse c'est de savoir si $_POST['message'] n'est pas vide et non pas s'il existe.

Note: empty à le même comportement que isset pour les index non-initialisés, il renvoie true si la variable/index n'existe pas donc inutile de faire les deux.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 14h11   #8
Invité de passage
 
Inscription : février 2008
Messages : 7
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2008
Messages : 7
Points : 0
Points : 0
Envoyer un message via MSN à daYmo Envoyer un message via Yahoo à daYmo
@BlindeKinder :
avec $_SERVER['PHP_SELF'], avec l'url absolue, avec l'url relative : même résultat

@Benjamin
Citation:
Envoyé par Benjamin Delespierre Voir le message
Je te recommande d'utiliser 'empty' en lieu et place de 'isset', car ce qui nous intéresse c'est de savoir si $_POST['message'] n'est pas vide et non pas s'il existe.
Merci pour ce conseil, mais il n'y a tout simplement pas de variable POST donc !isset et !empty etc donnent la même chose...
daYmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 14h17   #9
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
essaye de voir la spécificité du poste client: navigateur, config...
Jette aussi un oeil au variables de config php, pas mal sont en lien avec post:
http://php.net/manual/fr/ini.core.php
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 14h41   #10
Invité de passage
 
Inscription : février 2008
Messages : 7
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2008
Messages : 7
Points : 0
Points : 0
Envoyer un message via MSN à daYmo Envoyer un message via Yahoo à daYmo
Le problème est qu'il a essayé sur 2 postes différents ...
sinon là sa config est win vista avec la dernière version de firefox... mais çà a été testé avec la même config et pas de soucis (AGENT=Mozilla/5.0 (Windows, U, Windows NT 6.0, fr, rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13).

Ce client ... quand il est par exemple sur cette page : http://www.musicdestock.fr/contact-f...p?id_contact=1
s'il clique directement sur envoyer il n'a pas de message d'erreur (car pas de $_POST donc pas d'erreur), s'il remplit tous les champs .. le message n'est pas envoyé.

Ce n'est qu'un exemple car je lui ai fait testé ce genre de formulaire basique pour déterminer exactement ce qu'il se passait : http://www.musicdestock.fr/test2.php
daYmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 15h57   #11
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
pour ce qui est du site, la DTD semble incorrecte, ( mon validateur qui me la dit ) ça me met des erreurs partout du coup (Element ... undefined, même pour des simples <p> )...
dans le test2, essaye sans refermer la balise:
<input type="submit" value="ENVOYER"></input>
sauf erreur, le texte contenu peut être interprété différemment selon les navigateurs ...
mais ça m'étonne que ça ne fonctionne pas dans les deux, car les deux pages sont très différentes...
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 16h02   #12
Invité de passage
 
Inscription : février 2008
Messages : 7
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : février 2008
Messages : 7
Points : 0
Points : 0
Envoyer un message via MSN à daYmo Envoyer un message via Yahoo à daYmo
Citation:
Envoyé par BlindeKinder Voir le message
pour ce qui est du site, la DTD semble incorrecte, ( mon validateur qui me la dit ) ça me met des erreurs partout du coup (Element ... undefined, même pour des simples <p> )...
dans le test2, essaye sans refermer la balise:
<input type="submit" value="ENVOYER"></input>
sauf erreur, le texte contenu peut être interprété différemment selon les navigateurs ...
mais ça m'étonne que ça ne fonctionne pas dans les deux, car les deux pages sont très différentes...
C'est une page de test toute épurée, l'entete générée avec Eclipse ...

Mon site valide XHTML et CSS
http://validator.w3.org/check?uri=ht...usicdestock.fr
Oui .. la page de contact comprise : http://validator.w3.org/check?uri=ht...ntact-form.php
daYmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 16h12   #13
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
oups, par regardé le détail... c'est mon html validator qui ne reconnaît pas RDFa... bon à savoir.
mais pour le reste, je sèche...
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h15.


 
 
 
 
Partenaires

Hébergement Web