Mot de Passe en php ...

Petit nouveau ! | 6 Messages

07 juin 2008, 01:36

Bonjour, je suis l'admin d'un site d'énigme et je veux faire une page comme celle ci : http://enigmeschristophe.free.fr/enigme ... nigme1.php

J'essaye mais je suis bloqué car dans le code source il y a la réponse...
Donc ça va pas ...
Comment il fait lui ??
Je suis bien embêté et je ne vois pas la solution...peut être saurez vous m'aidez ??
Modifié en dernier par Simmm le 07 juin 2008, 14:22, modifié 1 fois.

Eléphant du PHP | 80 Messages

07 juin 2008, 09:35

euh bah que veux tu faire precisement ?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphant du PHP | 174 Messages

07 juin 2008, 13:04

Bonjour.

Je ne vois pas où tu vois que la réponse est dans le code source ?

Pour répondre à ta question de manière générale : n'est affiché dans le code source que les éléments lus côté client (HTML, JavaScript...), donc pour qu'un élément ne soit pas dans le code source il faut qu'il soit interprété côté serveur (variable php par exemple).

Note : le système d'énigmes est un jeu connu alors essaie au moins de varier dès la première page, parce qu'un jeu du même genre très rependu sur la toile commence par cette même question...

Bon courage, bon jeu et bonne progra !
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Petit nouveau ! | 6 Messages

07 juin 2008, 13:33

En fait je suis en train de faire le même type d'énigmes...seulement je ne sais pas comment faire pour que ça fasse comme sur le lien que je vous avait montré !!!!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 juin 2008, 14:03

Tout simplement en comparant la réponse donnée à celle attendue avec php. Si la réponse est bonne tu rediriges l'utilisateur vers l'énigme suivante à coup de header(), si elle est erronnée il reste sur la page.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

07 juin 2008, 14:09

Concrétement ça donne quoi comme code car là moi je suis pas doué ! j'ai eu vraiment du mal à faire ce que j'ai fais :)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

07 juin 2008, 14:16

Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP", "Aidez-moi !" n'apportent rien à la compréhension de ton problème.
Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide.

Tu peux corriger ton titre en éditant ton premier message.

Merci de prendre le temps de lire les règlements.

Eléphant du PHP | 174 Messages

07 juin 2008, 14:17

Si tu as du mal à ce point là, commence par les bases et fais un détour sur phpdebutant.org ou sur siteduzero.fr

Ca t'aidera de manière plus constructive que si on fait le travail à ta place...

Note à Ryle : de manière générale, ne vaut-il pas mieux conseiller aux débutant d'utiliser du javascript (window.location.replace(url)) pour la redirection ?
Parce que si tu utilises header() le jour où tu décides de mettre en place des sessions, tu as une belle erreur avec un header already sent...

Bonne progra !
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Petit nouveau ! | 6 Messages

07 juin 2008, 14:30

Je résume mes questions ...et désolé pour le titre ...

Pour le formulaire, quelle est la page d'envoi?
-La page sur laquelle on se trouve à cet instant?
-la page contenant l'énigme suivante?

Parce que dans le deuxieme cas, la solution ne va pas : en effet on peut lire le nom de la page dans le code source!

:oops:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 juin 2008, 15:07

Note à Ryle : de manière générale, ne vaut-il pas mieux conseiller aux débutant d'utiliser du javascript (window.location.replace(url)) pour la redirection ?
Parce que si tu utilises header() le jour où tu décides de mettre en place des sessions, tu as une belle erreur avec un header already sent...
Je préconiserais quand même plus la méthode php :)

Le jour ou j'au besoin de mettre en place des sessions, il me suffit simplement de mettre le session_start() avant l'appel à header() (ou au pire si je code comme un cochon, avec un bon buffer :)). Donc à part un peu de rigueur dans ce que je fais, je n'ai aucune contrainte.

