Protéger l'acces par mot de passe

Résolu/Fermé
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 - 20 sept. 2008 à 16:46
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

17 réponses

hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
20 sept. 2008 à 17:29
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
0
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
20 sept. 2008 à 20:34
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é...
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
21 sept. 2008 à 00:31
bonjour,

une protection par mot de passe en javascript ne sert à rien! l'utilisateur peut tout voir grâce à un simple clic-droit ^^
0
Mastaz Messages postés 65 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 23 février 2012 8
21 sept. 2008 à 00:46
Oui lol est confond pas Java avec JavaScript :S
0
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
21 sept. 2008 à 13:17
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
21 sept. 2008 à 17:03
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é...
0
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
21 sept. 2008 à 19:34
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.
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
21 sept. 2008 à 21:52
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>";
}
?>
0
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
21 sept. 2008 à 22:16
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?
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
22 sept. 2008 à 01:26
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 ^^
0
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
22 sept. 2008 à 01:32
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?
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
22 sept. 2008 à 01:36
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");
0
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
22 sept. 2008 à 01:41
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...
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
22 sept. 2008 à 01:46
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)
0
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
22 sept. 2008 à 01:50
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
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
22 sept. 2008 à 01:59
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>
0
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
22 sept. 2008 à 02:10
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 ;)
0
donuts08 Messages postés 519 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 15 octobre 2008 39
22 sept. 2008 à 02:21
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>";
0
hornetovore Messages postés 84 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 31 juillet 2017 6
22 sept. 2008 à 02:24
Ok, vais travailler là dessus pour en apprendre un peu plus, je te remercie pour ton aide en tout cas ;)
0