Problème envoi données via formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème envoi données via formulaire

par supercanard » 17 oct. 2007, 19:35

Merci pour cette bonne adresse je lis le site et je commence a comprendre le Regex :)

Merci
Ca fait deux fois que je vois que des post se balladent sur des mauvais topic. Y'a pas comme une C.....E dans le paté ? :D

par Joss850csi » 17 oct. 2007, 19:31

Merci pour cette bonne adresse je lis le site et je commence a comprendre le Regex :)

Merci

par supercanard » 17 oct. 2007, 15:00

la déclaration de ta fonction est fausse :

tu définis le 2e et 3e paramètres comme des tableau $_POST alors qu'il faut les définir comme des variables.
C'est dans l'appel à la fonction que tu peux utiliser $_POST.
$alerte= champs_page($champsvides_page, $_POST['nom'], $_POST['nom_lien']);

function champs_page($champsvides_page,$nom, $nom_lien) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($nom) || empty($nom_lien)) {
            $alerte= $champsvides_pages;
            return $alerte;
  }
Ah ok je comprend
J'ai lu un chapitre sur les fonctions mais rie nne vaut une explication claire :wink:

par d0m » 17 oct. 2007, 14:57

la déclaration de ta fonction est fausse :

tu définis le 2e et 3e paramètres comme des tableau $_POST alors qu'il faut les définir comme des variables.
C'est dans l'appel à la fonction que tu peux utiliser $_POST.
$alerte= champs_page($champsvides_page, $_POST['nom'], $_POST['nom_lien']);

function champs_page($champsvides_page,$nom, $nom_lien) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($nom) || empty($nom_lien)) {
            $alerte= $champsvides_pages;
            return $alerte;
  }

par supercanard » 17 oct. 2007, 14:53

A noter qu'il n'est pas recommandé d'utiliser le nom "action" pour un champ d'un formulaire html ... la confusion avec l'attribut "action" du formulaire (humainement mais également javascriptement si tu venais à faire appel à "document.formulaire.action" )

De la même manière, je trouve pas judicieux de mélanger données en GET et en POST dans un formulaire. Mieux vaut passer les paramètres de l'url dans des champs hidden pour tout récupérer de la même manière :)
Ayé je modifi tout ça.

Par contre j'ai un problème : On peut passer des argument provenant d'une formulaire dans une fonction ?
$alerte= champs_page($champsvides_page, $_POST['nom'], $_POST['nom_lien']);

function champs_page($champsvides_page, $_POST['nom'], $_POST['nom_lien']) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($_POST['nom']) || empty($_POST['nom_lien'])) {
			$alerte= $champsvides_pages;
			return $alerte;
  }
Ce code me retourne une erreur Parse error: syntax error, unexpected '[', expecting ')' in... :shock:

par Ryle » 17 oct. 2007, 12:57

A noter qu'il n'est pas recommandé d'utiliser le nom "action" pour un champ d'un formulaire html ... la confusion avec l'attribut "action" du formulaire (humainement mais également javascriptement si tu venais à faire appel à "document.formulaire.action" )

De la même manière, je trouve pas judicieux de mélanger données en GET et en POST dans un formulaire. Mieux vaut passer les paramètres de l'url dans des champs hidden pour tout récupérer de la même manière :)

par supercanard » 17 oct. 2007, 12:44

Oui en fait je me suis mélangé les pinceaux.
Et la c'est pareil sur une fonction :

$champsvides_page= 'blabla'

$alerte= champs_page($champsvides_page,$_POST['nom'],$_POST['lien']); // APPEL DE LA FONCTION DE TEST DES CHAMPS VIDES

function champs_page($champsvides_page) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($_POST['nom']) || empty($_POST['nom_lien'])) {
			$alerte= $champsvides_pages;
			return $alerte;
  }
}

echo $alerte;
Je comprend pas pourquoi j'ai écris ce genre de chose. je passe toutes les variables quand j'appelle la fonction
Et dans la fonction je fait : function champs_page($champsvides_page)

Bref nimporte quoi. le soucis c'est que à un endroit ça marche, je me suis dit bon ben y'a pas d'erreur mais à un autre endroit ça marche pas... du coup je sais pas si c'est faux ou juste

Re: Problème envoi données via formulaire

par Calimero » 17 oct. 2007, 12:32

Tu mélanges un peu tout là. ton erreur se situe ici :

Code : Tout sélectionner

<form method="post" action="administration.php?page=pages&action=ajout">
Vu que tu essayes d'envoyer la variable en GET, pas besoin de la chercher dans $_POST en php, tu ne la trouveras pas :-)

la solution passerait plutôt par un champ caché dans le formulaire :

Code : Tout sélectionner

<input type="hidden" name="action" value="ajout" />
De cette manière, ta variable arrivera bien là ou tu l'attends.

Problème envoi données via formulaire

par supercanard » 17 oct. 2007, 12:25

Bonjour,

Je butte sur un truc de débutant voire pire :lol:
Depuis que j'ai mis $_POST['action'] pour récupérer ma variable envoyé par Action du formulaire, plus rien ne marche.
Pour débugger j'ai mis un echo 'toto', qui évidement n'affiche pas toto...
Pourtant mon formulaire est en POST donc je ne vois pas le problème...
switch($_POST['action']) {
case 'ajout' :
echo 'toto';
  $alerte= champs_page($champsvides_page,$_POST['nom'],$_POST['lien']); // APPEL DE LA FONCTION DE TEST DES CHAMPS VIDES
  if (empty($alerte)) { // SI PAS DE MESSAGE ERREUR, ENREGISTREMENT
	 $req_ajout= mysql_query("INSERT INTO bloom_pages (id,nom,contenu,nom_lien,pos_lien,visible) VALUES ('','{$_POST[nom]}','{$_POST[elm1]}','{$_POST[nom_lien]}','{$_POST[pos_lien]}','{$_POST[visible]}')");
	}

Code : Tout sélectionner

<form method="post" action="administration.php?page=pages&action=ajout"> <p><label>Nom de la page : </label><input type="text" name="nom" maxlength="25" /></p> <p><label>Contenu : </label></p> <p class="alaligne"><textarea id="elm1" name="elm1" rows="35" cols="70"><p></p></textarea></p> <p><label>Nom du lien : </label><input type="text" name="nom_lien" maxlength="50" /></p> <p><label>Position du lien : </label> <select name="pos_lien"> <?php for($i=0; $i<51; $i++) { echo '<option value="'.$i.'">'.$i.'</option>'; } ?> </select> Positions déjà utilisés : <?php echo implode(',',$pos_liens); ?> </p> <p><input type="submit" value="OK" /></p> </form>