Page authentification
Fermé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
- Apache/2.4.54 (win64) php/8.0.26 mod_fcgid/2.3.10-dev server at localhost port 80
- Supprimer une page word - Guide
- Double authentification google - Guide
- Word numéro de page 1/2 - Guide
- Comment traduire une page - Guide
- Mettre google en page d'accueil - Guide
10 réponses
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 )
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
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.
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
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(); }
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
3 janv. 2023 à 16:40
Il va falloir nous montrer le code complet de ta class BaseDeDonnee et accessoirement celui de ta page login
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question3 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;
}
}
?>
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>
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é.
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
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.
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
4 janv. 2023 à 12:51
Bonjour,
Pour le moment tous ce que j'essais ne marche pas je continu de chercher Merci
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.
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.