8791 sujets

Développement web côté serveur, CMS

Bonjour!

Quelqu'un peut me dire pourquoi que mon patern laisse passé les slash et autre
caractère comme les "."?

Mon but est de laisser passer que les lettre de a-z et les "."

Même avec les preg_replace.

<?php

$redirection = "test////";
echo $redirection.'<br />';

//$redirection = preg_replace('`[^.a-z]`', "*", $redirection );

$redirection = preg_match('`\btest`i', $redirection, $match);

if ($redirection == "1") {
	print_r($match);
	die('1');
}
else {
	print_r($match);
	die('0');
}
?>

Modifié par dan4 (24 Feb 2011 - 04:02)
Le point est une classe regex ciblant tous les caractères sans exception. Du coup ta regex laisse passer absolument tout.
Pour utiliser le point en tant que caractère du dois l'échapper avec un antislash.

Ceci devrait marcher comme tu le souhaites :
[\.a-z]
preg_match('/test/')

mais preg_match tant qu'il voit test, il va faire passer.
meme si je mets preg_match('/test/')

meme aussi entre []+

Ce que je veux faire exactement c'est ceci :

si j'ai autre chose que "test" ou bien "allo" ou bien "allox",
de pas passer mais en acceptant un seul /

moust a écrit :
Le point est une classe regex ciblant tous les caractères sans exception. Du coup ta regex laisse passer absolument tout.
Pour utiliser le point en tant que caractère du dois l'échapper avec un antislash.

Ceci devrait marcher comme tu le souhaites :
[\.a-z]

Modifié par dan4 (17 Feb 2011 - 11:13)
J'ai résolu et tester plusieurs conditions. J'ai privilégié la solution comme suite :

<?php
$users = 'test';
$apass = 'test';

$secusers = preg_match('`^[a-z0-9]{6,8}$`i',$users);
$secapass = preg_match('`^[a-z0-9]{6,8}$`i',$apass);

print_r($secusers);
echo '/';
print_r($secapass);
echo ' : ';

if($secusers < 1 || $secapass < 1 )
die('Erreur de login! | <a href="login.php">login</a>');

echo 'suite...';
?>

Mon explication :
- Commencer et terminer par ceci : a-z ou 0-9
- Ayant au moins 6 caractères jusqu'à 8 maximum insensible à la case.
- Renvoi 1 ou 0, un erreur si c'est inférieur à 1.

Le tout fonctionne bien.

note sur les balises CODE du site :

Je trouve plus illisible quand on mets une balise code et avec code=php ça ne fonctionne pas toujours. Cependant, je ne sais pas si la balise a juste pour but de séparer pour différencier un exemple de code ou bien, c'est pour éviter qu'il ait des bogues dans le site.
Modifié par dan4 (24 Feb 2011 - 04:16)