Contrôle champs formualire

Eléphanteau du PHP | 16 Messages

29 déc. 2013, 00:58

Bonsoir,

Je refais un post un peu plus clair que le dernier en espérant qu'il aura un meilleur succès.
Ci-dessous un formulaire avec un contrôle du champ via la fonction décrite, voici l'objectif :
- si champ vide, réafficher la même page avec le message d'erreur
- si champs renseigné, afficher la page test2.php

En fait cela fonctionne seulement quand je valide une seconde fois.
Quelqu'un peut-il m'aider ? A l'aide je n'en peux plus ... #-o :( :oops:

MERCI !

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Document sans nom</title>

</head>

<body>
<table width="800" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td>
    <?php
function checkmail($email)
{
	$valid_mail = False;
	if($email == ''){
		return array('valid' => false,'message' => 'Veuillez saisir une adresse e-mail');
	}else{
		return array('valid' => true,'message' => '');
	}
}

	if ((isset($_POST["mail_nv_client"]))){
			$mail_nv_client = $_POST["mail_nv_client"];
			echo $mail_nv_client;
			$checkmail = checkmail($mail_nv_client);
			echo $checkmail['message'];
	}
	echo '<br>';

	
	?>

	<form <?php if ((isset($checkmail['valid'])) AND ($checkmail['valid'] == TRUE)) {?> action="test2.php" <?php } else {?> action="test.php" <?php }?> method="POST" name="">
    
    <?php
    echo 'E-mail * : <input type="text" name="mail_nv_client" value=""><br>';

    echo '<input type="submit" name="valider" value="OK"><br>';
	echo '</form>';
	?>
	
    </td>
  </tr>
</table>
</body>

</html>

Mammouth du PHP | 881 Messages

29 déc. 2013, 01:43

Pourquoi ne valides-tu pas le formulaire avant qu'il ne soit soumis à PHP ?
C'est plus rapide pour l'usager et c'est clair.
Il suffit pour cela d'ajouter un contrôle à ton formulaire comme ceci:

Code : Tout sélectionner

<form name="formulaire" method="POST" onsubmit="Verifions();">Bla bla formulaire et case à compléter par lesquelles celle du courriel<input name="courriel" id="input_courriel"></form>
En tête ou en bas, tu crées en suite une fonction javascript qui valide comme ceci:
[javascript]function Verifions() {
if (document.formulaire.courriel.value == '') { return false; }
if (condition) { return true; } else { return false; }
}[/javascript]


Tu peux traiter ainsi tous tes champs sensibles. S'il sont copmplétés ou rencontre toutes tes conditions, le formulaire sera alors soumis et tu pourras traiter l'informations adéquatement.
Soyez artisans de paix

xlT4R3K
Invité n'ayant pas de compte PHPfrance

29 déc. 2013, 01:55

En fait si j'ai bien compris tu veux juste que l'utilisateur soit obliger de remplir un input non? Alors pourquoi ne pas faire seulement :
<input type="name" name="nom" [b]required[/b] />
Si l'utilisateur ne le rempli pas, son navigateur ne passera pas a la suite

Eléphanteau du PHP | 16 Messages

29 déc. 2013, 02:10

Hello,

En fait c'est un exemple très simplifié de ce que je veux faire (cf. Post précédent).
Je souhaiterais faire mes contrôles (format adresse mail, validité mot de passe, ...) via fonctions php et non par JavaScript.
Est ce possible tel que je l'ai fait dans mon exemple ?

Merci.

Mammouth du PHP | 881 Messages

29 déc. 2013, 04:25

Bien sûr que tu peux contrôler le contenu après sa soumission.
Il suffit de contrôler les champs de ton choix qui apparaîtront dans la super-variable $_POST
En php, ça ressemblera à ceci:
if (trim($_POST["Courriel"]) == '' ) { echo 'Vous auriez dû écrire quelque chose, alors vous nous vous redirigeons.';  header('Location: http://www.example.com/autrepage.php'); }
Pour la redirection voir http://www.php.net/manual/fr/function.header.php

Pour voir toutes tes variables reçues depuis le formulaire tu utiliseras
var_dump($_POST);
Soyez artisans de paix

Mammouth du PHP | 2278 Messages

29 déc. 2013, 10:44

1) formulaire
pas de php pour le formulaire.
Il existe de nombreux types de champs répertoriés ici:

http://www.alsacreations.com/tuto/lire/ ... email.html
<html>
<body>
<form method = "post" action = "valider.php">
<input type = "email" name = "email" required="required" />

<input type = "text" name = "champ1" required= "required" />
<button type = "submit" >Envoyer</button>
</form>
</body>
</html>
2)Côté valider.php

pour le mail utiliser filter_var :http://www.php.net/manual/fr/function.filter-var.php et http://www.php.net/manual/fr/filter.fil ... lidate.php
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 16 Messages

29 déc. 2013, 11:50

Hello,

Le code ci-dessous fonctionne mais dans la seconde page comment récupérer les variables saisies dans le formulaire tel qu'habituellement on le fait dans un formulaire (en methode POST ) ???
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Document sans nom</title>

</head>

<body>
<table width="800" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td>
    <?php
function checkmail($email)
{
	$valid_mail = False;
	if($email == ''){
		return array('valid' => false,'message' => 'Veuillez saisir une adresse e-mail');
	}else{
		if (preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#', $email)){	
			return array('valid' => true,'message' => '');
		}
		else{
			return array('valid' => false,'message' => 'Veuillez saisir une adresse e-mail valide');
		}
	}
}
	

	if (isset($_POST["mail_nv_client"])){
		$mail_nv_client = $_POST["mail_nv_client"];
		$checkmail = checkmail($mail_nv_client);
		echo $checkmail['message'];
		echo '<br>';
	}

	if ((isset($_POST["mail_nv_client"])) AND (($checkmail['valid'])== True)) {
		header('Location: autrepage.php');
	}
		
        ?>

        
   
    <?php

	echo '<form method="POST" action="test.php" name="">';
    echo 'E-mail * : <input type="text" name="mail_nv_client" value=""><br>';

    echo '<input type="submit" name="valider" value="OK"><br>';
        echo '</form>';
        ?>
       
    </td>
  </tr>
</table>
</body>

</html>

Mammouth du PHP | 881 Messages

29 déc. 2013, 15:07

Tu peux passer ton infomation à travers des variables $_SESSION $_SESSION est une super-globale.
Soyez artisans de paix

Mammouth du PHP | 2278 Messages

29 déc. 2013, 17:29

A propos de header, doc officielle
"N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include ou require, et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards."
Or la fonction checkmail affiche qq chose.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 881 Messages

30 déc. 2013, 19:57

Très juste Sirakawa,

quand ça devient difificile de contrôler cela, je fais appel à un petit javascript script enrichi de PHP
[javascript]<script type="text/javascript" >document.location.href = "<?php echo $PageDestination; ?>";</script>[/javascript]




yoarf : n'oublie pas d'inscrire "Résolu" lorsque ça fonctionne.
Soyez artisans de paix