begin process at 2012 05 31 06:17:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

preg_match, problème difficilement compréhensible


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

preg_match, problème difficilement compréhensible

vendredi 4 juin 2010 à 20:44:01 | preg_match, problème difficilement compréhensible

sailsee

Bonjour,

Je travaille sur le contrôle d'un formulaire.

J'ai deux variables à vérifier avec une expression regulière $ip et $mail, une ip et un mail.
Si je fait :
Code PHP :
echo preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#',$mail);
echo '<br />';
echo preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/",$ip);


J'obtiens 1 si le mail ou l'ip est correcte, 0 sinon.

Mais si je crée une condition

Code PHP :
if (preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#',$mail)==0)
{ 
	$erreur =  $erreur  . '<br />le mail est invalide';
}
if (preg_match('/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/',$ip)==0)
{ 
	$erreur =  $erreur  . ' <br />l\'ip est invalide' ;
}


Ca ne fonctionne pas... Je n'obtiens jamais le message d'erreur au bon moment.
J'ai tout essayé : remplacer 0 par FALSE, utiliser !(preg_match(...

Ca ne fonctionne pas. Ca fait des heures que je cherche et je ne trouve pas !

vendredi 4 juin 2010 à 21:31:55 | Re : preg_match, problème difficilement compréhensible

aquewel

yop, bon voila une petite rectification de ton code qui fonctionne...

Code PHP :
<?php

$mail = 'aaa@a';
$ip = 'aaa@a';

/**
 * preg_match => renvoi 1 si ok
 * !preg_match => renvoi 0 si pas ok
 * empty / !empty => pour tester si le champ mail est completé
 */
if (!preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#', $mail) )
{ 
	echo '<br />le mail est invalide';
}
if (!preg_match('/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/', $ip) )
{ 
	echo ' <br />l\'ip est invalide' ;
}
?>


en esperant que cela te conviendra.
++
vendredi 4 juin 2010 à 21:58:26 | Re : preg_match, problème difficilement compréhensible

sailsee

Ben, ça ne fonctionne pas voici mon code complet. Ce que je ne comprend pas c'est que mes expressions regulières fonctionnent je les utilisent ailleurs et à part ce que j'ai indiqué plus haut, tout fonctionne

Code PHP :
function checkuser($nom,$prenom,$pwd1,$pwd2,$droits,$role,$ip,$mail)
{
	echo preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#',$mail);
	echo '<br />';
	echo preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/",$ip); // affichage pour vérifier que mes exp regulières marchent

	$erreur = 'Les erreurs suivantes ont été rencontrées :' ;
	if ($nom == '' or $prenom == '' or $pwd1 == '' or $pwd2 == '' or $droits == '...' or $role == '...' or $mail='' or $ip='')
	{
		$erreur = '<br />Les champs ne sont pas tous remplis';
	}
	else
	{
		if (!preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#', $mail) )
		{ 
			$erreur =  $erreur  . '<br />le mail est invalide';
		}
		if (!preg_match('/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/',$ip))
		{ 
			$erreur =  $erreur  . ' <br />l\'ip est invalide' ;
		}
		if (!(preg_match("#0|1|2|3#",$droits))) 
		{ 
			$erreur =  '<br />les droits sont invalides' ;
		}
		if (!(preg_match("#utilisateur|referent|manager#",$role)))
		{ 
			$erreur =  $erreur  . ' <br />le rôle est invalide'; 
		}
		if (strlen($pwd1)>=255) 
		{ 
			$erreur =  $erreur  . ' - le mot de passe dépasse les 255 caractères';
		}
		if ($pwd1 != $pwd2) 
		{ 
			$erreur =  $erreur  . '<br />les mots de passe saisis sont différents' ;
		}
	}
	throw new Exception ($erreur); 
}
vendredi 4 juin 2010 à 22:27:11 | Re : preg_match, problème difficilement compréhensible

aquewel

ah ok lol.

Je propose pas souvent mon aide !
Ta fonction c'est pas du tout comme ca que je ferais.
Tu devrais t'orienter vers une classe (sur le site ya des codes et il y a phpclasses), parce que pour un formulaire ca peut aller mais plus tu vas avancer et tu vas etre perdu !

je te reecris pas tout, c'est pas le but, mais je te propose ca

Code PHP :
<?php
/** 
 * FONCTION VERIFIE SI CHAMPS COMPLETE
 */
function checkuser($Donnees)
{
	$erreur = 'Les erreurs suivantes ont été rencontrées :' ;
	
	if(is_array($Donnees) ) {
		foreach($Donnees as $cle=>$valeur) 
    	{ 
			$valeurAtester = (!empty($valeur)) ? 'ok' : 'non';
   			$erreur .= $cle.' : '. $valeurAtester .'<br>'; 
    	} 
	
	}
	
	return $erreur;
}
	
/**
 * TABLEAU DES DONNES
 */ 
 $ArrayDonnees = array(
 		'nom' => $nom,
		'prenom' => 'MonPrenom',
		'pwd1' => $pwd1,
		'pwd2' => $pwd2,
		'droits' => $droits,
		'role' => $role,
		'ip' => $ip,
		'mail' => $mail,
		);

// APPEL FONCTION
echo checkuser($ArrayDonnees);
?>


ca te fait deja quelques pistes pour te debrouiller un peu plus tout seul !!!

deja lorsque tu fais $erreur = $erreur . ' ca me semble un peu bizare!
fais plutot $erreur .=

tu aurais du chercher comment faire une variable sur plusieurs lignes


Cette discussion est classée dans : mail, erreur, ip, preg, match


Répondre à ce message

Sujets en rapport avec ce message

HELP mail() [ par fab_59 ] easyphp a merdé, j'ai du le reinstaller, j'ai modifier global a on et smtp avec mon fai, mais maintenant j'ai un message d'erreur:Warning: mail(): SMT récupérer erreur d'envoi de mail [ par yanualed ] Bonjour,J'utilise la fonction mail avec les destinataires (multiples) en bcc.Je voudrais savoir si il est possible de récupérer les destinataires pour Métacaractères... [ par mfaraday ] Salut...Est-ce que quelqu'un pourrait m'expliquer comment utiliser les métacaractères dans un profil de recherche pour la fonction preg_match par exem Messages d'erreur pour mon mailing [ par SealCrazy ] SealcrazyVousSaluecomment faire marcher mon mailing:j'ai recuperer le code pour un mailling sur ce site.J'ai copié tous les fichiers ds mon rep racine Masque pour preg_match() ... Aidez-moi ! [ par LocalStone ] Alors, j'expose le problème : J'ai 1 fichier texte qui contient des ligne du style : 0004 - Chu Chu Rocket (J)Donc le masque approprié pour sépare Nom machine [ par Bruto ] j'ai trouvé sur le site php.net la possibilité de récupéré le nom de la machine$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); print $hostname;?> Personnaliser les erreur SQL dans Dreamweaver [ par msappdem ] Bonjour, Pour tester ce programme (Dreamweaver MX) j'ai décidé de créer un petit guestbook. Au bout de quelques heures cela fonctionne a merveille et pb de formulaire mail lié à une variable GET [ par melanijasmin ] salut à tous !Je fais appel à vos lumières expertes, car je bloque depuis plusieurs jours sur un  "%@!!& " de formulaire auquel je ne comprends plus r php mail() erreur outlook [ par gurts69 ] ok moi je fait la commade mail();mais quand je l'evoy dans ouotlook express il ne la recois pas meme si je fait envoyer et recevoirpar contre quand je utilisation de preg_match [ par joebuz ] bonjour, voila j'ai 4 type de phrases (pour l'instant) et je veux en extraire le morceau compris entre // et //1- $phrase = "salut visiteur //act_001.


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales