Page authentification

Fermé
domstras Messages postés 11 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023 - 3 janv. 2023 à 10:41
domstras Messages postés 11 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023 - 10 janv. 2023 à 12:57

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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 janv. 2023 à 13:48

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 samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023
3 janv. 2023 à 14:57

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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 janv. 2023 à 15:09

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 samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023
3 janv. 2023 à 15:24

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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 janv. 2023 à 15:31

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 samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023
3 janv. 2023 à 15:58

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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 janv. 2023 à 16:40

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 samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023
3 janv. 2023 à 17:00

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 samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023
3 janv. 2023 à 17:01

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 samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023
3 janv. 2023 à 17:02

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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 janv. 2023 à 17:33

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 samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023
3 janv. 2023 à 20:02

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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 3 janv. 2023 à 20:35

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 samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023
4 janv. 2023 à 12:51

Bonjour,

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


0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
4 janv. 2023 à 13:50

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 samedi 1 juin 2002 Statut Membre Dernière intervention 10 janvier 2023
10 janv. 2023 à 12:57

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