Page authentification

Bonjour,

Je voudrais faire un site avec une partie administration accès par user et mot de passe. J'avais un site qui fonctionné dans les année 2000 hélas je n'arrive plus a le faire marché. Les fonction mysql sont trop ancienne . Quelqu'un pourrais m'aider ? Je précise que j’étais développeur web mais suite a accident cérébral j'ai perdu tous ce que j'ai appris.

Merci de votre aide

PS je peux vous envoyer mon ancien code


Windows / Firefox 108.0

10 réponses

  1. Bonjour désolé du retard pour vous répondre, pour le moment je mets tous de coté je dois être réopéré et j'arrive plus a me concentré Merci de vos aide je reviendrais vers vous prochainement.


    1. Bonjour,

      Pour le moment tous ce que j'essais ne marche pas je continu de chercher Merci


      1. Modérateur

        Si tu ne nous montres pas ce que tu as essayé ( sans oublié de nous donner les messages d'erreur ) ... impossible pour nous de te venir en aide.

    2. Je vois pas comment faire pour la methode

      pour le hash je verrais plus tard quand j'aurais reussis a faire la connection.


      1. Modérateur

        Ben il te faut créer une fonction du nom de celle qui est recherchée, et y exécuter une requête SQL qui ira vérifier en base si ton utilisateur existe

    3. Je vous remercie de votre aide, c'est pas bien de vieillir et de ne plus avoir de mémoire ni de ce concentré.


      1. Modérateur

        Pas de quoi.

        Par contre.. en effet .. dans ta class 

        BaseDeDonnee

        aucune trace de la méthode 

        seConnecter();

        Je suppose que c'est normalement une fonction qui sert à l'utilisateur pour se loguer.

        Tu as du oublier de la remettre dans ta class.

        A noter qu'il ne faut pas stocker le mot de passe en clair dans la BDD..... il faut le hasher ( le crypter )

        Pour ça, je t'invite à regarder du côté des fonctions password_hash et password_verify

    4. Login

      <?php
      
      // pensez a ouvrir une connexion vers mysql ici
      require_once ('../BaseDeDonnee.php');
      
      
      $DB = new BaseDeDonnee();
      
      if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
        extract($_POST);
        // on recupère le password de la table qui correspond au login du visiteur
        $DB->nomUser=$login;
        $DB->motDePasse=$pass;
        $DB->seConnecter();
        $sql = "select pwd from tbl_user where login='".$login."'";
        // $req = mysqli_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
        //  $req = $DB->query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
        $req = $DB->database->mysqli_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error());
      
        // $data = mysql_fetch_assoc($req);
        $data = $req->fetch_assoc();
      
        if($data['pwd'] != $pass) {
          echo '<p>Mauvais login / password. Merci de recommencer</p>';
          include('login.htm'); // On inclus le formulaire d'identification
          exit;
        }
        else 
        {
          session_start();
          $_SESSION['login'] = $login;
          
          echo '<p>Identification réussis !</p>';
      	
        }    
      }
      else {
        echo '<p>Vous avez oublié de remplir un champ.</p>';
         include('login.htm'); // On inclut le formulaire d'identification
         exit;
      }
      
      
      ?>
      
      <html>
      <!-- Date de création: 19/10/2005 -->
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
        <title>Login</title>
      <link rel="stylesheet" type="text/css" href="../Styles/styles_asti.css">
      
      </head>
      <body <p class= "fond"></p>
      <br>
      
      <p class= "entete" align="center" >Page d'identification !</p><br><br>
       <table border="1" cellpadding="0" cellspacing="0" bordercolor="#111111" style="border-style:double; border-width:3; border-collapse: collapse; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" id="AutoNumber1" bordercolorlight="#0000FF" bordercolordark="#FF00FF">
      		<tr>
      		<td  align="center" valign="middle"  style="border-width:3; border-style:double; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" bordercolor="#0000FF">
              <font size="4">Page d'accueil</font></td>
      		<td  align="center" valign="middle"  style="border-width:3; border-style:double; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" bordercolor="#0000FF">
              <a href="../Pages_Fr/Accueil.html">
              <img border="0" src="../images/drapeaux_Fr.gif" width="34" height="34"></a></td>
      		<td  align="center" valign="middle"  style="border-width:3; border-style:double; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" bordercolor="#0000FF">
              <a href="../Pages_De/Accueil.html">
              <img border="0" src="../images/drapeaux_De.gif" width="34" height="34"></a></td>
      	</tr>
      		<tr>
      		<td  align="center" valign="middle"  style="border-width:3; border-style:double; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" bordercolor="#0000FF">
              <font size="4" color="#000000">Ajouter une soirée</font></td>
      		<td  align="center" valign="middle"  style="border-width:3; border-style:double; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" bordercolor="#0000FF">
              <a href="Ajouter_Soiree.php">
              <img border="0" src="../images/drapeaux_Fr.gif" width="34" height="34"></a></td>
      		<td  align="center" valign="middle"  style="border-width:3; border-style:double; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" bordercolor="#0000FF">
              <a href="Ajouter_Soiree_de.php">
              <img border="0" src="../images/drapeaux_De.gif" width="34" height="34"></a></td>
      	</tr>
      		<tr>
      		<td  align="center" valign="middle"  style="border-width:3; border-style:double; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" bordercolor="#0000FF">
              <font size="4" color="#000000">Afficher les soirées</font></td>
      		<td  align="center" valign="middle"  style="border-width:3; border-style:double; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" bordercolor="#0000FF">
              <a href="Afficher_Soiree.php">
              <img border="0" src="../images/drapeaux_Fr.gif" width="34" height="34"></a></td>
      		<td  align="center" valign="middle"  style="border-width:3; border-style:double; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1" bordercolor="#0000FF">
              <a href="Afficher_Soiree_de.php">
              <img border="0" src="../images/drapeaux_De.gif" width="34" height="34"></a></td>
      	</tr>
      
      
      </table>
      
      
      </body>
      </html>
      

      1. Base de donné:

        <?php
        
        //class Mysql 
        class BaseDeDonnee
        {
        	private $oLinkSql;// la connexion mysql en cours
        	private $oResult;// le resultat de la requete executee
        
        	private $aConnect;// la configuration de la base de donnees
        	 
        	// ---------------------------------- __construct() ----------------------------------------------------------
        	public function __construct()
        	{
        		// initialisation des proprietes de la classe
        		$this->aConnect 	= array();
        		
         		// local
        		$this->aConnect['ip'] 				= "localhost";
        		$this->aConnect['login'] 			= "root"; // le login
        		$this->aConnect['password'] 		= "t"; // mot de passe
        		$this->aConnect['database'] 		= "asticlub";	 		
        		
        		// local
        		//$ip 			= "localhost";
        		//$login		= "root"; // le login
        		//$password		= "t"; // mot de passe
        		//$database		= "asticlub";
        
        		
        		
        		if (mysqli_connect_errno()) 
        		{
          			echo "Erreur de connection a MySQL: " . mysqli_connect_error();
          			exit();
        		
        		}
        		
        	 }
        	
        	
        	
        	// -----------------------------------------------------------------------------------------------------------
        	// ------------------------------------------- PUBLIC FUNCTIONS  ---------------------------------------------
        	// -----------------------------------------------------------------------------------------------------------
        	
        
        
        	/**
        	 * Permet de recuperer les parametres de connexion de la base.
        	 * Utile pour d'autre scripts php.
        	 *
        	 * @return : un tableau avec les parametres de connexion de la base
        	 */
        	public function getConfig()
        	{
        		return $this->aConnect;
        	} 
        	
        	
        	/**
        	 * Execute une requete mysql
        	 *
        	 * @param requete
        	 * @return : un message d'erreur ou l'objet avec le resultat de la requete
        	 */
        	public  function query($sSqlQuery)
        	{ 
        		if ( $this->oResult = mysqli_query($this->oLinkSql,$sSqlQuery) ) return $this->oResult;
        		else return 'Query : '.$sSqlQuery.' - error : '.mysqli_error($this->oLinkSql);
        	}	
        	 
        	 
        	 
        	/*
        	 * Donne le resultat de la requete sous forme d'objet
        	 *
        	 * @param $oResultQuery : le resultat renvoye par une requete pour obtenir un objet
        	 */
        	public function getObject($oResultQuery = NULL)
        	{
        		// dans le resultat d'une autre requete
        		if($oResultQuery!=NULL)
        		{
        			return mysqli_fetch_object($oResultQuery);
        			//if ( @mysqli_error($this->oLinkSql) ) return @mysqli_error($this->oLinkSql);
        		}
        		
        		// donne le resultat de la derniere requete executee
        		if ($this->oResult != NULL)
        		{
        			return mysqli_fetch_object($this->oResult);
        			//if ( @mysqli_error($this->oLinkSql) ) return @mysqli_error($this->oLinkSql);
        		}
        		
        	}
        
        	
        	
        	// ---------------------------------- getNumRows() ----------------------------------------------------------
        	/**
        	* @brief donne le nombre d'elements modifies par la requete
        	* Pratique dans le cas des INSERT
        	* 
        	* @return (integer) le nombre d'elements modifies par la requete
        	*/
        	public function getNumRows()
        	{
        		if( $this->oLinkSql != NULL && $this->oLinkSql != false)
        		{
        			return mysqli_affected_rows($this->oLinkSql);
        			//if (@mysqli_error($this->oLinkSql)) return @mysqli_error($this->oLinkSql);
        		}
        	}
        	
        	
        	// ---------------------------------- lastInsertId() ----------------------------------------------------------
        	/**
        	* @brief Retourne l'identifiant automatiquement généré par la dernière requête.
        	* Pratique dans le cas d'un INSERT ou UPDATE pour recuperer le dernier identifiant
        	* 
        	* @return (integer) le dernier identifiant insere 
        	*/
        	public function lastInsertId()
        	{
        		return mysqli_insert_id($this->oLinkSql);
        	}
        	
        	
        	
        	// -----------------------------------------------------------------------------------------------------------
        	// ----------------------------------------- Others ----------------------------------------------------------
        	// -----------------------------------------------------------------------------------------------------------
        
        
         	/**
        	* @brief
        	*
        	* @return 
        	*/
        	public function __destruct() 
        	{
         		$this->oLinkSql = NULL ;		
        		$b_rep = mysqli_close($this->oLinkSql);
        		if( $b_rep != true )
        			return 'Erreur closing sql connexion!';
         	}
        	
        	
        	
        	// ---------------------------------------- __toString() ----------------------------------------------------	
        	/**
        	 * @brief Returns the string representation of this instance.
        	 * 
        	 * @usage   echo(myObject) ou print(myObject)
        	 * @return  the string representation of this instance.
        	 */	
        	public function __toString() 
        	{
        		$s_classContent = "[Object ".__CLASS__."]<br />";
        
        		foreach($this as $prop => $value) 
        		{
        		 	$s_classContent .= "$prop => $value <br />";
        		}
        		 
        		return $s_classContent;
           	}
        	 
        }
        ?>

        1. Voila le message maintenant, j'ai retirer tous les @

          ( ! ) Fatal error: Uncaught Error: Call to undefined method BaseDeDonnee::seConnecter() in C:\wamp64\www\Asticlub\Page_Admin\login.php on line 14( ! ) Error: Call to undefined method BaseDeDonnee::seConnecter() in C:\wamp64\www\Asticlub\Page_Admin\login.php on line 14Call Stack#TimeMemoryFunctionLocation10.0002364480{main}( )...\login.php:0
          ( ! ) Fatal error: Uncaught TypeError: mysqli_close(): Argument #1 ($mysql) must be of type mysqli, null given in C:\wamp64\www\Asticlub\BaseDeDonnee.php on line 154( ! ) TypeError: mysqli_close(): Argument #1 ($mysql) must be of type mysqli, null given in C:\wamp64\www\Asticlub\BaseDeDonnee.php on line 154Call Stack#TimeMemoryFunctionLocation10.0013366576BaseDeDonnee->__destruct( )...\BaseDeDonnee.php:020.0013366576mysqli_close( $mysql = NULL )...\BaseDeDonnee.php:154


          1. Modérateur

            Il va falloir nous montrer le code complet de ta class BaseDeDonnee et accessoirement celui de ta page login

        2. J'ai modifié par un echo'Erreur de connection<br>';

          et s'est ce qu'il m'affiche donc je pense que ma connection n'ai pas bonne


          1. Modérateur

            nous sommes d'accord.

            Et si tu regardes le code de connexion à ta bdd .. tu vois qu'il utilise une variable $a_connect  .... et non pas les informations de connexion que tu as écris toi même ...

            A mon avis, le code serait à modifier comme ceci :

            		// initialisation des proprietes de la classe
            		$this->aConnect 	= array();
            		
             		// local
            		$this->aConnect['ip'] 			= "localhost";
            		$this->aConnect['login'] 			= "root"; // le login
            		$this->aConnect['password'] 		= "t"; // mot de passe
            		$this->aConnect['database'] 		= "asticlub";
            
            

            Tu devrais également retirer le arobase devant l'appel de la fonction myslqiconnect ... ça masque les éventuelles erreurs ( je te déconseille donc d'en utiliser où que ce soit dans ton code.. )

            A la place,  regarde l'éventuelle erreur via la fonction mysqli_error

            if (mysqli_connect_errno()) {
              echo "Failed to connect to MySQL: " . mysqli_connect_error();
              exit();
            }
        3. Bonjour,

          Merci pour ton aide.

          <?php
          
          //class Mysql 
          class BaseDeDonnee
          {
          	private $oLinkSql;// la connexion mysql en cours
          	private $oResult;// le resultat de la requete executee
          
          	private $aConnect;// la configuration de la base de donnees
          	 
          	// ---------------------------------- __construct() ----------------------------------------------------------
          	public function __construct()
          	{
          		// initialisation des proprietes de la classe
          		$this->aConnect 	= array();
          		
           		// local
          		$ip 			= "localhost";
          		$login			= "root"; // le login
          		$password		= "t"; // mot de passe
          		$database		= "asticlub";
          		
          		// adresse id  $_SERVER["REMOTE_ADDR"]; 
          		
          		if ( $this->oLinkSql = @mysqli_connect( $this->aConnect['ip'], $this->aConnect['login'], $this->aConnect['password'], $this->aConnect['database'], $this->aConnect['port'] ) )
          		{
          			$is_erreur = false ;
          			$sql = 'SET CHARACTER SET \'utf8\''; 
          			$this->query($sql); 
          			$sql = 'SET collation_connection = \'utf8_general_ci\''; 
          			$this->query($sql);	
          			
          		}
          		else // erreur de connexion a la base -> redirection sur une page d'erreur
          		{																																									    
          			echo "<meta http-equiv=\"refresh\" content=\"0; URL=erreurs/erreurBDD.htm\">";// possibilitee d'utiliser un  header('Location: erreurs/erreurBDD.htm');
          			exit;
          		}
          		
          	 }

          Not Found

          The requested URL was not found on this server.


          Apache/2.4.54 (Win64) PHP/8.0.26 mod_fcgid/2.3.10-dev Server at localhost Port 80

          voila ce que sa m'affiche

          Merci


          1. Modérateur

            Bonjour,

            Le message d'erreur n'indique pas une erreur de code .. mais le fait qu'il ne trouve pas l'url de la page que tu lui demande.

            Sûrement le fichier  erreurs/erreurBDD.htm   que tu appels dans ta redirection.

        4. Modérateur

          Bonjour,

          Nous pouvons t'aider corriger ton code sur des points spécifiques ... mais nous ne le ferons pas à ta place.

          Si tu désires de l'aide, pense à poster le code concerné et à nous indiquer les éventuels messages d'erreur.

          ( De préférence... un souci à la fois ... et ...une discussion par souci )