Générateur de mot de passe

Résolu/Fermé
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - Modifié par arthezius le 4/06/2010 à 18:00
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 - 5 juin 2010 à 19:06
Bonjour,
Il y a quelque temps, en réponse à un topic, j'avais mis en lien une page de mon site renvoyant vers un générateur de mot de passe que j'avais créé.
Celui était assez simple et générait exclusivement des chaines de 8 caractères composé de chiffres et lettres.
Suite à des suggestions, j'ai décidé de modifier mon script pour donner le choix du nombre de caractère et de la composition de la chaine (chiffres, lettres et caractères spéciaux).
La première page est ici: http://arthezius.fr/aleatoire.html
La nouvelle est ici: http://arthezius.fr/aleatoirebis.html

Sur la nouvelle, tout fonctionne bien.
On peux choisir le nombre de caractère, on peux choisir d'utiliser des chiffres, des lettres, des chiffres et des lettres.
Toutefois, le problème se pose pour les caractères spéciaux. Je n'arrive pas à afficher correctement les caractères que je veux.
Il semblerai que ça proviennent d'un problème d'encodage mais je vois pas a quelle niveau. La page s'intègre dans la mise en page global du site qui n'a aucun problème a ce niveau.
J'ai toutefois des ?? (avec le losange noir). J'ai essayé de rajouter htmlentities(). Là j'ai bien des caractères spéciaux mais pas ceux que j'ai défini. La page en ligne est celle avec le htmlentities().
Je vous met le code de la page en espérant que quelqu'un trouve la solution que je ne trouve désespérément pas.

<?php 
echo'<h4>Générer un mot de passe aléatoire</h4>'; 

function random($car) 
 { 
 $string = ''; 
 $chaine = ''; 
 if(isset($_POST['lettre']) && $_POST['lettre']=='on') 
  { 
  $chaine = $chaine.'abcdefghijklmnpqrstuvwxy'; 
  } 
 if(isset($_POST['chiffre']) && $_POST['chiffre']=='on') 
  { 
  $chaine = $chaine.'0123456789'; 
  } 
 if(isset($_POST['carac']) && $_POST['carac']=='on') 
  { 
  $chaine = $chaine.'àäâéèêëïîöôüûç'; 
  } 
 if(!isset($_POST['lettre']) && !isset($_POST['chiffre']) && !isset($_POST['carac'])) 
  { 
  $_POST['chiffre']='on'; 
  $_POST['lettre']='on'; 
  $chaine = "abcdefghijklmnpqrstuvwxy0123456789"; 
  } 
 srand((double)microtime()*1000000); 
 for($i=0; $i<$car; $i++) { 
 $string .= $chaine[rand()%strlen($chaine)]; 
 } 
 return htmlentities($string); 
 } 
  
if(isset($_POST['valid_aleatoire']) && !empty($_POST['nb_c'])) 
 { 
 $nb_caractere = $_POST['nb_c']; 
 } 
else{ 
 $nb_caractere = '8'; 
 } 
  
$chaine = random($nb_caractere); 

echo '<form method="post" action="aleatoirebis.html"> 
<div class="pave"> 
<p>Cette chaine aléatoire peut être utilisé pour vos mots de passe.</p> 
<p>Nb de caractères: <input name="nb_c" style="width:30px;" value="'.$nb_caractere.'"'; 
if(isset($_POST['nb_c'])){echo' value="'.$_POST['nb_c'].'"';} 
echo'/> <input type="checkbox" name="lettre" id="lettre"'; 
if(isset($_POST['lettre']) && $_POST['lettre']=='on') 
 {echo' checked="checked"';} 
echo' /> <label for="lettre">Lettres</label> <input type="checkbox" name="chiffre" id="chiffre"'; 
if(isset($_POST['chiffre']) && $_POST['chiffre']=='on') 
 {echo' checked="checked"';} 
echo' /> <label for="chiffre">Chiffres</label> <input type="checkbox" name="carac" id="carac"'; 
if(isset($_POST['carac']) && $_POST['carac']=='on') 
 {echo' checked="checked"';} 
echo' /> <label for="carac">Caractère spéciaux</label></p> 
<br/> 
<p><input value="'.$chaine.'" style="width:100px;" /></p> 
</div> 
<br/> 
<p><input type="submit" name="valid_aleatoire" value="Générer une nouvelle chaine"/></p> 
<p class="som"><a href="fun.html">Retour</a></p> 
</form>'; 
?> 

Le passage en gras est celui qui me génère la chaine de caractères spéciaux.
Merci d'avance.



--
« La recherche commence là où s'arrête la connaissance. »
A voir également:

3 réponses

arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
4 juin 2010 à 17:47
Help!
Personne n'a une idée à me proposer?
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
4 juin 2010 à 17:54
Mets tout en UTF-8, tu auras moins de problème :)
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
4 juin 2010 à 18:04
Tout est déjà en UTF8. C'est bien ça le problème. Je n'utilise que l'UTF8 pour l'encodage de mes pages. Le problème ne viens pas de là. Je viens de vérifier l'encodage.
En fait, quand j'enlève la fonction htmlentities(), j'ai certains caractères qui s'affichent correctement mais pas tous, les autre étant des <?>
Tu peux éventuellement faire des tests à partir de mon code (voir plus haut) mais tu verra que ça ne fonctionne pas comme je veux et je n'en comprends pas la raison.
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
Modifié par scriptiz le 4/06/2010 à 22:21
Essaye avec ceci, je me suis permis quelques modifications supplémentaires mais je n'ai toucher qu'à la fonction random($car) ^^

Code : http://demango.ovh.org/pass.txt
Page générée : http://demango.ovh.org/pass.php

Je le met en ligne car ici il remplace les & eacute; (en un mot) par les accents correspondants -_-

"The most successful method of programming is to begin a program as simply as possible, test it, and then add to the program until it performs the required job." -- PDP8 handbook, Pg 9-64
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
5 juin 2010 à 15:58
Je te remercie beaucoup.
ça fonctionne parfaitement comme je le souhaite.
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
5 juin 2010 à 19:06
Avec plaisir.
0