Exercice php / html sur les formulaires (niveau première) Bonjour, j'ai un exercice sur les formulaires en php / html, voici le code en pièce jointe et les questions ci-dessous qui vont avec. Merci beaucoup pour votre aide !
questions : (je précise que même si vous ne répondez qu'à une seule question ou me dîtes comment y répondre ça peut m'être utile tout de même :) )
1) A partir du fichier, quand est-ce que le formulaire HTML qui termine ce fichier sera affiché sur le navigateur du client ? 2) Pour ce même formulaire, quelle est la méthode HTTP employée ? Quelle autre méthode aurait pu être employée ? Quels champs de formulaire sont-ils obligatoires ? 3) Quels sont les identifiants attendus ? Que se passe-t-il si on fournit le bon login mais pas le bon mot de passe attendu ? Est-ce une bonne pratique de sécurité ? 4) Que se passe-t-il si l’authentification réussit ? Consulter la documentation de la fonction header de PHP si besoin. 5) Quelle information est communiquée à la page suite.php, à quelle méthode HTTP fait-on ainsi appel ?
Merci beaucoup !
Lista de comentários
SmartMind
Réponse :1) Ce formulaire sera affiché quand le client se rendra sur la page de connexion. (Je ne suis pas sûr d'avoir compris la question, j'espère que j'y répond correctement !)2) La méthode utilisé est la méthode "POST".La méthode GET aurait pu être utilisé, mais elle n'est pas sécurisé car elle passe le nom des champs et leurs valeurs dans l'url, n'importe qui qui passe pourrait donc voir le mot de passe entrée. La méthode PUT aurait pu être utilisé, elle est "similaire" à la méthode POST (Je dis similaire avec des pincettes, car elles ont 2 rôles différent).3) Les identitifants attendu sont "root" en tant que login, et "42" en tant que mot de passe.Si l'on fournit le bon login mais pas le bon mot de passe, alors un message nous disant "Mauvais mot de passe !" nous sera affiché.Non, dans ce cas, c'est ne pas une bonne pratique de sécurité.4) Si l'authentification réussi, alors l'utilisateur est redirigé vers la page suite.php.5) Le login est communiqué à la page suite.php, par la méthode GET.Explications :1)2) Comme on peut le voir dans la balise "form", elle a un attribut du nom de method, qui a pour valeur "POST". On en déduit donc que ce formulaire utilise la méthode POST. Dans le code PHP au dessus du formulaire, on peut aussi voir que le code attend de recevoir des paramètres de type POST, car il fait appel à la variable super global $_POST. Voir plus: https://www.php.net/manual/fr/reserved.variables.post.phpPour ce qui est des méthodes, si tu veux plus d'info:https://developer.mozilla.org/fr/docs/Web/HTTP/Methods/PUThttps://developer.mozilla.org/fr/docs/Web/HTTP/Methods/GET3) /!\ À savoir, ça dépend déjà de si l'inscription est ouverte à tous et à toutes et/ou si les utilisateurs peuvent choisir leur login. Car si l'on autorise le choix du login à l'inscription, même si nous affichons un message "Mauvais login ou mot de passe", un pirate n'aura aucun mal à vérifier si le login existe en tentant une inscription avec ce dernier (Sachant que le login devrait-être unique par utilisateur). Puis, sera libre à lui d'exercer une attaque Bruteforce (par exemple) pour essayer d'avoir le mot de passe. Dans un cas ou l'inscription est fermé, alors c'est une mauvaise pratique de sécurité, car le pirate ne connait pas forcément le login, et ne peut pas le deviner. /!\4) Pour ce qui est de la documentation pour mieux comprendre: https://www.php.net/manual/fr/function.header5) Après avoir lu la documentation, tu as sans doute remarqué qu'écrire Location dans la fonction qui écrit l'en-tête servait à redirigé vers une autre page. Maintenant donc, il suffit de regarder la page sur laquelle on est redirigé, et les champs qui sont passé dans l'URL.
4 votes Thanks 7
CelestBoy
Hello, alors merci pour cette longue réponse ! Du coup juste pour la deuxième questions on me demande "Quels champs de formulaire sont-ils obligatoires ?" est-ce que tu aurais une réponse pour ça ? Mais en tout cas merci beaucoup d'avoir passé tout ce temps !
SmartMind
Oups! J'ai oublié d'y répondre ! Ce sont les champs login, et mot de passe qui sont obligatoires. Ils le sont car si tu regardes le code PHP, pour que l'action de connexion se déroule, il vérifie que ces deux champs ne sont pas vide. Ligne: if(!empty($_POST["login"]) && !empty($_POST["password"]))
CelestBoy
Hello, alors je suis vraiment désolé de revenir vers toi si tard mais j'ai un doute pour la toute dernière question. Tu dis que la méthode utilisée est GET mais je vois POST à la ligne -----header (‘Location: suite.php? login =’.$_POST [‘login’])-----
CelestBoy
Du coup est-ce que c'est bien la méthode GET qui est utilisée ou plutôt POST comme je le lis dans cette ligne ? Merci beaucoup!
SmartMind
Bonjour, excuse moi de répondre si tard, mais je n'étais pas actif sur le site ! C'est bien la méthode GET qui est utilisé, car le code ci-dessus fait une redirection et passe dans l'URL une donnée POST qui a été reçu, mais il n'utilise pas la méthode POST en elle-même. Quand on passe une donnée dans l'URL, c'est la méthode GET.
Krmm213
Hello tout le monde. Celestboy aurais tu le corriger s’il te plaît car je ne suis pas sûr sur la question 1. Je me demande si le code s’affiche en se connectant ou bien lorsque le mot de passe ou l’identifiant est fault .
Lista de comentários
Celestboy aurais tu le corriger s’il te plaît car je ne suis pas sûr sur la question 1. Je me demande si le code s’affiche en se connectant ou bien lorsque le mot de passe ou l’identifiant est fault .
Merci bcp.