cs_darksam
Messages postés58Date d'inscriptiondimanche 2 mars 2008StatutMembreDernière intervention20 septembre 2012
-
22 juin 2009 à 19:46
cs_darksam
Messages postés58Date d'inscriptiondimanche 2 mars 2008StatutMembreDernière intervention20 septembre 2012
-
23 juin 2009 à 15:29
Bonjour,
Je vais être bref mais précis !
Je souhaite sécuriser ma page avec un mot de passe en utilisant le PHP "SANS base de données". Certes il est possible de le faire très facilement avec Java script en utilisant les lignes de codes suivantes :
______________
<head>
<script langage = "javascript">
function Check(){
var passe=document.forms[0].elements[0].value;
if (passe==" MOT DE PASSE "){
alert("Vous pouvez rentrer !");
window.location ="VOTRE PAGE SUIVANTE.HTML"; }
else {
alert("Mot de passe incorrect !");
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MON SITE</title>
</head>
______________
Le problème c'est qu'il suffit d'aller dans la page source de cette page et de copier coller le mot de passe dans le script de celle-ci !
Moi je souhaite créer un script en PHP qui permet la demande d'un mot de passe sur la page et qui plus es, ne l'affiche pas dans la page source...compatible pour tous les navigateurs !
Enfaite j'ai pas trop envie de créer une base de donnée en SQL pour seulement sécuriser une seule page ! Je veux juste qu'on puisse rentrer sur la page suivante en introduisant un mot de passe pour avoir accès à toutes les autres pages...tout simplement.
Doit surement bien avoir des fortish ici ^^ Enfin à vos claviers et merci d'avance !
cs_TropNul
Messages postés340Date d'inscriptiondimanche 18 septembre 2005StatutMembreDernière intervention22 octobre 2009 22 juin 2009 à 20:54
Bonjour,
Voici une ébauche de ce qui pourrait fonctionner.
<?php
if ($_POST['pw'] != NULL) { // on regarde s'il y a eu un 'submit' via le formulaire ci-dessous
if ($_POST['pw'] != 'Le_mot_de_passe') { // vérification de ce mot de passe
echo('Mot de passe incorrect !
');
exit(); // on arrête tout s'il est incorrect.
} else {
// afficher le contenu de la page ici, s'il est bon !
}
} else {
?>
<!--
A mettre ici le code d'un formulaire
en xHTML simple demandant le mot de passe 'pw'
-->
<?php
}
?>
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 22 juin 2009 à 20:59
Salut,
C'est très simple .... par exemple :
- tu stockes le mot de passe en md5 dans un fichier texte
- tu crées une fonction :
function is_valid ($pass) {
$a = file_get_contents...
if (md5($pass) === $a) return true; else return false;
}
if (!is_valid($_POST['pass']) {
header('Location: pass_pas_bon.php');
exit;
}
// ta page sécurisée
Bien sur tu prendras soin de protéger efficacement le fichier texte contenant le mot de passe (htaccess)
... et si tu as besoin d'une gestion multiutilisateurs => base de données obligatoire (sinon usine à gaz :o))
Je te laisse te renseigner sur les fonctions php utilisées.
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 22 juin 2009 à 21:20
yep, les 2 sont séduisantes, il y a du pour est du contre des 2 côtés :
- la mienne est plus flexible s'il faut, par exemple, gérer 4/5 niveaux d'accès, séparer le contenu, ...
- la tienne est plus simple et tout autant sécurisée, et répond sans doute mieux à la demande
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 22 juin 2009 à 21:33
.... tu ne comprends pas quoi au juste, les 2 codes ont déjà été fait ?
Il suffit de remplacer :
pour TropNul :
// afficher le contenu de la page ici, s'il est bon !
ou (pour moi)
// ta page sécurisée
par le code de ta page
et "pass_pas_bon.php" est par exemple une page qui indique à l'utilisateur que son mot de passe est incorrect, ou alors tu rediriges vers la page d'accueil
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 22 juin 2009 à 23:46
l'avantage du fichier texte c'est que tu peux stocker plusier mdp et éventuellement le combiner à un nom d'utilisateur... .. .
pour faire au plus simple et un peu sécure quand même je ferais...
function isValidUser($pseudo, $pass) {
return in_array(md5($pseudo.$pass), file('path_vers_ton_fichier.txt'));
}
après tu fais un fichier texte tu enregistre le hash md5 pseudo+pass en en mettant un par ligne et tu met le fichier dans un répertoire protégé par .htaccess "deny from all"
Mais j'aurais tendance à rejoindre syndrael... un htaccess sera bien plus simple... sinon après va falloir parler de session... lol... .. . ;o)
cs_darksam
Messages postés58Date d'inscriptiondimanche 2 mars 2008StatutMembreDernière intervention20 septembre 2012 23 juin 2009 à 00:10
Bon je vais essayer de mettre un exemple lollllllllllll
<html>
<head>
<title>bienvenue sur mon site</title>
</head>
<?php
if ($_POST['pw'] != NULL) {
if ($_POST['pw'] != 'entrer2009') {
echo('Mot de passe incorrect !
');
exit();
} else {
// comment j'affiche ma page ? pas assez d'explication !!! par un lien...ma page doit etre une page php ou html ????
}
} else {
?>
<!--
vous avez pas une idée là parce que franchement !!!!!!
-->
<?php
}
?>
cs_TropNul
Messages postés340Date d'inscriptiondimanche 18 septembre 2005StatutMembreDernière intervention22 octobre 2009 23 juin 2009 à 05:55
J'ai comme l'impression que tu n'as jamais fais de la programmation en PHP. Tu dois absolument lire les fichiers d'aide de PHP si tu veux te lancer dans cette voie. Apprendre par l'exemple, c'est très bien. Mais essayer de comprendre un code tout seul, c'est encore mieux. Toutefois, je vais décortiquer le traitement pour que tu cernes mieux le principe.
Page de Login :
[TraitementServeurEnPHP - Renverra 'Bon' ou 'Pas Bon']
[Si variable 'pw' existe et est affectée]
[Si 'Bon']
[Afficher le Contenu COMPLET de la 'Page Cible' ici]
<html>
etc etc ...
</html>
[Si 'Pas Bon']
[Afficher message d'erreur]
[Désaffecter la variable 'pw']
[Si variable 'pw' n'existe pas ou est NULL]
[Afficher le formulaire]
cs_TropNul
Messages postés340Date d'inscriptiondimanche 18 septembre 2005StatutMembreDernière intervention22 octobre 2009 23 juin 2009 à 05:58
Kankrelune a soulevé un point très important et je t'en remercie.
En effet, une variable peut exister en contenant la valeur NULL. Tu peux donc rajouter une condition supplémentaire pour vérifier que cette variable n'est pas nulle avant de continuer. Cela arrivera si l'utilisateur submit le formulaire en ne mettant rien dans le champ du mot de passe.
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 23 juin 2009 à 11:31
pas exactement... mais presque... .. . ;o)
Si l'utilisateur soumet le formulaire à vide la valeur de pw sera
$_POST['pw'] = '';
le truc c'est que quand tu test ton index il n'existe pas... si tu met ton error_reporting à E_ALL tu verra
Notice: Undefined index: pw in xxxxx on line y
Car l'index pw ne vaut pas null il n'existe pas ce qui n'est pas la même chose... du coup ton test marche parce que php ne trouvant pas la variable il renvois null mais ça c'est un coup de chance parce que php est gentil... .. .
Après effectivement l'utilisateur peut faire une attaque null byte mais sur ce code ça serait sans effet... par contre pour vérifier si l'utilisateur à soumis quelque chose tu peux utiliser empty()... .. .
Pour ce qui est de comprendre ce code... et bien il faut commencer par le début... aller plus vite que la musique ne sert à rien en dev...