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

Website Inscription


Playzer

Question

Bonjour à toute et à tous !!

 

 

Je développe actuellement un site internet pour un serveu privé metin² et je rencontre deux réelles soucis :

 

- Les mots de passe des comptes dans la bdd sont dans quel langage ? Mysql5 ? Sha1 ? Md5 ? Bcrypt ? SHA251 ?

- Existe-il une fonctions pour ce langage fin d'enregistrer un membre dans la base de données via le site ?

 

Je reste a disponibilité pour de plus ample renseignement,

 

Je vous remercie d'avance et vous souhaite une bonne après-midi :)

 

Playzer,

Lien vers le commentaire
Partager sur d’autres sites

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

Meilleurs contributeurs dans cette question

Jours populaires

Meilleurs contributeurs dans cette question

23 réponses à cette question

Messages recommandés

  • 0
  • Administrateur

Cryptage MYSQL me semble t'il :

 

INSERT INTO account (USER, PASSWORD) VALUES (:USER, PASSWORD(:PASSWORD)); (Requête SQL Fictive)

Chiffrera le mot de passe pour les comptes Metin2 sous la forme de : *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Sinon un formulaire HTML dans lequel via PHP tu récupères les données du formulaire et tu fais une insertion via PDO par exemple :)

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Cela me retourne ceci comme erreur :

 

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\xampp\htdocs\Nidarium\inscription.php:23 Stack trace: #0 C:\xampp\htdocs\Nidarium\inscription.php(23): PDOStatement->execute(Array) #1 {main} thrown in ...

Lien vers le commentaire
Partager sur d’autres sites

  • 0
  • Administrateur

essaye ceci

 

 

$insertmbr = $pdo->prepare("INSERT INTO account (login, email, password) VALUES (:login, :email, PASSWORD(:password))");
$insertmbr->BindParam(':login', $login);
$insertmbr->BindParam(':email', $email);
$insertmbr->BindParam(':password', $password);
$insertmbr->execute();

Lien vers le commentaire
Partager sur d’autres sites

  • 0
  • Administrateur

Ok,

 

1) Il y a deux éventuels soucis : je constate que tu es sur XAMP, tu fais une insertion dans la bonne base de données ?

2) Peux tu vérifier ce que te renvoi ton formulaire HTML, avant insertion ?

3) Redémarrer le serveur Metin2 par précaution.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Comment ça ?

Apparemment il y a un soucis car le mot de passe admin de la bdd qui était déja rentrer et avec lequel je me connecte c'est admin -> *4ACFE3202A5FF5CF467898FC58AAB1D615029441

 

Je me suis créer un compte grâce au site et le nouveau mdp, j'ai mis admin pour comparer cela me donne ça :

*CA3C9117BC85219066D5951645E94CF4D690FF46

 

Les deux sont différents donc je pense que le hashage n'est pas bon

Lien vers le commentaire
Partager sur d’autres sites

  • 0
  • Administrateur

Je t'assure que c'est exactement la même requête que j'utilise pour m'inscrire sur mon propre site :)

Pour cela qu'il faut voir le mot de passe qui est récupéré par ton formulaire avant insertion et hash.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Avec un var_dump ?

 

Voici mon code entier :

 

if(isset($_POST['forminscription'])) {
  $login = htmlspecialchars($_POST['login']);
  $email = htmlspecialchars($_POST['email']);
  $email2 = htmlspecialchars($_POST['email2']);
  $password = md5($_POST['password']);
  $password2 = md5($_POST['password2']);
  if(!empty($_POST['login']) AND !empty($_POST['email']) AND !empty($_POST['email2']) AND !empty($_POST['password']) AND !empty($_POST['password2'])) {
     $pseudolength = strlen($login);
     if($pseudolength <= 255) {
        if($email == $email2) {
           if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
              $reqmail = $pdo->prepare("SELECT * FROM account WHERE email = ?");
              $reqmail->execute(array($email));
              $mailexist = $reqmail->rowCount();
              if($mailexist == 0) {
                  if($password == $password2) {
                    $insertmbr = $pdo->prepare("INSERT INTO account (login, email, password) VALUES (:login, :email, PASSWORD(:password))");
$insertmbr->BindParam(':login', $login);
$insertmbr->BindParam(':email', $email);
$insertmbr->BindParam(':password', $password);
$insertmbr->execute(); 
                    $erreur = "Votre compte a bien été créé ! Me connecter";
                 } else {
                    $erreur = "Vos mots de passes ne correspondent pas !";
                 }
              } else {
                 $erreur = "Adresse email déjà utilisée !";
              }
           } else {
              $erreur = "Votre adresse email n'est pas valide !";
           }
        } else {
           $erreur = "Vos adresses email ne correspondent pas !";
        }
     } else {
        $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
     }
  } else {
     $erreur = "Tous les champs doivent être complétés !";
  }
}

