Respecter la casse dans un if

Eléphant du PHP | 271 Messages

22 juin 2006, 09:48

Bonjour,

Je souhaite inclure dans les conditions un respect de la casse, du POST : Nom_visiteur et je ne sais pas comment faire. J'ai cherché dans des tutos et dans quelques faq mais je n'ai rien trouvé.

Si quelqu'un pouvait m'aider ?

<?php
 if(isset($_POST) && !empty($_POST['Nom_visiteur']) && !empty($_POST['Email_visiteur'])) {
  extract($_POST);
  // on recupère le mail de la table qui correspond au login du visiteur
  $sql = "select mailvisiteur from table_verif where mailvisiteur='".$Email_visiteur."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data = mysql_fetch_assoc($req);

  if($data['mailvisiteur'] != $Email_visiteur) && !// respecter la casse// {
    echo '<p align=\"center\"><font color="red">Mauvais pseudo ou E.mail, Veuillez recommencer</font></p>';
    include('index.php3'); // On inclut le formulaire d'identification
    exit;
  } ?>
Merci d'avance
Patience et obstination sont des qualités !

Mammouth du PHP | 1353 Messages

22 juin 2006, 09:54

Bonjour,

je te conseille de créer un fonction verif_chaine($chaine) qui recoit le POST et vérifie la chaine puis renvoie true si la casse est respectée, false sinon.

Pour vérifier une fois a l interieur de cette fonction tu peux utiliser ctype_lower($caractere) et ctype_upper($caractere) par exemple, qui vérfient si un caractere en un minuscule ou en majuscules... D autres fonctions peuvent t interesser ici.

Bon courage.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 1353 Messages

22 juin 2006, 10:09

J'ai crée un petit exemple si tu veux y voir plus clair.

tu ajoutes la ligne
$respect_casse = test_chaine($_POST["Nom_visiteur"]);
avant le if.

et tu déclares au début de ton fichier la fonction suivante, qui vérifie dans mon exemple que la premiere lettre est une majuscule et que tous les autres caractères sont des lettres minuscules.
function test_chaine($chaine)
{
if(!ctype_upper($chaine[0])) return false;
for($i=1;$i<strlen($chaine);$i++)
	{
	if(!ctype_lower($chaine[$i])) return false; 
	}
return true;
}
il te suffit de tester dans ton if la valeur de $respect_casse.

Voila, je pense que tu pourras facilement adapter cet exemple a ton cas, selon ce que tu veux comme respect de casse...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 juin 2006, 10:36

Juste une remarque comme ça, au niveau des adresses mail la casse n'a pas d'importance contrairement aux url, majuscule ou minuscule, le mail arrive à destination :)

Sinon pourquoi ne pas simplement utiliser ereg() pour comparer tes deux chaines ? Il est par défaut sensible à la casse...