Plusieurs choses : Le formulaire simple fonctionne correctement, je rajoute petit a petit des détails
<?php
$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '******';
$DATABASE_NAME = 'Base';
// essaie de ce connecter
$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if (mysqli_connect_errno()) {
// affiche le message d'erreur si problème de connection
die ('Impossible de ce connecter à MYSQL: ' . mysqli_connect_error());
}
// Verification des données
if (!isset($_POST['username'], $_POST['password'], $_POST['email'])) {
// ne récupère pas les informations envoyées
die ('Veuillez remplir le formulaire d\'enregistrement!');
}
// tout doit être rempli
if (empty($_POST['username']) || empty($_POST['password']) || empty($_POST['confirmpassword']) || empty($_POST['email'])) {
// une ou plusieurs valeur sont vide
die ('Veuillez remplir le formulaire d\'enregistrement!');
}
// vérification du nom utilisateur mail mot de passe
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
die ('l\'email n\'est pas valide !');
}
if (preg_match('/[A-Za-z]+/', $_POST['username']) == 0) {
die ('Seul les charactères alphanumériques minuscules et majuscules sont autorisés');
}
if (strlen($_POST['username']) > 20 || strlen($_POST['username']) < 5) {
die ('Le nom d\'utilisateur doit comporter 5 à 20 charactères!');
}
if (strlen($_POST['password']) > 20 || strlen($_POST['password']) < 5) {
die ('Le mot de passe doit comporter 5 à 20 charactères!!');
}
// a intégrer ici mot de passe identique et vérification mail unique
if ($stmt = $con->prepare('SELECT id, password FROM users WHERE username = ?')) {
// Bind parameters (s = string, i = int, b = blob, etc), hash the password using the PHP password_hash function.
$stmt->bind_param('s', $_POST['username']);
$stmt->execute();
$stmt->store_result();
// vérifie si le compte existe dans la base
if ($stmt->num_rows > 0) {
// le nom utilisateur existe déjà
echo 'Le nom d\'utilisateur existe déjà!';
} else {
// utilisateur existe pas insertion
if ($stmt = $con->prepare('INSERT INTO users (username, password, email) VALUES (?, ?, ?)')) {
// encryption du mot de passe
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$stmt->bind_param('sss', $_POST['username'], $password, $_POST['email']);
$stmt->execute();
echo 'Vous êtes désormais inscrit, veuillez télécharger l\'installateur de jeu ci-dessous pour vous connectez';
} else {
// problème état dans la base de données vérifier si elle comporte les champs requis
echo 'Déclaration invalide!';
}
}
$stmt->close();
} else {
// problème état dans la base de données vérifier si elle comporte les champs requis
echo 'Déclaration invalide!';
}
$con->close();
?>
certains me pose problèmes
1 - Je veux vérifier si le mot de passe taper est le bon, j'utilise ça, est ce que je suis proche de la méthode la plus simple ?
if (strlen($_POST['password']) == ($_POST['confirmpassword'])) {
die ('Les mots de passe ne sont pas identiques');
2 - Je veux vérifier si l'email n'existe pas déjà dans la base de donnée, est ce la bonne méthode ?$verifemail = mysql_query("SELECT email FROM users WHERE email='$email'") or die(mysql_error());
if (
mysql_num_rows($verifemail) != 0
)
{
echo 'Cette adresse email existe déjà !';
}
3 - Dernierement, est ce qu'il est possible de ce baser la-dessus http://www.phpdebutant.org/article153.phppour rappeler le formulaire et que l'utilisateur vois les messages d'erreurs dans celui si sans qu'il ai à revenir sur la page précédente et devoir tout retaper manuellement ?
Merci pour votre aide, l'apprentissage avance !