Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...
  • 0

[PHP]Connexion au site


StriixG4meRs

Question

Bonjour , je suis actuellement sur un site codé en php et j'ai un problème sur ma page de connexion.En effet, je ne peux pas me connecter au site avec un mot de passe crypté (le mot de passe dans account>account>password) associé à un id, mais si je me connecte avec un mot de passe non crypté associé à un id la connexion s'effectue.La question est comment faire pour que la page de connexion prenne en compte les mot de passe cryptés ?Voici ma page de connexion:

<?PHP	REQUIRE('./Includes/Includes.php'); ?><?phpif (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['password']) && !empty($_POST['password']))) {        $base = ($GLOBALS["___mysqli_ston"] = mysqli_connect("$Ip", "$User", "$Mdp"));                ((bool)mysqli_query($GLOBALS["___mysqli_ston"], "USE " . $DBaccount));               $sql = 'SELECT count(*) FROM account WHERE login="'.((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['login']) : ((trigger_error(E_USER_ERROR)) ? "" : "")).'" AND password="'.((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string ($GLOBALS["___mysqli_ston"], $_POST['password']) : ((trigger_error(E_USER_ERROR)) ? "" : "")).'"';         $req = mysqli_query($GLOBALS["___mysqli_ston"], $sql) or die('Erreur SQL !
'.$sql.'
'.((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));        $data = mysqli_fetch_array($req);        ((mysqli_free_result($req) || (is_object($req) && (get_class($req) == "mysqli_result"))) ? true : false);        ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);        if ($data[0] == 1) {            session_start();            $_SESSION['login'] = $_POST['login'];            header('Location: Membre.php');            exit();        }        elseif ($data[0] == 0) {            $erreur = '
Compte ou mot de passe incorrect.';        }        else {            $erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';        }    }    else {        $erreur = 'Au moins un des champs est vide.';    }}?>

La ligne concernée est celle ci :

$sql = 'SELECT count(*) FROM account WHERE login="'.((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['login']) : ((trigger_error(E_USER_ERROR)) ? "" : "")).'" AND password="'.((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string ($GLOBALS["___mysqli_ston"], $_POST['password']) : ((trigger_error(E_USER_ERROR)) ? "" : "")).'"'; 

Je vous remercie d'avance pour l'aide que vous allez m'apporter

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 7
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans cette question

Jours populaires

Meilleurs contributeurs dans cette question

7 réponses à cette question

Messages recommandés

  • 0

Je l'aurais plutôt faite comme ça moi...

Mais faudrait que tu te mettes à la PDO c'est beaucoup mieux et plus sûr !

?PHP
REQUIRE('./Includes/Includes.php');
?>
<?php
// Si nous avons quoi vérifier (Un login et un mot de passe)
if(isset($_POST['login']) && isset($_POST['password']))
{
// Connexion à la base de données
$base = new mysqli("$Ip", "$User", "$Mdp");

// Vérification de la connexion
if($base->connect_errno())
	exit("Impossible de joindre la base de données");

// Spécification de l'utilisation de la base ´account´
$base->query("USE " . $DBaccount);

// Préparation de la requête
$sql = 'SELECT count(*) as matches FROM `account` WHERE login=? AND `password` = PASSWORD(?)'; 

/* Requête préparée, étape 1 : la préparation */
if (!($stmt = $base->prepare($sql))) {
	 echo "Echec lors de la préparation : (" . $base->errno . ") " . $base->error;
}

/* Requête préparée, étape 2 : lie les valeurs et exécute la requête */
if (!$stmt->bind_param($_POST['login'], $_POST['password'])) {
	echo "Echec lors du liage des paramètres : (" . $stmt->errno . ") " . $stmt->error;
}

if (!$stmt->execute()) {
	echo "Echec lors de l'exécution de la requête : (" . $stmt->errno . ") " . $stmt->error;
}

// Le résultat attérit dans Matches
$matches = 0;
$stmt->bind_result($matches);



if ($matches > 0) {
	session_start();
	$_SESSION['login'] = $_POST['login'];
	header('Location: Membre.php');
	exit();
}
else $erreur = "Compte ou pass incorrect !";
}
?>

 

Le truc c'est que dans la requête tu dois préciser à mysql qu'il doit crypter le mot de passe avant de le comparer à l'aide de la fonction PASSWORD()

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Ioio j'ai remplacé par ton script et voici le résultat :

 

Fatal error: Call to undefined method mysqli::connect_errno() in C:\wamp\www\Connexion.php on line 8

 

 

La ligne concernée :    

if($base->connect_errno())

Le truc c'est que dans la requête tu dois préciser à mysql qu'il doit crypter le mot de passe avant de le comparer à l'aide de la fonction PASSWORD()

 

Oui mais comment dans ce cas là ?

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Non thay...Ben fais ça alors:

<?PHP    REQUIRE('./Includes/Includes.php'); ?><?phpif (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['password']) && !empty($_POST['password']))) {        $base = ($GLOBALS["___mysqli_ston"] = mysqli_connect("$Ip", "$User", "$Mdp"));                ((bool)mysqli_query($GLOBALS["___mysqli_ston"], "USE " . $DBaccount));               $sql = 'SELECT count(*) FROM account WHERE login="'.((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['login']) : ((trigger_error(E_USER_ERROR)) ? "" : "")).'" AND password=PASSWORD("'.((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string ($GLOBALS["___mysqli_ston"], $_POST['password']) : ((trigger_error(E_USER_ERROR)) ? "" : "")).'")';         $req = mysqli_query($GLOBALS["___mysqli_ston"], $sql) or die('Erreur SQL !
'.$sql.'
'.((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));        $data = mysqli_fetch_array($req);        ((mysqli_free_result($req) || (is_object($req) && (get_class($req) == "mysqli_result"))) ? true : false);        ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);        if ($data[0] == 1) {            session_start();            $_SESSION['login'] = $_POST['login'];            header('Location: Membre.php');            exit();        }        elseif ($data[0] == 0) {            $erreur = '
Compte ou mot de passe incorrect.';        }        else {            $erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';        }    }    else {        $erreur = 'Au moins un des champs est vide.';    }}?>

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 37
    2. 21

      Metin2 en 2020 peut-on en parler?

    3. 0

      METIN2Project

    4. 3

      Ressources - UnPack - Metin2 Client - Officiel

    5. 0

      Barre des tâches d'argent étendue

    6. 16

      Redémarrage automatique des channels

    7. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.