En revanche, en javascript je peux dépendre du navigateur du visiteur et de ses préférences (bon, c'est pas tant pour les 3 pauvres types qui ont désactivé javascript et chez qui aucun des sites utilisant ajax ou js ne fonctionne).


@Simmm : ben pourquoi tu poses la question si tu as déjà la réponse ? ;)
Ton formulaire envoi la réponse à la page que tu consultes actuellement, et côté php, tu testes si une réponse a été donnée, si elle est bonne tu rediriges, sinon tu ne fais rien (où tu lui met un p'tit mot) et il reste sur la page pour essayer de nouveau :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 174 Messages

07 juin 2008, 16:26

Le jour ou j'au besoin de mettre en place des sessions, il me suffit simplement de mettre le session_start() avant l'appel à header()
Justement ça dépend peut-être de la version de php (je le concède) mais sur une ancienne version (3 ou 4 je ne sais plus) le code suivant me donnait un header already sent :
<?php

session_start();

//traitement

if(condition à respecter){
 header();
}

?>
l me suffit simplement de mettre le session_start() avant l'appel à header()
pour ça tu n'as pas le choix, session_start() doit toujours être le premier élément écrit en php ;)


Simmm :

de toute façon qu'il s'agisse d'une page contenant la réponse de manière évidente (ici le nom de la page) ou pas, il est évident que tu dois faire le test dans la page de la question sinon tu vas devoir tester la réponse dans la page suivante et rediriger vers la page de la question si c'est faux... un peu long non ?
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 juin 2008, 12:12

pour ça tu n'as pas le choix, session_start() doit toujours être le premier élément écrit en php ;)
Euh... non... du tout... ton session_start() doit être fait avant de pouvoir utiliser les sessions (via $_SESSION ou les fonctions associées), mais ca peut très bien être l'avant dernière ligne de ton code, la seule contrainte étant (comme pour le header) de ne pas avoir envoyé de données au navigateur au préalable :)

Maintenant c'est vrai qu'on le trouvera généralement en haut du script pour être sur de ne pas l'oublier et limiter les risques d'envoi de données préalable, mais c'est du coup juste par habitude que par contrainte qu'on l'y colle :)

Pour le soucis de version en revanche, je ne sais pas.. je n'ai pas le souvenir d'avoir eu de problème, mais on était peut être déjà sous php4 quand j'ai commencé à jouer avec les sessions..
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

08 juin 2008, 22:39

Code : Tout sélectionner

<?php define('LE_PASSWORD','mdp'); // On redirige si le password n'est pas transmis ou s'il est mauvais (différent de la valeur de la constant LE_PASSWORD) if(empty($_POST['texte']) || ($_POST['texte'] !== LE_PASSWORD)) { header( "Status: 301 Moved Permanently", false, 301); header( "Location: http://www.faux.com"); exit; } else { header( "Status: 301 Moved Permanently", false, 301); header( "Location: http://www.juste.com"); exit; ?> <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title></title> </head> <body> <form method="post" action="depart.php" name="formu"><input name="texte">&nbsp;<input name="envoyer" value="Valider la réponse" type="submit"></form> </body> </html>
J'ai ça comme code, ça me semble bon : mais ça fonctionne pas !
Ou est le probleme ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 juin 2008, 23:30

Lorsque tu ouvres la page pour la première fois, il n'y a pas de valeur dans $_POST['texte'], du coup tu es redirigé vers faux.com avant même d'avoir pu voir le formulaire....

Par ailleurs oublie les header "301" , c'est pour indiquer qu'une page a été déplacée de manière définitive et n'a absolument aucun rapport avec ce que tu essayes de mettre en place..
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

01 juil. 2008, 18:22

Apres pas mal de petage de plomb j'en suis arrivé à ça ...
<?php // Je récupère ma valeure du formulaire
// Remarque que texte correspond au nom du champ input dont je veut récupérer la
// valeur
@$txt=$_POST['texte'];
// Si cette valeur n'existe pas
// Pour accélérer les traitements je termine la balise PHP.
if (@!$txt)
{
?>
<form method="post" action="depart.php"
 name="formu" id="formu"><input name="texte">
  <input name="envoyer" value="Valider la réponse"
 type="submit">
</form>
<?php }
// Sinon si la réponse vaut REPONSE que je considère être la bonne réponse,
// j'affiche n message qui me dit que c'est juste...
else if ($txt=="REPONSE")
{
echo("<h1>C'EST JUSTE !!!</h1>");
// C'est ici que tu peux utiliser ton renvoi avec Location
header ("Location: http://simmm.free.fr/");
}
// Toute autre valeur de $texte est fausse donc on affiche un message qui
// indique que la réponse est incorrecte.
else
{
echo("<h1>C'EST FAUX !!!</h1>");
}
echo("Valeur de \$txt = $txt");
?>
Mais ça marche toujours pas...
Je comprends rien ...