Lien vers le commentaire
Partager sur d’autres sites

  • 0
  • Administrateur

$password = md5($_POST['password']);

$password2 = md5($_POST['password2']);

 

Voilà ton erreur ;)

 

$password = $_POST['password'];

$password2 = $_POST['password2'];

 

Tu as hash le mot de passe en MD5 alors que c'est MySQL qui s'en occupe du hash :)

Lien vers le commentaire
Partager sur d’autres sites

  • 0
  • Administrateur

Oui remets le

PASSWORD(:password)

 comme sur la première requête :)

 

$insertmbr = $pdo->prepare("INSERT INTO account (login, email, password) VALUES (:login, :email, PASSWORD(:password))");
$insertmbr->BindParam(':login', $login);
$insertmbr->BindParam(':email', $email);
$insertmbr->BindParam(':password', $password);
$insertmbr->execute();

  • Love 1
Lien vers le commentaire
Partager sur d’autres sites

  • 0
  • Administrateur

De rien :)

 

Tu fais la même chose, un formulaire avec login et password, vérification si login et ou password sont bien remplis.

 

$insertmbr = $pdo->prepare("SELECT * FROM account WHERE login = :login AND password = PASSWORD(:password))");
$insertmbr->BindParam(':login', $login);
$insertmbr->BindParam(':password', $password);
$insertmbr->execute();

 

Ensuite tu fais un beau IF

 

if($insertmbr->RowCount() == 1){
//le compte existe on peut initialiser la session
}else{
//mdp ou pseudo incorrect
}

Lien vers le commentaire
Partager sur d’autres sites

  • 0

C'est exactement ce que j'avais fais mais j'ai ce message :

 

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1' in C:\xampp\htdocs\Nidarium\connexion.php:11 Stack trace: #0 C:\xampp\htdocs\Nidarium\connexion.php(11): PDOStatement->execute() #1 {main} thrown in C:\xampp\htdocs\Nidarium\connexion.php on line 11

 

Mon code entier :

 

<?php

if(isset($_POST['formconnexion'])) {
  $login = htmlspecialchars($_POST['login']);
  $password = $_POST['password'];
  if(!empty($login) AND !empty($password)) {
     $requser = $pdo->prepare("SELECT * FROM account WHERE login = :login AND password = PASSWORD(:password))");
     $requser->BindParam(':login', $login);
     $requser->BindParam(':password', $password);
     $requser->execute();
     $userexist = $requser->rowCount();
   if($userexist == 1) {
       $userinfo = $requser->fetch();
       $_SESSION['id'] = $userinfo->id;
       $_SESSION['pseudo'] = $userinfo->pseudo;
       $_SESSION['email'] = $userinfo->email;
       header("Location: mon_compte.php?id=".$_SESSION['id']);
   } else {
        $erreur = "Mauvais mail ou mot de passe !";
     }
  } else {
     $erreur = "Tous les champs doivent être complétés !";
  }
}

?>

Lien vers le commentaire
Partager sur d’autres sites

  • 0

En effet, l'erreur est humaine.

Franchement je te met un gros pouce vert, tu es génial, je sais pas comment j'aurais fais sans toi (après je ne l'avais jamais fais tout sa, la connexion a un serveur privé ^^)

Merci beaucoup à toi, tu m'a été d'une grande aide. Merci beaucoup mille fois et merci beaucoup :P

Bonne journée à toi ;)

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. 6

      problème de connexion à mon serveur local (je suis débutant dans ce genre d'entreprise )

    2. 2

      problème de lancement serveur

    3. 9
    4. 0

      [PVM/PVP] ATLAX2 - EASY PLAY

    5. 2

      problème de lancement serveur

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.