Page authentification

domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -

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

A voir également:

10 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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 )


0
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 

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


0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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.

0
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 

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


0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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();
}
0
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 

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


0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 

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

0
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 

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>

0
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 

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


0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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

0
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 

Je vois pas comment faire pour la methode

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


0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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

0
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour,

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


0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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.

0
domstras Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 

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.


0