Php/sql : password avec accents

Fermé
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 - 4 juin 2007 à 21:41
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 - 5 juin 2007 à 16:12
Bonsoir,

Encore moi :-) Maintenant que mon soucis de requete est fini, il reste un point critique dans ma zone membre :

1) l'utilisateur s'enregistre (login, mdp, mail), il peut choisir login et mdp avec ou sans majuscule, avec ou sans accents. ca ne pose aucun probleme, les données sont en registrées dans la base.
ex :
je m'enregistre avec le login : testé et mdp : testé --> enregistrement possible

2) l'utilisateur peut maintenant se connecter :
si il a un login avec accents, ca ne pose pas de problemes à la connection, le login est bien reconnu comme existant dans la bdd ; en revanche, si il a un mdp avec accents, impossible de le logguer !
ex :
je m'enregistre avec le login : testé et mdp : testé --> login avec accent reconnu, mais mdp avec accent non reconnu et connection impossible a la zone membre

une idée (hormis demander de ne pas choisir de mdp sans accents et sans caractères spéciaux car on est jamais sur de ce que va faire l'utilisateur et s'il va respecter la consigne) ? est lié au type de champ (password) ? j'ai vérifié, je n'ai appliqué aucun traitement particulier a l'un ou a l'autre qui amenerait ce probleme.

--> si vous aviez la solution soit pour interdire tous les caractères spéciaux sur un champ password ou alors permettre de les lire (la deuxieme serait mieux...

ps : base encodée latin1 general cs

merci !
A voir également:

3 réponses

webtotoche Messages postés 69 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 3 novembre 2007 7
4 juin 2007 à 22:32
Salut !

en revanche, si il a un mdp avec accents, impossible de le logguer !

Quel traitement appliques-tu au mot de passe saisi avant d'effectuer la recherche ?



--> si vous aviez la solution soit pour interdire tous les caractères spéciaux sur un champ password ou alors permettre de les lire (la deuxieme serait mieux...

Je suis partisan d'interdire la saisie des caractères spéciaux.

Ça peut être fait avec une expression régulière, en javascript côté client ou en PHP côté serveur.
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 335
4 juin 2007 à 23:21
Je re... j'etais sur alsacreation...

alors en fait, j'ai reussi a autoriser les accents... mais par contre le problème qui reste est expliqué ici : il concerne les caractères spéciaux.

https://forum.alsacreations.com/topic-20-26151-1-Accents-dans-les-mots-de-passe.html#p198205

Je suis intéressé donc par la possibilité d'interdire les caractères spéciaux, mais donc il me faudrait un exemple de script qui teste la présence de ces caractères et refuserait l'enregistrement si il y en a !

Merci!
0
webtotoche Messages postés 69 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 3 novembre 2007 7
5 juin 2007 à 15:34
Salut !


alors en fait, j'ai reussi a autoriser les accents.

C'était dû à quoi ?



mais donc il me faudrait un exemple de script qui teste la présence de ces caractères et refuserait l'enregistrement si il y en a !


Ce code contrôle, en javascript côté client, la saisie du login / mot de passe en n'acceptant que les lettres et les chiffres:

<html>
<head>

<script type="text/javascript">
//<![CDATA[
function validate_formlogin(frm) {
  var value = '';
  var errFlag = new Array();
  var _qfGroups = {};
  _qfMsg = '';

  value = frm.elements['login'].value;
  if (value == '' && !errFlag['login']) {
    errFlag['login'] = true;
    _qfMsg = _qfMsg + '\n - Login requis';
  }

  value = frm.elements['login'].value;
  var regex = /^[a-zA-Z0-9]+$/;
  if (value != '' && !regex.test(value) && !errFlag['login']) {
    errFlag['login'] = true;
    _qfMsg = _qfMsg + '\n - Chiffres et lettres uniquement pour le login';
  }

  value = frm.elements['passw'].value;
  if (value == '' && !errFlag['passw']) {
    errFlag['passw'] = true;
    _qfMsg = _qfMsg + '\n - Mot de passe requis';
  }

  value = frm.elements['passw'].value;
  var regex = /^[a-zA-Z0-9]+$/;
  if (value != '' && !regex.test(value) && !errFlag['passw']) {
    errFlag['passw'] = true;
    _qfMsg = _qfMsg + '\n - Chiffres et lettres uniquement pour le mot de passe';
  }

  if (_qfMsg != '') {
    _qfMsg = 'Erreur de saisie :' + _qfMsg;
    _qfMsg = _qfMsg + '\nVeuillez corriger.';
    alert(_qfMsg);
    return false;
  }
  return true;
}
//]]>
</script>
</head>
<body>


<form  action="" method="post" name="formlogin" id="formlogin" onsubmit="try { var myValidator = validate_formlogin; } catch(e) { return true; } return myValidator(this);">
<div>
<table border="0">

	<tr>
		<td align="right" valign="top">Login : <font color="red" size="1">*</font></b></td>

		<td valign="top" align="left"><input name="login" type="text" value="<>" /></td>
	</tr>
	<tr>

		<td align="right" valign="top">Mot de passe :<font color="red" size="1">*</font></b></td>
		<td valign="top" align="left"><input name="passw" type="password" value="" /></td>
	</tr>
	<tr>
		<td valign="top" align="left"><input name="btnsubmit" value="Envoyer" type="submit" /></td>
	</tr>

</table>
</div>
</form>

</body>
</html>


C'est généré avec PEAR::Quickform.


_
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 335
5 juin 2007 à 16:12
salut... pour les accents : je n'en ai aucune idée ! (peut être qu'en réalité c'etait déjà le cas, sauf que j'avais peut etre mis des caractères spéciaux avec, et donc j'ai fait le lien entr eles deux...)

Pour le script : tu aurais pas qqch de similaire coté serveur ? certaines personnes n'ont pas JS activé... et si ils font des bétises, j'ai pas envie de repasser derriere eux tout le temps :s

ce serait génial... sinon je chercherais ce soir, là j'ai po le temps!
0