Protéger l'acces par mot de passe [Résolu/Fermé]

Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
- - Dernière réponse : hornetovore
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
- 22 sept. 2008 à 02:24
Bonjour à tous,

J'aimerai créé un accès protégé par mot de passe mais ça bloque quelque part et mes recherches infructueuses n'ont pas abouties, j'ai utilisé cette méthode:

____________________________________________________________
Code :

<html>
<head>
<title>motdepasse</title>

<link href="../js/pass.js" type="text/javascript">
</head>
<body>

<table width="100%" height="100%">
<tr>
<td align="center" valign="middle">
<form >
Utilisateur: <input type=text name="username" size=10><br><br>
Mot de Passe: <input type=password name="password" size=10><br><br>
<input type=button value="Entrer" onClick="Login(this.form)">
</td>
</tr>
</table>

</body>
</html>
__________________________________________________________________
et le fichier java qui va avec:
__________________________________________________________________
Code :

function Login(form)

{
var username = form.username.value;
var password = form.password.value;

if (username=monlogin && password=monpassword)
{
document.location.href='document si ok'
}
else
{
alert("Mot de Passe Invalide ... ")
}
}
_______________________________________________________________

Lorsque je clic sur le bouton, rien ne se passe et quand je vais voir dans la console d'erreur de firefox, j'ai ce message:
login is not defined!!!

Alors , déjà, je ne suis pas sur que c'est là que je dois mettre monlogin et monpassword, le resultat est le même avec ou sans... et je sais que la methode n'est pas du tout securisée le code source indiquant où trouver le .js et ce dernier ayant le code visible en clair, je reste ouvert à toute proposition différentes!

Merci de votre aide
Afficher la suite 

17 réponses

Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6
0
Merci
Je viens de me rendre compte d'une erreur de debutant, mais ça ne solutionne pas, ça precise l'endroit du problème je pense, l'erreur était dans la ligne d'appel du .js, je l'avais mal formulée, c'est plutôt ça qu'il me fallait:
<script language="javascript" type="text/javascript" src="../js/pass.js"></script>

à la place de :
<link href="../js/pass.js" type="text/javascript">

En réessayant, le message dans la console d'erreur est celui ci:
missing ) after condition : if (username=monlogin && password=monpassword) pour le fichier pass.js
et toujours mon
login is not defined pour le fichier pass.html
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6
0
Merci
suite et fin

soluce trouvée, mon erreur etait celles là:
if (username == "monlogin" && password == "monpaswword")
il fallait ces satanés guillemets, et dans mon cas, c'était & amp (tout attaché), le fofo virait le amp, tout fonctionne nikel en mettant simplement &&, reste que la methode est avec un grand danger niveau securité...
Messages postés
521
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
15 octobre 2008
35
0
Merci
bonjour,

une protection par mot de passe en javascript ne sert à rien! l'utilisateur peut tout voir grâce à un simple clic-droit ^^
Messages postés
66
Date d'inscription
jeudi 8 mai 2008
Statut
Membre
Dernière intervention
23 février 2012
6
0
Merci
Oui lol est confond pas Java avec JavaScript :S
hornetovore
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6 -
java, javascript, là je vais passer pour le bros neuneu, mais elle est où la différence?
Après, niveau sécurité, oui il y à effectivement un gros problème, je sais mais comment me conseillez vous de faire alors?
Messages postés
521
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
15 octobre 2008
35
0
Merci
Java et Javascript sont deux langages différents! Javascript est utilisé pour les pages Web et Java c'est plus pour faire des programmes. (Mais beaucoup confondent t'es pas le premier ;) )

Sinon pour la protection par mot de passe tu as deux solutions:

- utiliser une protection par htaccess: ça t'affichera une fenêtre pour te demander un mot de passe quand tu voudras accèder à la page (Pas joli ^^)
- utiliser PHP: là il faut que tu apprennes un peu de PHP et que tu ais un serveur Web ou PHP est installé...
hornetovore
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6 -
Ok pour java et javascript, compris, merci :)

Si on peut me detailler les methodes, je tenterai l'une et l'autre et choisirai en fonction, pour le php, pas de problèmes, une partie du site est construite en php donc c'est supporté, je debute encore mais j'en apprendrais au passage un peu plus.
Messages postés
521
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
15 octobre 2008
35
0
Merci
voilà en PHP:

<?php
if(isset($_POST["mdp"]) && isset($_POST["login"]) && $_POST["mdp"] == "monmotdepasse" && $_POST["login"] == "monlogin")
{
echo "Login et mot de passe corrects!";
}
else
{
echo "<form method=\"post\" action=\"\" name=\"form\"><input type=\"text\" name=\"login\" /><input type=\"text\" name=\"mdp\" /><input type=\"submit\" /></form>";
}
?>
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6
0
Merci
vais tenter ça, merci beaucoup donuts08 mais pourquoi c'est plus sécurisé? l'utilisateur peut quand même lire le code source là aussi non?
Messages postés
521
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
15 octobre 2008
35
0
Merci
non car le fichier PHP est forcément interprété si tu as PHP d'installé sur ton serveur

je t'explique:

quand un visiteur veut afficher une page, son navigateur envoi une requête à un serveur Web (le tiens), ce serveur lui renvoi la page qu'il a demandé, et son navigateur affiche la page reçu

mais avec PHP, la page qui est sur ton serveur n'est pas envoyée directement, elle est tout d'abord lu par PHP, qui lit et execute le code, le serveur Web ne fait que récupérer le texte qui a été généré par ton code et l'envoi

quand tu fais un echo, ça génère du texte et l'utilisateur ne voit que ça! tu peux toujours essayer avec un clic droit tu verras ^^
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6
0
Merci
ah ouaiii, joli, niquel en effet, mais je bloque sur un problème là, j'ai le message qui arrive si je rentre le bon mdp mais j'ai essayé de remplacer la phrase par un lien, j'ai donc mis ça en lieu et place de la phrase:
echo "<a href="Mon_lien">

