Contrôle données sur un formulaire[résolu]

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 : Contrôle données sur un formulaire[résolu]

Re: Contrôle données sur un formulaire

par xTG » 02 juin 2012, 22:58

Regardes plutôt du côté de filter, c'est encore ce qui se fait de mieux.
http://fr2.php.net/filter

Car intval ou autre c'est un cast, pas une vérification.

Re: Contrôle données sur un formulaire

par sens01 » 02 juin 2012, 22:58

Super merci :D

Re: Contrôle données sur un formulaire

par Invité » 02 juin 2012, 22:56

salut, plusieurs solutions

http://www.php.net/manual/fr/function.intval.php

http://www.php.net/manual/fr/function.ctype-digit.php

tu peux aussi caster ta var et la tester

Code : Tout sélectionner

$var = (int)$var;
:D

Contrôle données sur un formulaire[résolu]

par sens01 » 02 juin 2012, 22:34

Bonjour,

je veut vérifier si l'âge correspond bien à un nombre, qu'il est entier et positif le problème c'est que si j'ai bien compris mon formulaire renvoie tout en type chaîne de caractères alors je fais comment si je veut vérifier qu'on m'envoie bien un nombre et non pas "salut" à la place par exemple? c'est possible?
<?php 
if ( $_SERVER['REQUEST_METHOD'] == 'GET' ) {

	$affiche_formulaire = true;

}

else if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {

	// tableau qui contiendra le récap de tout ce que la personne a posté
	$message_recapitulatif = array();

	// chaque erreur sera stockée comme élément de ce tableau :
	$message_erreur = array();

	// test si age n'existe pas
	if (!isset ($_POST['age']) ) {
		
		$message_erreur[] = 'Vous n\'avez pas entré votre age, veuillez remplir le formulaire';
			
	}
	// test si age n'est pas une chaine
	
	// test si age est une chaine vide
	
	// test si age n'est pas un nombre
	else if (!is_string ($_POST['age']) ) {
		
		$message_erreur[] = 'Chaîne de caractères interdites';

	}
	
	// test si age n'est pas entier
	
	// test si age n'est pas positif
	else if (!is_int ($_POST['age']) || $_POST['age'] < 13 ) {
		
		$message_erreur[] = 'Vous êtes trop jeune';
		ceil ($_POST['age']);
		
	}
	// ok
	else {
		
		$age = trim($_POST['age']);
		$message_recapitulatif[] = 'Age : ' . $age . ' ';
	}
	
	
	if (empty($message_erreur)) {
		
		$confirmation = 'Envoi OK';									// si le tableau d'erreur est vide 
		$affiche_formulaire = false;								// alors on fabrique un message de confirmation
																	// le formulaire ne sera pas réaffiché
	}																// sinon 
																	// on fabrique un message d'erreur
	else {
		
		$affiche_formulaire = true;
		$affiche_erreur = implode(' , ', $message_erreur);
		print_r ($affiche_erreur);
		
	}																	// on reaffiche le formulaire 
	
}



?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulaire</title>
</head>

<body>


<!-- affichez le message -->

<!-- si on affiche le formulaire ... 
 faire le if -->
<?php 
if ($affiche_formulaire == true) {
  echo '<form action="index.php" method="post">
  
	  <table cellpadding="10" border="1">
  
  <tr>
	<th>Age</th>
	<td><input type="text" name="age" /></td>
  </tr>
  
  <tr>
  <th>Rien oublié?</th>
  <td><input type="submit" value="Envoyer" /></td>
  </tr>
  </table>
  
  </form>';

}

else {

echo implode (' ',$message_recapitulatif);
echo $confirmation;
	
}
?>
</body>
</html>