[RESOLU] Transmettre une variable

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 : [RESOLU] Transmettre une variable

Re: Transmettre une variable

par kakou34 » 26 déc. 2013, 20:22

Pas mal du tout. j'ai tout remplacé et sa soulage le PHP.

Pour mon erreur, j'ai finalement mis le PHP sur la même page, ca fonctionne !

Si tu as d'autres astuces je suis preneur, j'aime quand c'est alléger !

Re: Transmettre une variable

par sirakawa » 25 déc. 2013, 16:04

Commençons par required
<input type = 'text' name ='toto' /> permet de passer un texte vide
<input type = 'text' name='toto' required = 'requred' /> a cet effet
tant que ce champ est vide, si on clique sur submit, on reçoit un message et le formulaire n'est pas transmis: inutile par la suite de tester si ce champ a été rempli.

teste ça si tu ne veux pas modifier ton code
<form>
<input required='required' name ='1'  />
<input required='required' name ='2'  / >
<button type = 'submit'>ok</button >
</form>

Re: Transmettre une variable

par kakou34 » 24 déc. 2013, 23:19

Effectivement $_GET donne rien
5) Il serait plus simple de ne pas empiler les if, mais de tester les choses une par une en accumulant les messages.
Je comprend pas ce que tu veux dire, un exemple ?

Et pour
6) <input name = 'nom' required = 'required' /> simplifie beaucoup d tests


Sa à l'air intéressant mais je comprend pas trop non plus :/

Re: Transmettre une variable

par sirakawa » 24 déc. 2013, 21:35

1) Si la méthode est post, il serait étonnant que $_GET contienne quelque chose.
2) Tester si inscription est vide ou non n'a guère d'utilté
3) ça fonctionne parfaitement comme le prouve fonction.php
<?PHP
print_r($_POST);
?>
4) if(empty($_POST['nom']) AND (preg_match('#^[a-zA-Z]{3,}$#', $_POST['nom']))) suppose que $_POSt['nom']soit vide en même temps qu'il satisfait la condition du preg...
5) Il serait plus simple de ne pas empiler les if, mais de tester les choses une par une en accumulant les messages.
6) <input name = 'nom' required = 'required' /> simplifie beaucoup d tests
7) Il existe un filter_var http://us2.php.net/manual/fr/function.filter-var.php qui fait du bon travail avec http://us2.php.net/manual/fr/filter.fil ... lidate.php
<?PHP
print_r($_POST);
?>

Re: Transmettre une variable

par magnet » 24 déc. 2013, 18:41

Salut,

Au lieu d'afficher directement la variable, tu pourrais utiliser la superglobale $_GET dans header() et la récupérer dans le formulaire :
<span><?php echo $_GET['echo'];  ?></span>
La page fonction :
<?php
               
                $url = $_SERVER["HTTP_REFERER"];
               
                if(isset($_POST['inscription']))
                {
                        if(empty($_POST['nom']) AND (preg_match('#^[a-zA-Z]{3,}$#', $_POST['nom'])))
                        {
                                $echo = 'Nom invalide';
                        }
                       
                        else if(empty($_POST['prenom']) AND (preg_match('#^[a-zA-Z]{3,}$#', $_POST['prenom'])))
                        {
                                $echo = 'Prénom invalide';
                        }
                       
                        else if(empty($_POST['email']) AND (preg_match('#^[0-9a-z-_.]+@[0-9a-z-_.]{2,}\.[a-z]{2,4}$#', $_POST['email']) ))
                        {
                                $echo = 'Email invalide';
                        }
                       
                        else if(empty($_POST['mot_de_passe1']))
                        {
                                $echo = 'Mot de passe invalide';
                        }
                       
                        else if(empty($_POST['mot_de_passe2']))
                        {
                                $echo = 'Mot de passe invalide';
                        }
                       
                        else if(($_POST['mot_de_passe1']) != ($_POST['mot_de_passe2']))
                        {
                                $echo = 'Mots de passes différents';
                        }
                       
                        else
                        {
                                $nom = ucfirst($_POST['nom']);
                                $prenom = ucfirst($_POST['prenom']);
                                $email = strtolower($_POST['email']);
                                $mot_de_passe = sha1($_POST['mot_de_passe1']);
                               
                                $requete = $bdd->prepare('INSERT INTO membre (id, nom, prenom, email, mot_de_passe) VALUES("", :nom, :prenom :email, :mot_de_passe)');
                                $requete->execute(array(
                               
                                        'nom' => $nom,
                                        'prenom' => $prenom,
                                        'email' => $email,
                                        'mot_de_passe' => $mot_de_passe,
                                ));
                               
                                $echo = 'Inscription réussite !';
                        }
                                header('Location:'.$url.'?echo='. $echo .'');
                }
               
        ?>
