Comment depuis button 1e page php deja utilise -> a 1e autre

Résolu/Fermé
polleniium - 18 sept. 2022 à 11:13
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

Bonjour je sais que je débute en php  et j'essaie de dévelloper un site web de bloc note en ligne   mais j'aimerais savoir si je peux depuis le boutton connecter de ma page de connexion(si il est connecter)  l' envoyer a une autre page propre a lui  pour qu'il  puisse ecrire dans son bloc note a lui .

voilà mon code de connexion :

<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";
   }
 }

?>     
        </header>

      </body>

</html>

et mon code pour le bloc note 

<html>
    <head>
        <meta charset= "utf-8">  
        <title>Mon bloc note</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>Mon bloc note</h1></center>
    
    <Div Align=left></Div><a href="index2.php"><p>Revenir</p></a> 
    <br>
 
    <center>
        
            <p>
                <textarea name="ameliorer" id="ameliorer" rows="60" cols="150">
            

                </textarea>       
            </p>
         </form>
</center>

   
</header> 

</body> 

Je vous remercie d'avance pour toute vos reponsses :)

A voir également:

2 réponses

arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 9
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

0

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...

0
arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 9
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?

0

Oui j'ai trés bien compris merci bcp!

Bonne journée a vous!

0

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 

0
arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 9 > polleniium
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.
 

0
polleniium > arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023
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>
0
arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 9 > polleniium
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!

0