Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/09/2006, 14h32   #1
Invité régulier
 
Inscription : septembre 2006
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 37
Points : 9
Points : 9
Par défaut Detecter un ou plusieurs caractères spéciaux

Bonjour/Bonsoir,

Voila, lors d'une inscription j'aimerais vérifier si le login et d'autres attributs du joueur qui veut s'inscrire sont "conformes". C'est à dire qui ne contient pas de caractères spéciaux.

J'ai fait une première tentative comme je faisais en C :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
function IsConform($string)
{
	$i=0;
	while($string[$i] != NULL)
	{
		if(($string[$i] < 'A' && $string[$i] > 'Z') || ( $string[$i] < 'a' && $string[$i] > 'z'))
		{
			echo "caractère ".$string[$i]." invalide<br>";
			return -1;
		}
 
		$i++;
	}
}
mais ca ne marche pas (je ne sais pas pourquoi )...

J'ai alors fait une petite recherche et vu qu'on pouvait utiliser les fonctions regs (preg_match(), reg(), etc..) mais...malgré mes efforts je n'arrive pas trop à comprendre comment marche ces fonctions la.

Voila donc je fait appel à vous si vous avez une solution pour voir si une chaine est compatible avec les fonctions regs ou par un autre moyen. Je précise que pour que la chaine soit bonne je veux uniquement les caractères A-Z et a-z et 0-9 (donc du alphanumérique simple on va dire).

Merci d'avance.
fabseven est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2006, 14h34   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Je te recommande d'aborder les regexes à l'aide de nos tutoriels en commençant par : Initiation aux expressions régulières en PHP
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2006, 16h53   #3
Invité régulier
 
Inscription : septembre 2006
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 37
Points : 9
Points : 9
Merci beaucoup. Somehow je suis arriver à coudre quelque chose :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
 
$tab[0] = $_GET['string1'];
$tab[1] = $_GET['string2'];
$tab[2] = $_GET['string3'];
$tab[3] = $_GET['string4'];
$max=15;
 
$i=0;
while($tab[$i] != NULL)
{
 
	$pattern1 = "/^[A-Z]{1}[a-zA-Z0-9]{4,}/";
	$pattern2=  "/^[^ ]+$/";
	$pattern3=  "#@*%ù$¤£¨^!§:.;,?/{([-|`\ç^#";
 
	if(preg_match($pattern1, $tab[$i]) && preg_match($pattern2, $tab[$i]) && !preg_match($pattern3, $tab[$i]) && strlen($tab[$i]) < $max )
	{
        echo "<font color=green>la chaine <b>[".$tab[$i]."]</b> est <u> valide </u>.</font><br>" ;
    }
    else{
        echo "<font color=red>la chaine <b>[".$tab[$i]."]</b> n'est pas valide</font><br>";
    }
 
	$i++;
 
}
 
echo "<hr>/o\ Pour qu'une chaine sois valide elle ne doit pas comporter les caractères<b> @*%ù$¤£¨^!§:.;,?/{([-|`\ç^'espace'</b> , commencer par une <b>Majuscule comme 1ère lettre</b> et avoir au moins une longueur de <b>5 lettres</b> (longueur max = $max)<hr>";
?>
J'ai finalement utiliser 3x la fonction preg_match (histoire de simplifier car autrement c'était trop dur de tout combiner )...peut-être que j'aurais pu utiliser la fonction preg_match_all ? Y aurais t'il un ou des avantages à ce moment la ?


remarque : J'ai utiliser la méthode $_GET afin de pouvoir tester assez rapidement plusieurs chaines différentes mais on aurais pu remplir manuellement le tableau directement dans le code....
fabseven est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h26.


 
 
 
 
Partenaires

Hébergement Web