Vérification de syntaxe
Résolu
barnabe0057
Messages postés
17074
Statut
Contributeur
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Etant débutant en PHP, je souhaiterais savoir si ma syntaxe est correcte :
Sachant que je voudrais générer un identifiant de 40 caractères de long à partir d'un email et d'un mot de passe concaténés.
Merci d'avance.
Etant débutant en PHP, je souhaiterais savoir si ma syntaxe est correcte :
$account_id = substr(password_hash($email . $password, PASSWORD_BCRYPT), -40);
Sachant que je voudrais générer un identifiant de 40 caractères de long à partir d'un email et d'un mot de passe concaténés.
Merci d'avance.
Configuration: Linux / Firefox 91.0
A voir également:
- Vérification de syntaxe
- Verification lien internet - Guide
- Verification windows 11 - Guide
- Trouver erreur de syntaxe fichier txt pix ✓ - Forum Programmation
- Vérification identité leboncoin impossible - Forum Réseaux sociaux
- Badge de vérification linkedin - Accueil - Guide réseaux sociaux
2 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
pourquoi ne testes-tu pas ton code afin d'en vérifier la syntaxe?
pourquoi ne testes-tu pas ton code afin d'en vérifier la syntaxe?
Le truc, c'est que la syntaxe est correcte, mais qui dit identifiant de compte dit identifiant unique, certes il est très peu probable qu'un doublon arrive sur 40 caractères, mais statistiquement ce n'est pas exclus.
De toute façon password_hash, comme son nom l'indique est réservé à un usage précis.
Des scripts pour générer un identifiant unique en php, doit y en avoir des pelles sur internet ^^
De toute façon password_hash, comme son nom l'indique est réservé à un usage précis.
Des scripts pour générer un identifiant unique en php, doit y en avoir des pelles sur internet ^^
Bref, maintenant la ligne en question fonctionne, par contre j'obtiens ce message d'erreur :
<b>Fatal error</b>: Uncaught Error: Call to undefined method PDOStatement::exec() in /var/www/api/index.php:96 Stack trace: #0 {main} thrown in <b>/var/www/api/index.php</b> on line <b>96</b><br />Voilà mon fichier index.php :
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); date_default_timezone_set('Europe/Paris'); function random_1($car) { $string = ""; $chaine = "abcdefghijklmnpqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; srand((double)microtime()*1000000); for($i=0; $i<$car; $i++) { $string .= $chaine[rand()%strlen($chaine)]; } return $string; } // // on traite la variable email // $email = $_POST['email']; echo $email; if(empty($email)) { header("Location: index.php"); exit; } if(strlen($email) < 6 OR strlen($email) > 60) { header("Location: index.php"); exit; } // // on traite la variable password // $password = $_POST['password']; echo $password; if(empty($password)) { header("Location: index.php"); exit; } if(strlen($password) < 8 OR strlen($password) > 64) { header("Location: index.php"); exit; } $account_id = substr(password_hash($email . $password, PASSWORD_BCRYPT), -40); $hash_pass = password_hash($password, PASSWORD_BCRYPT); echo $account_id; echo $hash_pass; // // on traite la variable first_name // $first_name = $_POST['first_name']; if(empty($first_name) OR strlen($first_name) > 30); { $first_name = NULL; } // // on traite la variable last_name // $last_name = $_POST['last_name']; if(empty($last_name) OR strlen($last_name) > 30); { $last_name = NULL; } // // on génère une clé pour l'api // $api_id = random_1(40); echo $api_id; // // on récupère la date du jour // $creation_date = date('Ymd'); // // on se connecte à la base de données // require_once 'sqlconnect.php'; $sql = 'INSERT INTO accounts VALUES ($first_name, $last_name, $email, $hash_pass, $account_id, $creation_date, 1, $api_id)'; $prepare = $bdd ->prepare($sql); $res = $prepare ->exec($sql); ?>Par contre je me rends compte d'un problème : pour un même mot de passe, chaque requête génère un hash différent du précédent, j'imagine que c'est à cause du sel qui est généré automatiquement par password_hash, donc comment comparer pour vérifier la validité du mot de passe ? Je suis obligé de passer par password_verify ?