Page authentification
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
- @Mysqli_connect
- Supprimer page word - Guide
- Double authentification google - Guide
- Imprimer tableau excel sur une page - Guide
- Page d'accueil - Guide
- Page privée - Guide
10 réponses
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 )
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
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
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(); }
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBase 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;
}
}
?>
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>
Je vous remercie de votre aide, c'est pas bien de vieillir et de ne plus avoir de mémoire ni de ce concentré.
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
Je vois pas comment faire pour la methode
pour le hash je verrais plus tard quand j'aurais reussis a faire la connection.