puis essayé ça:
echo "document.location.href='Mon_lien'";

mais ça ne veut pas, comment on insere un lien pour donner une redirection si le mot de passe est ok?
Messages postés
521
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
15 octobre 2008
35
0
Merci
il faut que tu fasse attention aux guillemets ^^

echo "<a href=\"monlien\">texte lien</a>";

N'oublie pas les \ pour protéger les guillemets qui vont apparaitre car sinon PHP croit que tu termines la chaine de caractères et donc te donne une erreur

EDIT:

mets ça tout en haut de ta page (avant le moindre texte) si tu veux rediriger:

header( "Status: 301 Moved Permanently");
header("Location: http://www.votresite.com/unepage.htm");
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6
0
Merci
Ca fonctionne, mais ça m'affiche le lien, on peut faire en sorte que le fait de cliquer sur le bouton amène directement sur la page voulue?

EDIT: tu as editer entre temps ^^, le texte, je le met où, parce que pour etoffer un peu le forulaire, je l'ai inseré dans une page html avec les balises <html ><head > etc...
Messages postés
521
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
15 octobre 2008
35
0
Merci
comme ça?

<?php
if(isset($_POST["mdp"]) && isset($_POST["login"]) && $_POST["mdp"] == "monmotdepasse" && $_POST["login"] == "monlogin")
{
header( "Status: 301 Moved Permanently");
header("Location: http://www.votresite.com/unepage.htm");
}
else
{
echo "<form method=\"post\" action=\"\" name=\"form\"><input type=\"text\" name=\"login\" /><input type=\"text\" name=\"mdp\" /><input type=\"submit\" /></form>";
}
?>

attention car dans ce cas, il ne doit pas y avoir de commande "echo" devant les "header", et il ne doit pas y avoir de texte ni rien d'autre devant la balise <?php, c'est très important (même pas un saut de ligne d'ailleurs)
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6
0
Merci
arf, j'ai fait ça:

<html>
<head>
<title>pass</title>

<style type="text/css">
.......
</style>

</head>
<body>

<div id="container">
<div id="form">

<?php
if(isset($_POST["mdp"]) && isset($_POST["login"]) && $_POST["mdp"] == "mdp" && $_POST["login"] == "login")
{
echo "<a href=\"../../.html/kit/dontspeak/\">Entrer</a>";
...

Il y a les div, c'est quand même bon?



EDIT: j'ai tenté de faire comme ça pour voir, j'ai mis les deux ligne à la place du echo "<a href=\"url>text</a>
mais je recois cette erreur quand je valide avec les bons login et mdp:
Warning: Cannot modify header information - headers already sent by (output started at /media/sdb3/jo/serveur/.php/secure/pass.php:5) in /media/sdb3/serveur/.php/secure/pass.php on line 55

Warning: Cannot modify header information - headers already sent by (output started at /media/sdb3/jo/serveur/.php/secure/pass.php:5) in /media/sdb3/serveur/.php/secure/pass.php on line 56
Messages postés
521
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
15 octobre 2008
35
0
Merci
non, il ne faut absolument rien devient les "header"

d'ailleurs ne mets aucun code HTML car de toutes manières tu vas rediriger l'utilisateur, il n'a donc pas besoin de voir quoi que ce soit...

tu vas me dire "mais alors si le mdp est faux il faut bien que j'affiche quelque chose?" et dans ce cas je te répondrai ceci:

<?php

$mdpok = false;

if(isset($_POST["mdp"]) && isset($_POST["login"]) && $_POST["mdp"] == "monmotdepasse" && $_POST["login"] == "monlogin")
{
$mdpok = true;
header( "Status: 301 Moved Permanently");
header("Location: http://www.votresite.com/unepage.htm");
}
?>

<html>
<head>
</head>
<body>

<?php
if( !$mdpok )
echo "<form method=\"post\" action=\"\" name=\"form\"><input type=\"text\" name=\"login\" /><input type=\"text\" name=\"mdp\" /><input type=\"submit\" /></form>";

?>

</body>
</html>
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6
0
Merci
Parfais... pas d'autre mot, reste que je n'ai pas tout compris, les header surtout et le if( !$mdpok ).
Que je ne vienne pas redemander pour un truc avoisinant un autre jour ;)
Messages postés
521
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
15 octobre 2008
35
0
Merci
en fait, quand un fichier est créé, il y a une entête et un contenu pour ce fichier, or, une fois qu'il y a du contenu (que tu mets une ligne ou n'importe quoi d'autre), tu ne peux plus modifier l'entête

header, c'est une fonction PHP qui permet de générer une partie de l'entête du fichier, ici on lui dit que le fichier est une redirection mais seulement si le mot de passe est invalide, si il est valide on change pas l'entête comme ça le fichier reste un document HTML

tu comprends donc que tant qu'on ne sait pas si le mdp est valide, on ne peut se permettre de mettre du contenu

ensuite pour le if($mdpok), c'est pour que le code soit plus clair, sinon tu aurais pu faire un énorme "echo" (mais c'est très moche je trouve ^^)

echo "<html><head></head><body><form method=\"post\" action=\"\" name=\"form\"><input type=\"text\" name=\"login\" /><input type=\"text\" name=\"mdp\" /><input type=\"submit\" /></form></body></html>";
Messages postés
84
Date d'inscription
vendredi 11 avril 2008
Statut
Membre
Dernière intervention
31 juillet 2017
6
0
Merci
Ok, vais travailler là dessus pour en apprendre un peu plus, je te remercie pour ton aide en tout cas ;)