phooo Posté 1 Février 2006 Posté 1 Février 2006 Bonsoir, J'ai une question problèmatique. Un client me demande pour son site internet de modérer l'accès au site pour les gens ayant un pass. Ce pass est composé de 6 lettres et/ou chiffres. Exemple: E7A5FG. Ce code, une fois qu'il a été entré dans le site est alors supprimé et invalide pour les prochaines connexions! J'ai la liste des codes sous un format *.txt: pass.txt Je l'importe dans ma page en PHP via la commande file(); Je copie le contenu du fichier pass.txt dans une variable $contenu et je la transforme d'un tableau en chaîne via la commande implode(). $contenu = implode("",$contenu); Le code entré par l'utilisateur dans la page précédente dans un formulaire POST est récupérée et s'appelle $code $code = $_POST['code']; Et là... trou noir. Comment chercher une éventuelle occurence de $code dans $contenu et renvoyer TRUE si l'occurence a été trouvée, FALSE si l'occurence n'a pas été trouvée. Puis, comment supprimer l'occurence de la variable $contenu si elle a été trouvée. Enfin, comment réecrire dans le pass.txt le contenu de $contenu. Merci pour votre aide. pH
Kalt Posté 1 Février 2006 Posté 1 Février 2006 C'est pas tip top comme solution : ton fichier txt sera sur ton site et si un p'tit malin trouve de quelque manière que ce soit l'url de ce fichier, il verra tes mots de passe et pourra s'en servir... Tu n'as pas moyen de faire une petite table mysql avec les codes cryptés en MD5 dedans ?
petit-ourson Posté 2 Février 2006 Posté 2 Février 2006 Pas forcément, si tu interdits accès à ce répertoire, personne y aura accès. Ceci dit, il serait toutefois plus prudent de cryptés ces codes même en les laissant dans un fichier.
WewEB Posté 4 Février 2006 Posté 4 Février 2006 (modifié) Assez simple à faire. Tu boucles sur ta liste de mot de passes en créant au fur et à mesure un nouveau tableau dans lequel tu replace les mots de passe différents de celui du client. Ca donne: $trouve = false;$ntableau = array();foreach($contenu as $mdp) { if($mdp == $code) { // Le mot de passe a été trouvé, on ne le rajoute pas au tableau $trouve = true; } else { // Le mot de passe n'a pas été trouvé, on rajoute $mdp au nouveau tableau $ntableau[] = $mdp; }} Voilà, par la suite tu n'as qu'a vérifier si $trouve vaut true pour savoir si le mot de passe était bien dans le fichier. Ensuite, tu généres ce que tu veux écrire avec la fonction explode appliquée à $ntableau. Et tu écris tout ça avec fopen/fputs. Pour revenir sur la question de la sécurité, je te conseille de mettre le fichier pass.txt dans un dossier dans lequel tu places un .htaccess avec écrit dedans "Deny from all". De cette façon, personne ne pourra accéder à ce dossier ni au fichier autrement que par FTP ou par tes scripts exécutés (en gros, depuis la machine). Bonne chance Modifié 4 Février 2006 par WewEB
phooo Posté 23 Février 2006 Auteur Posté 23 Février 2006 Merci pour toutes vos réponses plus complètes les unes que les autres! Au niveau de l'écriture du .htaccess J'imagine qu'il s'agit d'un fichier texte que je renomme en .htaccess, mais au niveau du contenu, que dois-je mettre dedans? "Juste Deny from all". pH
captain_torche Posté 23 Février 2006 Posté 23 Février 2006 Oui, juste ça Ca évitera à des petits malins de récupérer les mots de passe. Ceci dit, j'aurais plutôt utilisé une méthode basée sur une base de données.
phooo Posté 23 Février 2006 Auteur Posté 23 Février 2006 (modifié) Erf, cette méthode n'a pas marché et maintenant, plus possible d'ouvrir le TXT pour accéder aux infos... Warning: fopen(-------.txt): failed to open stream: Permission denied Même après avoir supprimé le htaccess EDIT/ C'est bon, il s'agissait juste des permissions de fichier qui étaient mal configurées... Faut vraiment penser à tout pH Modifié 23 Février 2006 par phooo
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant