Mot de passe en php

Fermé
vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008 - 7 juin 2008 à 12:59
 vivikowski - 23 juin 2008 à 15:51
Bonjour,

Un lien vaut mieux que beaucoup de lignes :

http://enigmeschristophe.free.fr/

Je cherche à comprendre comment est faite cette page!

Pour mieux vous expliquer, il s'agit d'un site d'énigmes ou on passe à la page suivante en tapant un mot de passe (la réponse à l'enigme courante)

Son code est protégé.

Qui plus est, le nom de la page n°2 est la réponse à l'énigme 1.
Il ne doit donc pas apparaitre dans le code!

Comment fait il ca?

Merci pour vos réponses,
salutations

10 réponses

EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
7 juin 2008 à 13:57
Ah c'est juste ça que tu voulais faire ?

Alors regarde le code source HTML comme te l'avait proposé vlar.

En fait c'est juste un formulaire. Tu utilises la balise <form> avec l'option method (get ou post).
Ici il a choisi POST pour ne pas afficher les résultats des variables transmises par l'URL et aussi parce que ça fait plus propre je pense. L'option action te permet de donner le lien ou plus précisément le nom de la page qui traite le formulaire.

Ce qui t'intéresse est là :
<form name=formulaire method=post action=13112221.php>
  Saisissez une réponse :<br><br>
  <input type=text size=25 name=saisie><br><br>
  <input type=submit value='Valider'>
</form>

Bon en fait tu dois utiliser les formulaires HTML et faire le traitement avec PHP. Juste une note pour être plus proche des standards il me semble qu'il faut utiliser <br/> au lieu de <br> (saut de ligne). Et aussi tu nous a mis dans la confusion en parlant de mot de passe : ça n'a pas grand chose à voir enfin c'est pas grave. :)

Donc dans les options de la balise <form> tu peut utiliser post comme ici et action tu donne le nom de la page elle même.
Si tu as des réponses tu les traites comme suit :

Il suffit de récupérer la valeur saisie dans le champ de réponse.
De mémoire la ligne ressemblerait à ça si tu veut récupérer la réponse dans la variable $resultat et que tu as envoyé la réponse sous le nom $reponse.
$resultat=$POST["reponse"]

Si la réponse est bonne tu renvoi vers la page suivante
Si la réponse n'est pas bonne tu peut réafficher la page de formulaire avec un message personnalisé.
S'il n'y a pas eu de réponses alors tu affiches le formulaire normalement.

Voilà. :)
1
vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008
7 juin 2008 à 14:26
merci pour cette réponse complète, amis j'ai encore 2-3 doutes.

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, ta solution ne va pas : en effet on peut lire le nom de la page dans le code source!
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318 > vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008
7 juin 2008 à 14:30
C'est la première solution. ;)
Regarde l'adresse de la page en cours et celle dans action.
Par exemple l'énigme3 est ici :
http://enigmeschristophe.free.fr/13112221.php
Et dans le code source de cette page tu as ceci :
<form name=formulaire method=post action=13112221.php>

Donc il renvoi bien sur la même page. :)
0
vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008 > EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018
7 juin 2008 à 14:40
AH ok, je pensais que cela n'était techniquement pas possible, d'avoir formu et page de reception confondus, je croyais qu'il fallait toujours un départ et une arrivée à 2 endroits différents!

ET donc, si j'ai bien pigé, la solution à l'enigme que l'on va obligatoirement taper dans le code source ne se verra pas?
Je m'explique : lors du "si motdepasse=13112221 alors aller à 13112221.php, sinon rester la ou on est"

Il ne se verra pas ds le code?

merci encore
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318 > vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008
7 juin 2008 à 14:53
Non, tu peut renvoyer sur la page en cours. C'est même courant et je l'avais fait quand j'avais développé mon CMS (Content Management System) en PHP.
Ah ! Ça vient de me revenir ; faut que je t'explique un truc qui pourrait servir si tu ne le sais pas (je connais pas ton niveau donc je considère que tu ne sais pas).

Quand tu travail avec des formulaires c'est le nom dans l'option name (parfois id mais c'est l'ancienne norme je crois) qui est utilisé comme variable (je m'exprime peut-être un peu mal désolé mais tu va comprendre):
<form name=formulaire method=post action=13112221.php>
  Saisissez une réponse :<br><br>
  <input type=text size=25 name=saisie><br><br>
  <input type=submit value='Valider'>
</form>

Ici tu as un champs input limité à 25 caractères et qui s'appel saisie.
donc pour récupérer sa valeur ta ligne ressemblera à
$resultat=$POST["saisie"];

La solution est traitée par PHP donc tu ne la vois effectivement pas dans le code source. :)
0
vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008 > EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018
7 juin 2008 à 15:19
OK, merci, pour le nom "name", j'ai appris ca récemment, lorsque je me suis mis à faire des formulaires simples.

Donc pour ça c'est ok ;)

Sinon j'essaie tout de suite votre méthode, et je vous retiens au courant très vite!

@+
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
7 juin 2008 à 13:01
Erreur 404 chez moi.
0
vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008
7 juin 2008 à 13:13
http://enigmeschristophe.free.fr/

voila qui est mieux!
0
vlar Messages postés 2289 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 novembre 2013 621
7 juin 2008 à 13:02
interessé par le sujet même si on voit pas la page!!!
Par contre tu peux faire enregistrer sous la page et ouvrir avec bloc note la tu as lphp de toute la page
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
7 juin 2008 à 13:08
Impossible !
Le PHP est traité côté serveur donc le PHP va générer du code source HTML et c'est le HTML et rien que le HTML(enfin bon si y'a du CSS et des scripts genre JavaScript qui eux sont interprétés côté client là tu le verra mais surtout pas le PHP) que tu verras.
J'imagine que tu t'es mal exprimé ! :)
0
vlar Messages postés 2289 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 novembre 2013 621
7 juin 2008 à 13:13
EminoMeneko merci de m'accorder le bénéfice du doute sur mon post vis à vis de mon expression mais malheureusement tu as bien compris ce que je voulais dire. Ainsi, merci de m'avoir réorienté!!
J'ajoute que je suis d'accord avec ta logique que l'on visualise uniquement le html javascript et css
Tout groupe humain prend sa richesse dans la communication, l'entraide et la solidarité visant à un but commun : l'épanouissement de chacun dans le respect des différences
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
7 juin 2008 à 13:19
Lol y'a pas de quoi. :)
Moi au début je pensait que le topic c'était "comment travailler avec les mots de passe en PHP ?" et les stocker dans la vase de données de manière sécurisé.
J'aurais simplement rappelé le principe de base :
A la saisie du mot de passe pour l'enregistrer il faut utiliser la fonction password ou autre fonction de codage et stocker le résultat dans la BDD et ensuite pour vérifier le login le coder de la même manière et comparer.

Enfin bon c'est pas le sujet si je comprend bien...
Attendons que la page se réaffiche ou qu'on est un autre lien...
0

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

Posez votre question
vlar Messages postés 2289 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 novembre 2013 621
7 juin 2008 à 13:17
Peut tu donner la réponse pour la première enigme lol
0
vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008
7 juin 2008 à 13:18
la réponse est enigme2 ;)
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
7 juin 2008 à 13:20
Tu réussis à voir la page ?
J'ai toujours erreur 404...
0
vlar Messages postés 2289 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 novembre 2013 621
7 juin 2008 à 13:24
Oui je réussis avec le nouveau lien qu'il a envoyé je bloque à l'enigme 2 qu'il faudrait que je sache pour comprendre le système!!
0
vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008
7 juin 2008 à 13:28
L'enigme 2 c'est 13112221
0
vlar Messages postés 2289 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 novembre 2013 621
7 juin 2008 à 14:02
Je pense que tu mérite un pouce positif!!!! Si tu connais pas vivi met ra fenetre sur le dernier post et regarde a gauche tu peux cliquer sur un poing fermé!!
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
7 juin 2008 à 14:09
Lol merci. Vive la soupe à la tomate ! (J'ai faim xD).

A votre service ! =)
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
12 juin 2008 à 13:42
Bon je sais pas si je vais trouver du temps donc je vais te rediriger sur certaines pages et si tu as des questions j'y répondrais. :)

