Page 1 sur 1

condition avant validation

Posté : 03 janv. 2014, 15:58
par cris84100
Bonjour à tous,

j'ai un formulaire de changement de mot de passe sur lequel je voudrais rajouter la condition de vérification de remplissage de tous les champs.
Si un champ manque, j'affiche une erreur idem pour tout les champs, le formulaire ne sera pas envoyé.
Je vous joins mon code :
Un grand merci pour votre aide...
<?php

if(!empty($_POST['ancien_mot_passe']) && !empty($_POST['nouveau1_mot_passe']) && !empty($_POST['nouveau2_mot_passe']))//chagement de mot de passe
	{
	
		//sécurisation des variables
		$ancien_mot_passe = mysql_real_escape_string(htmlspecialchars($_POST['ancien_mot_passe']));
		$nouveau1_mot_passe = mysql_real_escape_string(htmlspecialchars($_POST['nouveau1_mot_passe']));
		$nouveau2_mot_passe = mysql_real_escape_string(htmlspecialchars($_POST['nouveau2_mot_passe']));
		
		//vérification de l'exactitude de l'ancien mot de passe
		$sql_infos = mysql_query('SELECT mot_passe FROM '.$prefix.'membres WHERE id='.$_SESSION[$prefix.'id']);
        	$donnees = mysql_fetch_array($sql_infos);
		$ancien_mot_passe_hash = md5($ancien_mot_passe);
		
		if ($ancien_mot_passe_hash == $donnees['mot_passe']) //vérification par mesure de sécurité
		{
			if ($nouveau1_mot_passe == $nouveau2_mot_passe) //si les deux mots de passe sont bons, alors on change de mot de passe
			{
				$mot_passe = md5($nouveau1_mot_passe);
				mysql_query('UPDATE '.$prefix."membres SET mot_passe='".$mot_passe."' WHERE id='".$_SESSION[$prefix.'id']."'")or die(mysql_error());
				echo stop($lang['mot_pass_change'],'modifier_profil.php');
				
				mail("".$_POST['email']."","Changement de mot de passe","Cher(e) ".$_POST['pseudo'].",\n\nVous venez de changer votre mot de passe.\n\nVotre nouveau mote de passe de connexion est le suivante :\n\nMot de passe : ".$_POST['nouveau1_mot_passe']."\n\nConnectez vous maintenant sur http://www..\n\n","From: Espace membre <[email protected]>\r\n");
			}
			else
			{
				echo stop($lang['nouveau_mot_passe_different'], 'modifier_profil.php?action=modifier_mot_passe');
			}
		}
		else
		{
			//on indique qu'il y a eu une tentative de changement de mot de passe qui n'a pas marchée, et on décrémente le compteur
			if (isset($_SESSION[$prefix.'mot_passe_erreur']))
			{
				$_SESSION[$prefix.'mot_passe_erreur'] = $_SESSION[$prefix.'mot_passe_erreur'] - 1 ;
			}
			else
			{
				$_SESSION[$prefix.'mot_passe_erreur'] = 3 ;
			}
			
			//on informe le membre du nombre de tentatives restantes où l'on le déconnecte
			if ($_SESSION[$prefix.'mot_passe_erreur'] > 0)
			{
				echo stop($lang['erreur'].' : '.$lang['bad_password'].'<br />'.$lang['il_ne_vous_reste_que'].' '.$_SESSION[$prefix.'mot_passe_erreur'].' '.$lang['tentatives_avant_d_etre_deconnecte'].'.', 'modifier_profil.php?action=modifier_mot_passe');
			}
			else
			{
				echo stop($lang['erreur'].' : '.$lang['bad_password'].'<br />'.$lang['desole_mais_vous_avez_ete_deconnecte'], 'index.php');
				
				//On détruit la session
				session_destroy();
				//Destruction des cookies.
				if (isset($_COOKIE[$prefix.'pseudo'],$_COOKIE[$prefix.'mot_passe']))
				{
					setcookie($prefix.'pseudo','',0);
					setcookie($prefix.'mot_passe','',0);
				}
			}
		}
	}
?>

Re: condition avant validation

Posté : 03 janv. 2014, 17:33
par sirakawa
Il est plus simple de modifier le formulaire:
<input type ="text" required ="required" name = "login" />

Re: condition avant validation

Posté : 03 janv. 2014, 17:40
par cris84100
bonjour,

effectivement, je connaissais pas !

je vais utiliser ça c'est plutôt pas mal, merci

si toutefois quelqu'un a une idée en php, je prends

Re: condition avant validation

Posté : 03 janv. 2014, 17:54
par sirakawa
De même tu as un type = "email" qui évite bien des soucis.
Pour le reste il faut se fier à filter_var dans le code PHP

Re: condition avant validation

Posté : 03 janv. 2014, 21:49
par niuxe
houlà attention !

l'attribut required fonctionne à partir de IE9 de mémoire. Tandis que l'attribut email, faut attendre IE10. ;)

Re: condition avant validation

Posté : 03 janv. 2014, 22:10
par sirakawa
Une fois de plus Internet Explorer est à la traine.
Mais ce n'est le navigateur qye d'yne partie des internautes utilisant Winquelque chose et pas le premier voir:
http://gs.statcounter.com/#browser-ww-m ... 201312-bar
ou
http://www.w3counter.com/globalstats.php
1) Le fait que ça ne fonctionne pas signifie simplement que ce champ peut rester vide lors de l'envoi du formulaire. Or j'ai dit que ça simplifiait les tests pas que ça les supprimait.
2) Idem pour le type email pour lequel je signale aussi l'existence d filter_var

Re: condition avant validation

Posté : 05 janv. 2014, 17:05
par cris84100
Bonjour et merci de vos réponses.

Merci également de classer en résolut le sujet..