bonjour à tous et à toute
je viens vous demander de l'aide car je n'arrive pas a réglé mon problème
j'ai un formulaire d'inscription il marche bien quand je rentre toute les informations nécessaire pour l'inscription et il me renvois come prévue un message de sucées mais quand je vais voir ma BDD il n'y a rien j'ai beau vérifier encore et encore la requête je ne vois pas se qu'il coince pouvez vous m'aiguiller ?
voici le code d'inscription html/php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="NoS1gnal"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" rel="stylesheet" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<title>Connexion</title>
</head>
<body>
<div class="login-form">
<?php
if(isset($_GET['reg_err']))
{
$err = htmlspecialchars($_GET['reg_err']);
switch($err)
{
case 'success':
?>
<div class="alert alert-success">
<strong>Succès</strong> inscription réussie !
</div>
<?php
break;
case 'password':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> mot de passe différent
</div>
<?php
break;
case 'email':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> email non valide
</div>
<?php
break;
case 'email_length':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> email trop long
</div>
<?php
break;
case 'nom_length':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> pseudo trop long
</div>
<?php
case 'already':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> compte deja existant
</div>
<?php
}
}
?>
<form action="inscription_traitement.php" method="post">
<h2 class="text-center">Inscription</h2>
<div class="form-group">
<input type="text" name="nom" class="form-control" placeholder="Nom" required="required" autocomplete="off">
</div>
<div class="form-group">
<input type="text" name="prenom" class="form-control" placeholder="Prenom" required="required"
autocomplete="off">
</div>
<div class="form-group">
Date de Naissance<br>
<input type="date" name="naissance" class="form-control">
</div>
<div class="form-group">
<input type="text" name="genre" class="form-control" placeholder="Homme, Femme ou Autre" required="required"
autocomplete="off">
</div>
<div class="form-group">
<input type="text" name="ville" class="form-control" placeholder="Ville" required="required" autocomplete="off">
</div>
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email" required="required"
autocomplete="off">
</div>
<div class="form-group">
<input type="text" name="loisir" class="form-control" placeholder="Loisir" required="required" autocomplete="off">
</div>
<div class="form-group">
<input type="password" name="password" class="form-control" placeholder="Mot de passe" required="required"
autocomplete="off">
</div>
<div class="form-group">
<input type="password" name="password_retype" class="form-control" placeholder="Re-tapez le mot de passe"
required="required" autocomplete="off">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-block">Inscription</button>
</div>
</form>
<?php
print_r($_POST);
?>
</div>
<style>
.login-form {
width: 340px;
margin: 50px auto;
}
.login-form form {
margin-bottom: 15px;
background: #f7f7f7;
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
padding: 30px;
}
.login-form h2 {
margin: 0 0 15px;
}
.form-control, .btn {
min-height: 38px;
border-radius: 2px;
}
.btn {
font-size: 15px;
font-weight: bold;
}
</style>
</body>
</html>
et voici le traitement des info
<?php
require_once 'config.php'; // On inclu la connexion à la bdd
// Si les variables existent et qu'elles ne sont pas vides
if(!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['naissance']) &&
!empty($_POST['genre']) &&!empty($_POST['ville']) && !empty($_POST['loisir']) &&
!empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
// Patch XSS
$nom = htmlspecialchars($_POST['nom']);
$prenom = htmlspecialchars($_POST['prenom']);
$naissance = htmlspecialchars($_POST['naissance']);
$genre = htmlspecialchars($_POST['genre']);
$ville = htmlspecialchars($_POST['ville']);
$loisir = htmlspecialchars($_POST['loisir']);
$email = htmlspecialchars($_POST['email']);
$password = htmlspecialchars($_POST['password']);
$password_retype = htmlspecialchars($_POST['password_retype']);
// On vérifie si l'utilisateur existe
$check = $bdd->prepare('SELECT nom, email, password FROM utilisateurs WHERE email = ?');
$check->execute(array($email));
$data = $check->fetch();
$row = $check->rowCount();
$email = strtolower($email); // on transforme toute les lettres majuscule en minuscule pour éviter que [email protected] et [email protected] soient deux compte différents ..
// Si la requete renvoie un 0 alors l'utilisateur n'existe pas
if($row == 0)
{
if(strlen($nom) <= 100)// On verifie que la longueur du pseudo <= 100
{
if(strlen($prenom) <= 100)
{
if(checkdate($naissance = 1, 25, 2000))
{
if(strlen($genre) <= 100)
{
if(strlen($ville) <= 100)
{
if(strlen($loisir) <= 100)
{
if(strlen($email) <= 100)// On verifie que la longueur du mail <= 100
{
if(filter_var($email, FILTER_VALIDATE_EMAIL))// Si l'email est de la bonne forme
{
if($password === $password_retype)// si les deux mdp saisis sont bon
{
// On hash le mot de passe avec Bcrypt, via un coût de 12
$cost = ['cost' => 12];
$password = password_hash($password, PASSWORD_BCRYPT, $cost);
// On stock l'adresse IP
$ip = $_SERVER['REMOTE_ADDR'];
// On insère dans la base de données
$insert = $bdd->prepare('INSERT INTO utilisateurs(nom, prenom,
naissance, genre, ville, loisir, email,
password, ip, token)
VALUES(:nom, :prenom, :naissance,
:genre, :ville, :loisir, :email, :password, :ip, :token)');
$insert->execute(array(
'nom' => $nom,
'prenom' => $prenom,
'naissance' => $naissance,
'genre' => $genre,
'ville' => $ville,
'loisir' => $loisir,
'email' => $email,
'password' => $password,
'ip' => $ip,
'token' => bin2hex(openssl_random_pseudo_bytes(64))
));
// On redirige avec le message de succès
header('Location:inscription.php?reg_err=success');
die();
}
else{ header('Location: inscription.php?reg_err=password'); die();}
}
else{ header('Location: inscription.php?reg_err=email'); die();}
}
else{ header('Location: inscription.php?reg_err=email_length'); die();}
}
else{ header('Location: inscription.php?reg_err=loisir_length'); die();}
}
else{header('Location: inscription.php?reg_err=ville_length'); die();}
}
else{header('Location: inscription.php?reg_err=genre_length'); die();}
}
else{ header('Location: inscription.php?reg_err=naissance_checkdate'); die();}
}
else{header('Location: inscription.php?reg_err=prenom_length'); die();}
}
else{ header('Location: inscription.php?reg_err=nom_length'); die();}
}
else{ header('Location: inscription.php?reg_err=already'); die();}
}
?>
merci d'avance à tous ceux qui m'aideront
bonjour à tous et à toute
je viens vous demander de l'aide car je n'arrive pas a réglé mon problème
j'ai un formulaire d'inscription il marche bien quand je rentre toute les informations nécessaire pour l'inscription et il me renvois come prévue un message de sucées mais quand je vais voir ma BDD il n'y a rien j'ai beau vérifier encore et encore la requête je ne vois pas se qu'il coince pouvez vous m'aiguiller ?
voici le code d'inscription html/php
[PHP]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="NoS1gnal"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" rel="stylesheet" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<title>Connexion</title>
</head>
<body>
<div class="login-form">
<?php
if(isset($_GET['reg_err']))
{
$err = htmlspecialchars($_GET['reg_err']);
switch($err)
{
case 'success':
?>
<div class="alert alert-success">
<strong>Succès</strong> inscription réussie !
</div>
<?php
break;
case 'password':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> mot de passe différent
</div>
<?php
break;
case 'email':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> email non valide
</div>
<?php
break;
case 'email_length':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> email trop long
</div>
<?php
break;
case 'nom_length':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> pseudo trop long
</div>
<?php
case 'already':
?>
<div class="alert alert-danger">
<strong>Erreur</strong> compte deja existant
</div>
<?php
}
}
?>
<form action="inscription_traitement.php" method="post">
<h2 class="text-center">Inscription</h2>
<div class="form-group">
<input type="text" name="nom" class="form-control" placeholder="Nom" required="required" autocomplete="off">
</div>
<div class="form-group">
<input type="text" name="prenom" class="form-control" placeholder="Prenom" required="required"
autocomplete="off">
</div>
<div class="form-group">
Date de Naissance<br>
<input type="date" name="naissance" class="form-control">
</div>
<div class="form-group">
<input type="text" name="genre" class="form-control" placeholder="Homme, Femme ou Autre" required="required"
autocomplete="off">
</div>
<div class="form-group">
<input type="text" name="ville" class="form-control" placeholder="Ville" required="required" autocomplete="off">
</div>
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email" required="required"
autocomplete="off">
</div>
<div class="form-group">
<input type="text" name="loisir" class="form-control" placeholder="Loisir" required="required" autocomplete="off">
</div>
<div class="form-group">
<input type="password" name="password" class="form-control" placeholder="Mot de passe" required="required"
autocomplete="off">
</div>
<div class="form-group">
<input type="password" name="password_retype" class="form-control" placeholder="Re-tapez le mot de passe"
required="required" autocomplete="off">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-block">Inscription</button>
</div>
</form>
<?php
print_r($_POST);
?>
</div>
<style>
.login-form {
width: 340px;
margin: 50px auto;
}
.login-form form {
margin-bottom: 15px;
background: #f7f7f7;
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
padding: 30px;
}
.login-form h2 {
margin: 0 0 15px;
}
.form-control, .btn {
min-height: 38px;
border-radius: 2px;
}
.btn {
font-size: 15px;
font-weight: bold;
}
</style>
</body>
</html>
[/PHP]
et voici le traitement des info
[PHP]
<?php
require_once 'config.php'; // On inclu la connexion à la bdd
// Si les variables existent et qu'elles ne sont pas vides
if(!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['naissance']) &&
!empty($_POST['genre']) &&!empty($_POST['ville']) && !empty($_POST['loisir']) &&
!empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
// Patch XSS
$nom = htmlspecialchars($_POST['nom']);
$prenom = htmlspecialchars($_POST['prenom']);
$naissance = htmlspecialchars($_POST['naissance']);
$genre = htmlspecialchars($_POST['genre']);
$ville = htmlspecialchars($_POST['ville']);
$loisir = htmlspecialchars($_POST['loisir']);
$email = htmlspecialchars($_POST['email']);
$password = htmlspecialchars($_POST['password']);
$password_retype = htmlspecialchars($_POST['password_retype']);
// On vérifie si l'utilisateur existe
$check = $bdd->prepare('SELECT nom, email, password FROM utilisateurs WHERE email = ?');
$check->execute(array($email));
$data = $check->fetch();
$row = $check->rowCount();
$email = strtolower($email); // on transforme toute les lettres majuscule en minuscule pour éviter que
[email protected] et
[email protected] soient deux compte différents ..
// Si la requete renvoie un 0 alors l'utilisateur n'existe pas
if($row == 0)
{
if(strlen($nom) <= 100)// On verifie que la longueur du pseudo <= 100
{
if(strlen($prenom) <= 100)
{
if(checkdate($naissance = 1, 25, 2000))
{
if(strlen($genre) <= 100)
{
if(strlen($ville) <= 100)
{
if(strlen($loisir) <= 100)
{
if(strlen($email) <= 100)// On verifie que la longueur du mail <= 100
{
if(filter_var($email, FILTER_VALIDATE_EMAIL))// Si l'email est de la bonne forme
{
if($password === $password_retype)// si les deux mdp saisis sont bon
{
// On hash le mot de passe avec Bcrypt, via un coût de 12
$cost = ['cost' => 12];
$password = password_hash($password, PASSWORD_BCRYPT, $cost);
// On stock l'adresse IP
$ip = $_SERVER['REMOTE_ADDR'];
// On insère dans la base de données
$insert = $bdd->prepare('INSERT INTO utilisateurs(nom, prenom,
naissance, genre, ville, loisir, email,
password, ip, token)
VALUES(:nom, :prenom, :naissance,
:genre, :ville, :loisir, :email, :password, :ip, :token)');
$insert->execute(array(
'nom' => $nom,
'prenom' => $prenom,
'naissance' => $naissance,
'genre' => $genre,
'ville' => $ville,
'loisir' => $loisir,
'email' => $email,
'password' => $password,
'ip' => $ip,
'token' => bin2hex(openssl_random_pseudo_bytes(64))
));
// On redirige avec le message de succès
header('Location:inscription.php?reg_err=success');
die();
}
else{ header('Location: inscription.php?reg_err=password'); die();}
}
else{ header('Location: inscription.php?reg_err=email'); die();}
}
else{ header('Location: inscription.php?reg_err=email_length'); die();}
}
else{ header('Location: inscription.php?reg_err=loisir_length'); die();}
}
else{header('Location: inscription.php?reg_err=ville_length'); die();}
}
else{header('Location: inscription.php?reg_err=genre_length'); die();}
}
else{ header('Location: inscription.php?reg_err=naissance_checkdate'); die();}
}
else{header('Location: inscription.php?reg_err=prenom_length'); die();}
}
else{ header('Location: inscription.php?reg_err=nom_length'); die();}
}
else{ header('Location: inscription.php?reg_err=already'); die();}
}
?>
[/PHP]
merci d'avance à tous ceux qui m'aideront