Probleme avec site protégé par mot de passe
Dernière réponse : dans Programmation
Bonjour,
Voici mon problème: j'ai créé ma page index.php avec un if/else pour protéger mon site avec un mot de passe. jusque là tout marche tres bien. Le probleme c'est que dans mon menu de navigation, j'ai un lien qui ramene à la page d'accueil (index.php), et quand on clique dessus, il redemande le mot de passe. Comment faire pour qu'il se souvienne que le visiteur s'est déjà identifié? J'avais pensé à faire en sorte que ma page d'accueil ne soit pas l'index.php, mais ca implique de demander au visiteur, une fois identifié, de cliquer sur un bouton/lien pour accéder à la page d'accueil, c'est un peu lourd je pense. donc je solicite votre aide pour simplifier tout ca en faisant en sorte que index.php soit la page d'accueil (et non pas uniquement la page d'acces) mais que le site ne redemande pas au visiteur le mot de passe à chaque retour sur la page d'accueil.
Merci à vous.
Voici mon problème: j'ai créé ma page index.php avec un if/else pour protéger mon site avec un mot de passe. jusque là tout marche tres bien. Le probleme c'est que dans mon menu de navigation, j'ai un lien qui ramene à la page d'accueil (index.php), et quand on clique dessus, il redemande le mot de passe. Comment faire pour qu'il se souvienne que le visiteur s'est déjà identifié? J'avais pensé à faire en sorte que ma page d'accueil ne soit pas l'index.php, mais ca implique de demander au visiteur, une fois identifié, de cliquer sur un bouton/lien pour accéder à la page d'accueil, c'est un peu lourd je pense. donc je solicite votre aide pour simplifier tout ca en faisant en sorte que index.php soit la page d'accueil (et non pas uniquement la page d'acces) mais que le site ne redemande pas au visiteur le mot de passe à chaque retour sur la page d'accueil.
Merci à vous.
Autres pages sur : probleme site protege mot passe
Lassé par la pub ? Créez un compte
Bon alors, ca va pas du tout, je nage grave... Voici ce que j'ai fait et qui marche:
Et ce que j'ai ajouté et qui ne marche pas:
J'ai de plus un message d'erreur:
La ligne 19 correspondant à la ligne du code "setcookie()"
Voilà, je m'en remets à vous parce que moi je suis perdu.
Merci.
<?php
if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
// On se crée une variable $mot_de_passe avec le mot de passe entré
$mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
$mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}
if($mot_de_passe == "pinguin")
{
?>
Et ce que j'ai ajouté et qui ne marche pas:
<?php
setcookie("monsite", "$mot_de_passe", time());
?>
J'ai de plus un message d'erreur:
Warning: Cannot modify header information - headers already sent by (output started at /mnt/125/sdb/b/0/monsite/index.php:2) in /mnt/125/sdb/b/0/monsite/index.php on line 19
La ligne 19 correspondant à la ligne du code "setcookie()"
Voilà, je m'en remets à vous parce que moi je suis perdu.
Merci.
alors voici ma page, (sans le contenu html, et de toute facon tout le monde s'en fout):
<?php
if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
// On se crée une variable $mot_de_passe avec le mot de passe entré
$mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
$mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}
if($mot_de_passe == "pinguin")
{
?>
<?php
setcookie("cookie_name", "$mot_de_passe", time());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
<html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" lang="fr">
<head>
<title>Ma page web</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<p>Contenu de la page</p>
</body>
</html>
<?php
}
else
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
<html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" lang="fr">
<head>
<title>Ma page web</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>Pour des raisons de sécurité, l'accès de ce site est soumis à identification.</p>
<p>Veuillez entrer le mot de passe :</p>
<form action="index.php" method="post">
<p>
<input type="text" name="mot_de_passe" /> <input type="submit" value="Entrer" />
</p>
</form>
</body>
</html>
<?php
}
?>
Si : il y a une ligne blanche avant le "bloc" du setcookie..
dartyduck >> Tant que tu restes dans du code PHP, ne referme pas la balise <?php ... ?>.. Sinon, c'est interprété comme du code HTML, ce qui est proscrit avant l'envoi des en-têtes (headers)..
Ca donnera donc ça :
Ca paraît simple, mais c'est un piège assez courant, surtout quand on se met à jouer avec plusieurs scripts, notamment emboîtés à travers des fichiers..
dartyduck >> Tant que tu restes dans du code PHP, ne referme pas la balise <?php ... ?>.. Sinon, c'est interprété comme du code HTML, ce qui est proscrit avant l'envoi des en-têtes (headers)..
Ca donnera donc ça :
<?php // ici aucun caractère avant l'ouverture de ta balise php, pas d'espace, pas de retour chariot (retour à la ligne, quoi)
if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
// On se crée une variable $mot_de_passe avec le mot de passe entré
$mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
$mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}
if($mot_de_passe == "pinguin")
{
// ici pas de fermeture de balise php !
setcookie("cookie_name", "$mot_de_passe", time());
// Ensuite, le mieux est encore de lancer le DOCTYPE depuis un "echo", aussi pour éviter une ligne blanche avant (IE ne tolère pas de ligne blanche ou toute autre forme de choses avant le DOCTYPE). Tu referas le même principe pour ton 'else'..
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
<html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" lang="fr">'."\n\n";
?> // et tu refermes ta balise php ici..
// ici la suite.....
Ca paraît simple, mais c'est un piège assez courant, surtout quand on se met à jouer avec plusieurs scripts, notamment emboîtés à travers des fichiers..
Fait une vérif sur ta page accueil :
Technique simplissime et efficace, même si pas très élégante...
if(isset($_COOKIE['...'])) // si le coockie existe
{
if($_COOKIE['...'] == '...') // et si sa valeur correspond à l'identifiant d'accès au site
{
// on affiche la page sans s'identifier
}
else
{
// on demande l'identification
}
}
else
{
// on demande l'identification
}
Technique simplissime et efficace, même si pas très élégante...
voici ce que j'ai fait:
et le message que ca me donne qd je valide le mot de passe (ou meme quand il est faut d'ailleurs):
<?php
if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
// On se crée une variable $mot_de_passe avec le mot de passe entré
$mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
$mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}
if($mot_de_passe == "demigne" or $mot_de_passe == "lemoine")
{
setcookie("cookiename", "$mot_de_passe", time());
<echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
<html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" lang="fr">'."\n\n";
?>
et le message que ca me donne qd je valide le mot de passe (ou meme quand il est faut d'ailleurs):
Parse error: syntax error, unexpected '<' in /mnt/112/sdc/5/2/monsite/index.php on line 18
L'erreur vient du < devant echo.
Et tu ne va pas aller bien loin avec un echo pour écrire toute ta page html !
Préfère :
# if($mot_de_passe == "demigne" or $mot_de_passe == "lemoine" )
# {
# setcookie("cookiename", "$mot_de_passe", time());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">
<html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>" xml:lang="fr" lang="fr">
<?php
}
?>
Maintenant j'ai des nouveaux messages d'erreur. Ca me soule, je vaislaisser tomber, tant pis pour lemot de passe, c'est trop d'emmerdes et en plus je fais comme vous me dites mais je comprends pas ce que je fais, et ca me plait pas de pas comprendre. en plus j'aurais bien aimé vous donner l'adresse du site pour que vous voyez par vous meme mais j'ai pas envie qu'il se fasse référencer, et ce sera le ca. ou alors tu me donne ton mail et je t'envoie le lien, et on continue à en discuter sur le forum. c'est toi qui vois...
Je pense effectivement que si tu en comprends pas ce que tu fais, tu devrais laisser temporairement le temps de te mettre réellement au php... On ne va pas pouvoir t'aider tant que tu ne sauras pas ce que tu fais.
Reste avec le .htaccess, et tant pis pour le mot de passe. Du moins tant que tu ne maîtrises pas le php
Reste avec le .htaccess, et tant pis pour le mot de passe. Du moins tant que tu ne maîtrises pas le php
Problème résolu:
ma page index.php contient seulement la demande de mot de passe, et j'ai donc créé une page accueil.php pour la page d'accueil (logique). Pour éviter d'avoir à faire mes ajouts (mise à jour) en double (et sur la page index, et sur la page accueil) j'ai intégré un include("accueil.php") dans ma page index, et du coup tout roule parfaitement ainsi.
Pour les cookies je verrai ca plus tard.
Merci à toi Marsien pour ta disponibilité.
ma page index.php contient seulement la demande de mot de passe, et j'ai donc créé une page accueil.php pour la page d'accueil (logique). Pour éviter d'avoir à faire mes ajouts (mise à jour) en double (et sur la page index, et sur la page accueil) j'ai intégré un include("accueil.php") dans ma page index, et du coup tout roule parfaitement ainsi.
Pour les cookies je verrai ca plus tard.
Merci à toi Marsien pour ta disponibilité.
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumProbleme mot de passe linksys
- ForumProbleme mot de passe free
- ForumProbleme mot de passe rã seau
- ForumProbleme mot passe bios
- ForumProbleme outlook mot de passe
- ForumProbleme mot de passe portable
- ForumProbleme enregistrement mot de passe
- ForumProbleme hotmail mot de passe
- ForumProbleme code pour mot de passe
- articlesProbleme mot de passe os x
- Voir plus