http://www.phpdebutant.org/article153.php

http://www.ac-creteil.fr/util/programmation/scripts/php-formulaire.php

http://www.php-astux.info/formulaires-html.php Consulte bien la 2ème partie qui t'intéresse plus.

https://apprendre-php.com/tutoriels/tutoriel-12-traitement-des-formulaires-avec-get-et-post.html

https://openclassrooms.com/fr/courses

http://tecfa.unige.ch/guides/tie/html/php-html/php-html-2.html#pgfId-1000043839

http://www.cdprof.com/formation/formation_php2.php

http://www.excelabo.net/php/formulaire1.php

http://phpsec.org/projects/guide/fr/2.html

https://www.webmaster-hub.com/publications/securite-et-formulaire-php/

Voilà je pense que ça sera pas mal pour le moment.
N'hésite donc pas pour les questions. ;)
0
vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008
19 juin 2008 à 15:34
Ca avance, tout doucement, mais je n'ai pas encore la solution.

Voici mon code source, avec les dernieres modif.


<?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("Location: http://www.faux.com");
}
else
{
header("Location: http://www.juste.com");
}
?>
<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"> <input name="envoyer"
value="Valider la réponse" type="submit"></form>
</body>
</html>


Le problème est qu'il ne se passe strictement rien lorsque je valide sur ma page, que le mot de passe soit bon ou non.

Merci
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318 > vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008
19 juin 2008 à 17:30
Je te répondrais plus tard je suis pas mal occupé jusque lundi à moins que je trouve un peu le temps de trifouiller dans les recoins de mon serveur Apache...
0
vivikowski Messages postés 13 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 26 juillet 2008 > EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018
19 juin 2008 à 18:37
Ok no problemo, bon courage
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
19 juin 2008 à 20:41
Ça vient !!!
0
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
19 juin 2008 à 22:33
Bon j'ai fini depuis un moment mais je voulais faire une petite démo...

https://www.youtube.com/watch?v=Gl9lfATW4TA&gl=FR <- On voit rien YouTube détruit beaucoup la qualité des vidéo... xD

http://eminomeneko.neuf.fr/divers/CCM_Vivikowski.7z <- J'ai uploadé la version pas (trop) compressée ici. :)

Donc tu pourras voir par toi même que ça marche.
Dans la vidéo je montre que je clique pleins de fois alors que le champs est vide : c'est pour montrer que si on a pas saisi de valeur on a bien le formulaire qui est affiché. :)
Bon maintenant c'est à toi de jouer et d'adapter le truc. :)

Voici le code...

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

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

<body>
  <?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="CCM_vivikowski.php" name="formu" id="formu">
    <input name="texte"> <input name="envoyer" value=
    "Valider la r&eacute;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://www.tonsite.net/");
  }
  // 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");
  ?>
</body>
</html>
0
Wow! quel travail vous avez fait la!
même mettre sur youtube!

Sinon j'ai tout bien pigé, mais il y a malheureusement encore un hic.
La redirection ne fonctionne pas, et j'ai le message d'erreur suivant dans ma page "c'est juste!" :

Warning: Cannot modify header information - headers already sent by (output started at /mnt/167/sdb/9/d/simmm/depart.php:9) in /mnt/167/sdb/9/d/simmm/depart.php on line 31

qu'est ce que ça signifie?

Merci encore pour toute cette aide ! ;)
0