Comment depuis button 1e page php deja utilise -> a 1e autre
Résolu/Ferméarscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 - 19 sept. 2022 à 21:16
- Comment depuis button 1e page php deja utilise -> a 1e autre
- Comment supprimer une page sur word - Guide
- Comment traduire une page - Guide
- Comment savoir si quelqu'un utilise mon adresse ip - Guide
- Comment utiliser chromecast - Guide
- Word numéro de page 1/2 - Guide
2 réponses
18 sept. 2022 à 11:37
Bonjour,
J'avoue être un peu perturbé par la notion de "bloc-notes en ligne" dans le cadre où tu nous présentes bien du code html et du php.
Si j'ai bien compris la question, tu souhaites pouvoir passer d'une page qui contient du code html à une autre page qui contient du html, tout ça en utilisant du php?
ex:
page connexion --> page espace utilisateur / page d'erreur
Si j'ai bien compris ta question, la réponse est oui, mais avant de développer, je veux bien que tu confirmes que j'ai bien compris histoire de ne pas me répandre en propos inutiles
18 sept. 2022 à 13:29
Donc ça correspond bien à ce que j'ai dit ^^
Dans ta page de connexion c'est le
<form method="post">
qu'il faut développer un peu plus pour qu'il te renvoie vers une autre page, dans laquelle tu traiteras tes données de connexion.
<form method="post" action="nom_de_ton_fichier_de_destination.php">
Par ailleurs tu peux rajouter des points pour avoir moins de contraintes à gérer ultérieurement :
- je te recommande de bien préciser les bons types → type="email" // type="password"
Ça permet d'identifier le format d'écriture #maaaagic
Ensuite, dans "nom_de_ton_fichier_de_destination.php":
Il faut l'initialiser par du :
<?php //lancement de la session session_start(); //ne lancer que si les champs entrés ne sont pas vides if ( !empty( $_POST(['lmail']) && $_POST(['lpassword']) ) { $mysqli=new mysqli('localhost', 'username', 'mot_de_passe', 'nom_de_la_BDD'); //vérification si pb de connexion à la BDD et afficher messages d'erreur if ($mysqli->errno) { echo "problème de connexion à la bdd"; echo $mysqli->connect_errno . "<br>"; echo $mysqli->connect_error . "<br>"; exit(); } //on a réussi à se connecter à la BDD //... //redirection automatique vers une autre page après vérification des conditions en amont header("Location:nom_de_la_page_de_redirection.php"); ?>
nb : attention à la sécurité ! Les injections SQL peuvent te mettre à mal
→ tu dois sécuriser la récupération de toutes les données que tu récupères par la méthode post (et autres méthodes d'ailleurs).
ex : utilisation des méthodes addslashes / real_escape_string etc...
Illustration:
$user = $mysqli -> real_escape_string($_POST(['lemail'])); ...
En espérant qu'on se soit bien compris?
Excusez moi mais apres avoir mis le code J'ai eu 3 erreurs
Notice: Undefined variable: mysqli in C:\wamp64\www\include\index1.php on line 117Call Stack#TimeMemoryFunctionLocation10.0020366704{main}( )...\index1.php:0
( ! ) Fatal error: Uncaught Error: Call to a member function real_escape_string() on null in C:\wamp64\www\include\index1.php on line 117
( ! ) Error: Call to a member function real_escape_string() on null in C:\wamp64\www\include\index1.php on line 117
Voilà mon code
<html> <head> <meta charset= "utf-8"> <title>Connection</title> <link rel="apple-touch-icon" sizes="57x57" href="img/apple-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="img/apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="img/apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="img/apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="img/apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="img/apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="img/apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="img/apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="img/apple-icon-180x180.png"> <link rel="icon" type="image/png" sizes="192x192" href="img/android-icon-192x192.png"> <link rel="icon" type="image/png" sizes="32x32" href="img/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="96x96" href="img/favicon-96x96.png"> <link rel="icon" type="image/png" sizes="16x16" href="img/favicon-16x16.png"> <link rel="manifest" href="img/manifest.json"> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="msapplication-TileImage" content="img/ms-icon-144x144.png"> <meta name="theme-color" content="#ffffff"> </head> <body> <header> <style> h1{ font-family: 'Century Gothic'; } p{ font-family:'Century Gothic' ; } </style> <center> <h1>Connection</h1> <?php?> <form method="post"> <p>Votre email :</p> <input type="lemail" name="lemail" id="lemail" required><br/> <br> <br> <p>Votre mots de passe :</p> <input type="lpassword" name="lpassword" id="lpassword" required><br/> <br> <br> <p>Se connecter </p><input type="submit" name="formlogin" id="formlogin" value="..."> </form> </center> <?php include "database.php"; global $db; if(isset($_POST['formlogin'])) { extract($_POST); if(!empty($lemail) && !empty($lpassword)) { $q= $db->prepare("SELECT * FROM users WHERE email = :email"); $q->execute(['email' => $lemail]); $result = $q->fetch(); if($result == true) { //compte existant $hashpassword = $result['password']; if(password_verify($lpassword, $result['password'])) { echo " et vous avez été connecté "; } else{ echo " Mais le mot de passe n'est pas correct"; } } else { echo " Mais L'adresse mail ne correspond pas à un compte existant"; } } else { echo "Tous les champs ne sont pas renseignés"; } } ?> <?php?><form method="post" type ="lemail" type ="lpassword" action="index3.php"> <?php //lancement de la session session_start(); //ne lancer que si les champs entrés ne sont pas vides if (!empty($_POST['lemail']) && !empty($_POST['lpassword']) ) { $users = $mysqli -> real_escape_string($_POST(['lemail'])); $mysqli=new mysqli('localhost', 'email', 'password', 'database.php'); //vérification si pb de connexion à la BDD et afficher messages d'erreur if ($mysqli->errno) { echo "problème de connexion à la bdd"; echo $mysqli->connect_errno . "<br>"; echo $mysqli->connect_errno . "<br>"; exit(); } //on a réussi à se connecter à la BDD //... //redirection automatique vers une autre page après vérification des conditions en amont header("Location:index3.php"); $users = $mysqli -> real_escape_string($_POST(['lemail'])); } ?> </header> </body> </html>
Merci d'avance de votre réponse
Modifié le 18 sept. 2022 à 18:39
Ton souci se trouve ligne 51 : tu n'as pas ajouté dans <form> l'option "action" comme stipulé dans mon post précédent.
C'est très important d'être méthodique dans ce que tu fais.
Et d'ajouter des annotations pour pouvoir te repérer : imagine que tu te penches de nouveau sur ce fichier dans 1 mois.
Par ailleurs j'ai bien parlé de plusieurs fichiers, or ici j'ai l'impression que tu as tout mis dans un seul et unique fichier_ ce qui pose forcément des soucis.
Ton premier fichier il devrait s'arrêter ligne 67
Ton deuxième fichier devrait commencer ligne 109
et tu devrais le compléter avec ce que tu as mis entre les lignes 68 et 108.
+ conseil : désactive la ligne 131 tant que tu n'as pas vérifié que toutes tes conditions fonctionnent.
19 sept. 2022 à 20:14
Bonsoir désoler encore une fois de te deranger,j'ai demandé a plein de perssone n'a su m'aider lorsque que j'appuie sur mon boutton "Se connecter" depuis ma page d'accueil elle me redirige vers ma page profil alors que le boutton "Se connecter" était sencé m'envoyer a ma page de connection puis lorsque mon utilisateur est connecté a BDD m'envoyer a cette page profil.
Je sais que je n'ai pas appliqué tous ce que vous m'aviez dis,mais le code ne rencontre aucune erreur.
Voilà le code
<html> <head> <meta charset= "utf-8"> <title>Connection</title> <link rel="apple-touch-icon" sizes="57x57" href="Pageconnexion-inscriptionphp/img/apple-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="Pageconnexion-inscriptionphp/img/apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="Pageconnexion-inscriptionphp/img/apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="Pageconnexion-inscriptionphp/img/apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="Pageconnexion-inscriptionphp/img/apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="Pageconnexion-inscriptionphp/img/apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="Pageconnexion-inscriptionphp/img/apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="Pageconnexion-inscriptionphp/img/apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="Pageconnexion-inscriptionphp/img/apple-icon-180x180.png"> <link rel="icon" type="image/png" sizes="192x192" href="Pageconnexion-inscriptionphp/img/android-icon-192x192.png"> <link rel="icon" type="image/png" sizes="32x32" href="Pageconnexion-inscriptionphp/img/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="96x96" href="Pageconnexion-inscriptionphp/img/favicon-96x96.png"> <link rel="icon" type="image/png" sizes="16x16" href="Pageconnexion-inscriptionphp/img/favicon-16x16.png"> <link rel="manifest" href="Pageconnexion-inscriptionphp/img/manifest.json"> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="msapplication-TileImage" content="Pageconnexion-inscriptionphp/img/ms-icon-144x144.png"> <meta name="theme-color" content="#ffffff"> </head> <body> <header> <style> h1{ font-family: 'Century Gothic'; } p{ font-family:'Century Gothic' ; } </style> <center> <h1>Connection</h1> <?php?> <form method="post" type ="lemail" type ="lpassword" action="Connection1.php"> <p>Votre email :</p> <input type="lemail" name="lemail" id="lemail" required><br/> <br> <br> <p>Votre mots de passe :</p> <input type="lpassword" name="lpassword" id="lpassword" required><br/> <br> <br> <p>Se connecter </p><input type="submit" name="formlogin" id="formlogin" value="..."> </form> </center> <?php include "include/database.php"; global $db; if(isset($_POST['formlogin'])) { extract($_POST); if(!empty($lemail) && !empty($lpassword)) { $q= $db->prepare("SELECT * FROM users WHERE email = :email"); $q->execute(['email' => $lemail]); $result = $q->fetch(); if($result == true) { //compte existant $hashpassword = $result['password']; if(password_verify($lpassword, $result['password'])) { echo " et vous avez été connecté "; } else{ echo " Mais le mot de passe n'est pas correct"; } } else { echo " Mais L'adresse mail ne correspond pas à un compte existant"; } } else { echo "Tous les champs ne sont pas renseignés"; } } ?> <?php?> <form method="post" type ="lemail" type ="lpassword" action="Connexion1.php"> <?php //lancement de la session session_start(); //ne lancer que si les champs entrés ne sont pas vides if (!empty($_POST['lemail']) && !empty($_POST['lpassword']) ) { $mysqli=new mysqli('localhost', 'email', 'password', 'database.php'); //vérification si pb de connexion à la BDD et afficher messages d'erreur if ($mysqli->error) { echo "problème de connexion à la bdd"; echo $mysqli->connect_error . "<br>"; echo $mysqli->connect_error . "<br>"; exit(); } } //on a réussi à se connecter à la BDD //... //redirection automatique vers une autre page après vérification des conditions en amont header ("Location:Monblocnote.php"); $users = $mysqli -> real_escape_string($_POST(['lemail'])); ?> </header> </body> </html>
19 sept. 2022 à 21:16
Bonsoir,
Si tu ne tiens pas compte des recommandations, tu vas cumuler les soucis (déjà que sans se précipiter on en rencontre facilement...). Tu te précipites et ça te met dedans.
Reste méthodique.
Le plus simple lorsque ça ne se passe pas comme prévu, c'est de placer des balises.
une balise c'est simple : c'est du texte par exemple. Juste un repère visuel pour contrôler ta progression dans le code.
En php ce serait des echo "ici ça marche"; et autres originalités --> si ça s'affiche, c'est que le code déroule au moins jusque là --> tu places une autre balise plus loin dans ton code à un point clé jusqu'à ce qu'elle ne s'affiche plus --> ça te permet d'identifier où se trouve le conflit, de comprendre la logique de ton code, par où tu passes etc.
Par ailleurs l'argument du "je n'ai pas de message d'erreur" pourrait revenir à dire "je fume depuis 20 ans et je n'ai pas de cancer, alors ça va". Les erreurs de logique n'affichent pas de message d'erreur notamment, et ce sont généralement les plus complexes à isoler.
Si tu avais désactivé les redirections et commencé par placer des balises, tu verrais par où tu passes (ça revient à bétonner la route avant d'y mettre le marquage au sol). Tu devrais progresser de la sorte. C'est lent (mais bien moins que de rester bloqué), mais c'est solide.
Dans ton code :
L98 → du code égaré je pense;
L115 → tu fermes les parenthèses d'un bloc qui est censé vérifier que l'identifiant et le mot de passe sont valides pour rediriger l'utilisateur si et seulement s'il répond à ces conditions. (au passage, respecte l'indentation).
Or comme tu as placé ta redirection après ce bloc, ça revient à dire que quoi qu'il advienne (sauf une erreur de connexion à la BDD du fait du 'exit()' ), tu vas rediriger l'utilisateur vers Monblocnote.php. Tu es censé rediriger si et seulement si tous les feux sont verts. Cette ligne doit donc se trouver dans le bloc conditionnel.
un peu de pseudo algorithmique pour t'aider à saisir comment tu devrais structurer ton code grosso-modo :
si (mail entré et mot de passe entrés) { connexion à la bdd; si (erreur de connexion) { //règle d'or : après toute manip', vérifier que ça a bien marché! afficher message d'erreur; } sinon { requête sql pour vérifier concordance mail & mdp; //attention à sécuriser la récupération des variables si (erreur de requête) { afficher message d'erreur + code de la requête histoire d'en savoir plus; } sinon { si (requête valide_ 1 concordance trouvée) { redirection vers la bonne page; } } } dans le code html : S'il y a une erreur de mail ou de mdp, les blocs de conditionnelles seront évités et on arrivera directement ici. Du coup afficher un message d'erreur ici. Cette forme permet de présenter les choses proprement.
Et petite mise en pratique de mon laïus sur les balises :
1) désactive le "header("Location..."
2) place un echo ligne187: echo "mail & mdp non vides";
3) L118 : place à cet endroit un echo "je redirige";
Tu pourras constater en testant ton code que quoi que tu entres, tu pourras lire le commentaire placé à l'étape 3, ce qui n'est pas censé être le cas. Parce que ceci est hors du bloc de conditionnelles.
Enfin, ta variable L120 n'a aucun sens ici, ce contrôle doit arriver en amont _ cf la pseudo algorithmique décrite.
J'espère que c'est plus clair pour toi.
N'hésites pas à créer un nouveau sujet sur le forum si tu bloques de nouveau.
Bon courage!
18 sept. 2022 à 12:55
Non enfaite j'aimerais passe de mon boutton de connexion (si l'utilisateur il est connecté) a une autre page ou il aura son profil
ex : page de connexion en php -> page de l'utilisateur en php où il y aura une zone texte propre a lui où il pourra l'enregistrer.
et l'idée du bloc note en ligne je sais qu'elle est pas folle mais jvoulais juste créer mon premier projet pour m'initier.
Je sais qu j'explique mal mais j'espère que c clair...