Qu'est-ce que ça donne ?

Transmettre une variable

par kakou34 » 24 déc. 2013, 17:01

Bonjour,

Je cherche à transmettre une variable sur une autre page, hors elle ne s'affiche pas.
Je pense que l'erreur est faible mais je sais pas comment faire :(

Donc sans plus attendre les codes !

Le formulaire d'inscription :
<form action="contenu/inscription/fonction.php" class="inscription" method="post" >
		<fieldset>
			
			<legend>REJOIGNEZ-NOUS</legend>
			
			<label>» NOM</label><input class="a" name="nom" type="text" />
			<label>» PRENOM</label><input class="a" name="prenom" type="text" />
			<label>» EMAIL</label><input class="a" name="email" type="email" />
			<label>» MOT DE PASSE</label><input class="a" name="mdp1" type="password" />
			<label>» MOT DE PASSE (Confirmation)</label><input class="a" name="mdp2" type="password" />
			
			<input class="b" name="inscription" type="submit" value="Inscription !" />
			
			<span><?php echo $echo; ?></span>
			
			<div style="clear : both;" ></div>
			
		</fieldset>
		
	</form>
La page fonction qui est apellé :
<?php
		
		$url = $_SERVER["HTTP_REFERER"];
		
		if(isset($_POST['inscription']))
		{
			if(empty($_POST['nom']) AND (preg_match('#^[a-zA-Z]{3,}$#', $_POST['nom'])))
			{
				$echo = 'Nom invalide';
				header('Location:'.$url.'');
			}
			
			else if(empty($_POST['prenom']) AND (preg_match('#^[a-zA-Z]{3,}$#', $_POST['prenom'])))
			{
				$echo = 'Prénom invalide';
				header('Location:'.$url.'');
			}
			
			else if(empty($_POST['email']) AND (preg_match('#^[0-9a-z-_.]+@[0-9a-z-_.]{2,}\.[a-z]{2,4}$#', $_POST['email']) ))
			{
				$echo = 'Email invalide';
				header('Location:'.$url.'');
			}
			
			else if(empty($_POST['mot_de_passe1']))
			{
				$echo = 'Mot de passe invalide';
				header('Location:'.$url.'');
			}
			
			else if(empty($_POST['mot_de_passe2']))
			{
				$echo = 'Mot de passe invalide';
				header('Location:'.$url.'');
			}
			
			else if(($_POST['mot_de_passe1']) != ($_POST['mot_de_passe2']))
			{
				$echo = 'Mots de passes différents';
				header('Location:'.$url.'');
			}
			
			else
			{
				$nom = ucfirst($_POST['nom']);
				$prenom = ucfirst($_POST['prenom']);
				$email = strtolower($_POST['email']);
				$mot_de_passe = sha1($_POST['mot_de_passe1']);
				
				$requete = $bdd->prepare('INSERT INTO membre (id, nom, prenom, email, mot_de_passe) VALUES("", :nom, :prenom :email, :mot_de_passe)');
				$requete->execute(array(
				
					'nom' => $nom,
					'prenom' => $prenom,
					'email' => $email,
					'mot_de_passe' => $mot_de_passe,
				));
				
				$echo = 'Inscription réussite !';
				header('Location:'.$url.'');
			}
		}
		
	?>
Donc, comme vous le remarquer une variable '$echo' affiche l'erreur !

Le soucis est que, aprés avoir 'MAL' remplie mon formulaire, fonction.php crée la variable ($echo) mais ne l''affiche pas sur la page de formulaire :(

Et c'est donc là que je m'en remet à vous.