Comment envoyer depuis un boutton une page php -> page html?

Résolu/Fermé
polleniium - 23 sept. 2022 à 20:37
jordane45 Messages postés 37851 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2023 - 24 sept. 2022 à 18:06

Bonsoir,

J'ai un petit probléme  dans ma page php de  connection car j'aimerais envoyer un utilisateur  depuis le boutton de connection (si il est connecté à la BDD) a une page de profil qui sera la sienne:

Entre autre: Page connéction php>boutton de connéction>voir si il est connécté >si connécté envoyer vers sa page profil 

Mais lors de l'application de mon code j'ai une error 404

Not Found

The requested URL was not found on this server.


Apache/2.4.51 (Win64) PHP/7.4.26 Server at localhost Port 80

voilà mon code 

<?php include "Connexion1.php"; ?> 

<?php?>
<form method="post" type ="lemail" type ="lpassword" action="Monblocnote.html">

      <?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.html"); 
      $users = $mysqli -> real_escape_string($_POST(['lemail'])); 
    
      ?>
A voir également:

2 réponses

jordane45 Messages postés 37851 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2023 4 609
23 sept. 2022 à 23:18

Bonjour

Pour commencer, il serait bien de nous indiquer qu'elle est l'URL qui apparaît dans ton navigateur Internet lorsque tu obtiens ce message.

Ensuite, il faudrait nous poster ton code complet car là il semble qu'il manque pas mal de choses..

Pense aussi à modifier tous tes fichiers censé être protégé par cette authentification en PHP sinon n'importe qui ayant l'URL pourra se connecter à sa page profil et à celle des autres....

D'ailleurs, pour protéger tes pages, il serait bien que tu te penches sur le fonctionnement des variables de session.

Et au cas où, ne confonds pas la connexion à la base de données et l'authentification de ton utilisateur... La connexion à la base, sert uniquement au programme PHP pour pouvoir effectuer des requêtes SQL dans cette base.

L'authentification de ton utilisateur, passera par une requête SQL qui ira vérifier que son login existe puis en PHP vérifiera que le mot de passe crypté correspond à celui que tu as transpi dans le formulaire.


.
Cordialement,
Jordane

0

Bonjour;

Alors l'url qu'il est sencé affiché "http://localhost/Pagewebphphtml/Connexion-inscription/Monblocnote.html"mais m'affiche ce si: 

http://localhost/Pagewebphphtml/Connexion-inscription/Connection1.php

voilà mon code complet de ma page connexion 

Le html:

​
<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>
        </center>

        </header>
        </body>
        </html>

​

Le php connection 1 :

<?php include "Connexion1.html"; ?>

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

?>     

le php connexion 2 :

<?php include "Connexion1.php"; ?> 

<?php?>
<form method="post" type ="lemail" type ="lpassword" action="Monblocnote.html">

      <?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.html"); 
      $users = $mysqli -> real_escape_string($_POST(['lemail'])); 
    
      ?>

J'espere qu'il y aura tous ce que vous aurez besoin mais ne vous inquietez pas je protegerais mes fichiers pour qu'aucun ne puisse y accedder sans connection.

Merci à l'avance de votre aide!

0
jordane45 Messages postés 37851 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2023 4 609 > polleniium
24 sept. 2022 à 14:20

Ton formulaire redirige bien vers la page qui t'est affichée...

Ton fichier connexion 2 n'est jamais appelé ou utiliser dans le code que tu nous montres...

D'ailleurs, son code devrait se trouver à l'intérieur du fichier connexion 1 vers la ligne 36.

0
polleniium > jordane45 Messages postés 37851 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2023
24 sept. 2022 à 14:40

De cette façon ?

<?php include "Connexion1.html"; ?>

<center>
         <?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>
         <?php?>
<form method="post" type ="lemail" type ="lpassword" action="Monblocnote.html"
   </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']))
   {
              //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.html"); 
          $users = $mysqli -> real_escape_string($_POST(['lemail'])); 
        
          
   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";
   }
 }

 ?> 

Mais j'ai tjrs le meme probleme 

Mais sinon pendant ce temps là j'ai trouvé de la protection de l'url pouvez me dire si il est juste.

