J'arrive à récupérer les données de l'user mais arrivé à l'insertion en bdd, impossible, ça ne renvoie rien...
voici la fonction en question :
// Register
public function register($username, $email, $password, $password_check, $firstname, $lastname, $adress, $phone, $gender, $birthdate)
{
// Connexion Db
$connexion = $this->db->connectDb();
// Username
$pattern = "/^[\w]{5,20}$/i";
$username_required = htmlspecialchars(preg_match($pattern, $username));
if (!$username_required) {
$_GET['error'] = "Votre pseudo doit :<br>- Comporter entre 5 et 20 caractères.<br>- Ne contenir aucun espace.<br>- Ne contenir aucun caractère spécial (excepté _).";
}
/* var_dump($username); */
$user_check = $connexion->prepare("SELECT username FROM users WHERE username = '$username'");
$user_check->execute();
$user_checked = $user_check->fetch(PDO::FETCH_ASSOC);
/* var_dump($user_checked); */
if (!empty($user_checked['username'])) {
$_GET['error'] = "Ce pseudo est déjà utilisé.";
}
$pattern = "/^[A-Za-z0-9._-]+@[a-z]+.[a-z]{2,4}$/";
$email_required = htmlspecialchars(preg_match($pattern, $email));
if (!$email_required) {
$_GET['error'] = "Le format de l'e-mail est incorrect.";
}
$email_check = $connexion->prepare("SELECT email FROM users WHERE email = '$email'");
$email_check->execute();
$email_checked = $email_check->fetch(PDO::FETCH_ASSOC);
/* var_dump($email_checked); */
if (!empty($email_checked['email'])) {
$_GET['error'] = "Cette adresse mail est déjà utilisée.";
}
/* var_dump($email); */
// Password
$pattern = "/^(?=.*?[A-Z]{1,})(?=.*?[a-z]{1,})(?=.*?[0-9]{1,})(?=.*?[\W]{1,}).{8,20}$/";
$password_required = htmlspecialchars(preg_match($pattern, $password));
if (!$password_required) {
$_GET['error'] = "Le mot de passe doit contenir:<br>- Entre 8 et 20 caractères<br>- Au moins 1 caractère spécial<br>- Au moins 1 majuscule et 1 minuscule<br>- Au moins un chiffre.";
}
if ($password != $password_check) {
$_GET['error'] = "Les mots de passe ne correspondent pas.";
} else {
$password_hashed = password_hash($password, PASSWORD_BCRYPT, array('cost' => 10));
/* var_dump($password_hashed, $password, $password_check); */
}
// Firstname
$pattern = "/^(?=.*[A-Za-z]$)([A-Za-z]{2,25}[\s]?[A-Za-z]{1,25})$/";
$firstname_required = htmlspecialchars(preg_match($pattern, $firstname));
if (!$firstname_required) {
$_GET['error'] = "Le prénom doit:<br>- Comporter entre 3 et 50 caractètres.<br>- Commencer et finir par une lettre.<br>- Ne contenir aucun caractère spécial (excepté un espace).";
}
/* var_dump($firstname); */
// Lastname
$pattern = "/^(?=.*[A-Za-z]$)([A-Za-z]{2,25}[\s]?[A-Za-z]{1,25})$/";
$lastname_required = htmlspecialchars(preg_match($pattern, $lastname));
if (!$lastname_required) {
$_GET['error'] = "Le nom doit:<br>- Comporter entre 3 et 50 caractètres.<br>- Commencer et finir par une lettre.<br>- Ne contenir aucun caractère spécial (excepté un espace).";
}
/* var_dump($lastname); */
// Adress
$adress = htmlspecialchars($adress);
/* var_dump($adress); */
// Phone number
$pattern = "/^0[1-9]{9}$/";
$phone_required = htmlspecialchars(preg_match($pattern, $phone));
if (!$phone_required) {
$_GET['error'] = "Le numéro de téléphone doit commencer par un zéro '0' et contenir au total 10 chiffres.";
}
/* var_dump($phone); */
// Gender
$gender = htmlspecialchars($gender);
/* var_dump($gender); */
// Birthdate
/* var_dump($birthdate); */
$pattern = "/^0[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])$/";
$birtdate_required = htmlspecialchars(preg_match($pattern, $birthdate));
if (!$birtdate_required) {
$_GET['error'] = "Seulement ce format est accepté :<br>- jj/mm/aaaa. -";
}
// Date
date_default_timezone_set("Europe/Paris");
if (empty($username or $email or $password or $password_check or $firstname or $lastname or $adress or $phone or $gender or $birthdate)) {
$_GET['error'] = "Tous les champs doivent être remplis.";
}
var_dump($username, $email, $password, $password_check, $firstname, $lastname, $adress, $phone, $gender, $birthdate);
if (empty($_GET['error'])) {
$register = $connexion->prepare("INSERT INTO users
(rank, username, password, email, firstname, lastname, adress, phone, gender, birthdate, date_joined)
VALUES (:rank, :username, :password, :email, :firstname, :lastname, :adress,
$register->bindParam(':rank', 'user', PDO::PARAM_STR);
$register->bindParam(':username', $username, PDO::PARAM_STR);
$register->bindParam(':password', $password_hashed, PDO::PARAM_STR);
$register->bindParam(':email', $email, PDO::PARAM_STR);
$register->bindParam(':firstname', $firstname, PDO::PARAM_STR);
$register->bindParam(':lastname', $lastname, PDO::PARAM_STR);
$register->bindParam(':adress', $adress, PDO::PARAM_STR);
$register->bindParam(':phone', $phone, PDO::PARAM_STR);
$register->bindParam(':gender', $gender, PDO::PARAM_STR);
$register->bindParam(':birthdate', $birthdate, PDO::PARAM_STR);
$register->execute();
header('Location:connexion.php');
/* $this->connect($email, $password); */
}
}
Et voici la connexion en bdd :
<?php
class Db
{
// ATTRIBUTS
private $host = 'localhost';
private $username = 'root';
private $password = '';
private $database = 'boutique';
public $PDO;
// METHODES
// Constructeur
public function __construct($host = null, $username = null, $password = null, $database = null)
{
if ($host != null) {
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->database = $database;
}
}
// Connexion Db
public function connectDb()
{
try { // Indique la requête SQL à lancer quand on se connecte
$this->PDO = new PDO(
'mysql:host=' . $this->host .
';dbname=' . $this->database,
$this->username,
$this->password,
// On interragit avec la Base de données en UTF8 pour empêcher les problèmes d'accent
array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',
// Mode d'erreur pour avoir des warning et le descriptif des erreurs
PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
)
);
// Retour de la connexion
return $this->PDO;
// Récupération des erreurs
} catch (PDOException $e) {
print_r("Erreur de connexion à la base de données : " . $e->getMessage() . "<br/>");
die();
}
}
}
?>
Merci à celui ou ceux qui trouveront le soucis...