<?php include "Connexion1.php"; ?> 
<?php
#Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
     
    RewriteRule \.html intermediaire.html [L]
          //lancement de la session
          session_start(); 
          define('FORBIDDEN', 403);
    define('NOT_FOUND', 404);
     
    function http_die($code, $message = '') {
        /* Cf http://www.w3.org/Protocols/rfc2616/rfc2616.html */
        $messages = array(
            FORBIDDEN => 'HTTP/1.0 403 Forbidden',
            NOT_FOUND => 'HTTP/1.0 404 Not Found',
        );
     
        header($messages[$code], TRUE, $code);
        if ($message) {
            echo $message;
        }
        exit;
    }
     
    if (!isset($_SESSION['id'])) {
        http_die(FORBIDDEN);
    } else {
        $requested = $_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
        if (is_file($requested)) {
            header('Content-type: Monblocnote.html');
            readfile($requested);
        } else {
            http_die(NOT_FOUND);
        }
    }
    ?>
0
jordane45 Messages postés 37851 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2023 4 609
24 sept. 2022 à 18:06

Ton formulaire fais appel ( et redirige ) vers le fichier de connexion

action="Connection1.php"

Il ne faut donc pas l'inclure dans ta page

<?php include "Connexion1.php"; ?> 

En plus tu sembles avoir un fichier de connexion à la bdd en PDO ... et tu greffes un peu au hasard.. des lignes de codes en mysqli ...  

Bref, ton code devrait ressembler à ça 

<?php
//-----------------------------------------//
//Démarrage des variables de session
//-----------------------------------------//
session_start();

//-----------------------------------------//
//Affichage des éventuelles erreurs PHP :
//( à lire : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code )
//-----------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);  

//-----------------------------------------//
//connexion à la bdd
// visiblement, tu as un fichier contenant la connexion en PDO
// Merci d'appliquer ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
//-----------------------------------------//
require_once "database.php";

//-----------------------------------------//
// Traitement du formulaire (submit)
//-----------------------------------------//

if(isset($_POST['formlogin'])) {
  extract($_POST);
  if(!empty($lemail) && !empty($lpassword)) {
   
    try{
      $q= $db->prepare("SELECT * FROM users WHERE email = :email");
      $q->execute(['email' => $lemail]);
      $result = $q->fetch();
      //on rempli la variable de session avec les infos de l'utilisateur ( son ID par exemple )
      $_SESSION['USER']['ID'] = $result['id'];
    }catch(Exception $e){
      echo "Erreur : " . $e->getMessage();
    }
    //Si la requête a retournée quelquechose
    if(!empty($result)) {
     //compte existant
     $hashpassword = $result['password'];
     if(password_verify($lpassword, $result['password'])){      
        //redirection automatique vers une autre page après vérification des conditions en amont
        header("Location:Monblocnote.html"); // si tu laisses ce fichier en .html, tu ne pourras pas utiliser le php pour vérifier que la variable de session est remplie et qu'il a le droit de voir cette page...
        exit;
     }  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";
  }
}

?>
<!Doctype html>
<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">
    <style>

      h1{             
      font-family: 'Century Gothic';            
      }
                  
      p{            
       font-family:'Century Gothic' ;
      }
                
    </style>

  </head>

  <body>
  <header>
    <center>
      <h1>Connection</h1>
    </center>
  </header>
  <div>  
    <center>
       <!-- action ="" ==> Le formulaire redirige sur la même page -->
       <form method="post"   type ="lemail" type ="lpassword" action="">
         <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>
  </div>
  </body>
</html>

Je te laisse lire les commentaires que j'y ai glissé ... (et les appliquer ! )

Pour ce qui est de ton autre question, merci d'ouvrir une nouvelle discussion propre à son traitement.

Je peux tout de même déjà te dire .. que tu sembles essayer de mettre des instruction apache (qui devraient se trouver dans un fichier .htaccess et/ou dans la config apache de ton serveur ... avec du code php ..  et .. non... faut vraiment arrêter de copier/coller des trucs au pifs n'importe où dans les fichiers de ton site sinon tu n'y arrivera pas.

Je te rappelle encore une fois au passage, que si tu laisse l'extension .html à tes fichiers, ceux-ci ne pourront pas exécuter de code php ( et donc vérifier que l'utilisateur est connecté ..) . ( à moins d'avoir fait un paramétrage pariculier dans la config apache de ton serveur... mais je déconseille ! )

Voila. Bonne continuation.


.
Cordialement,
Jordane

0