Bonjour,
Tout d'abord je tiens à m'excuser pour tous les posts inutiles que j'ai pu poster au préalable.
Voila je rencontre un petit problème avec mon code.
Enfaite, j'ai créer un système d'inscription en mvc, mais le soucis est que je reçois ces messages d'erreurs au validation du formulaire :
Notice: Undefined index: nom_utilisateur in C:\xampp\htdocs\Mvc Vierge\Module\Membres\inscription.php on line 11
Notice: Undefined index: adresse_email in C:\xampp\htdocs\Mvc Vierge\Module\Membres\inscription.php on line 12
Notice: Undefined index: mot_de_passe in C:\xampp\htdocs\Mvc Vierge\Module\Membres\inscription.php on line 13
Notice: Undefined index: mot_de_passe_confirm in C:\xampp\htdocs\Mvc Vierge\Module\Membres\inscription.php on line 14
Fatal error: Uncaught Error: Call to undefined function ReqExec() in C:\xampp\htdocs\Mvc Vierge\Model\members.php:115 Stack trace: #0 C:\xampp\htdocs\Mvc Vierge\Module\Membres\inscription.php(53): membres->verif_adresse_email('') #1 C:\xampp\htdocs\Mvc Vierge\index.php(20): include('C:\\xampp\\htdocs...') #2 {main} thrown in C:\xampp\htdocs\Mvc Vierge\Model\members.php on line 115
Je vous fait parvenir les différents fichiers :
Module/Membres/inscription.php
<?php
// Vérification des droits d'accès de la page
if (Droit_Access()) {
// On affiche la page d'erreur comme quoi l'utilisateur est déjà connecté
include CHEMIN_VUE.'erreur_deja_connecte.php';
} else {
if (!empty($_POST)) {
// Declaration des variables
$nom_utilisateur = htmlspecialchars($_GET['nom_utilisateur']);
$adresse_email = htmlspecialchars($_GET['adresse_email']);
$mot_de_passe = htmlspecialchars($_GET['mot_de_passe']);
$mot_de_passe_confirm = htmlspecialchars($_GET['mot_de_passe_confirm']);
// Variable regex mail
$atom = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';
$regexmail = '/^' . $atom . '+' . '(\.' . $atom . '+)*' . '@' . '(' . $domain . '{1,63}\.)+' .$domain . '{2,63}$/i';
// On place toutes les erreurs dans un tableau
$erreurs_formulaire = [];
// Traitement du nom d'utilisateur
if (!empty($nom_utilisateur)) {
$erreurs_formulaire[] = "Vous devez renseiger un nom d'utilisateur";
}
elseif (!empty($nom_utilisateur) || strlen($nom_utilisateur) < 5) {
$erreurs_formulaire[] = "Le nom d'utilisateur saisi :". $nom_utilisateur ." , doit faire un minimum de 5 caractères.";
}
elseif (!empty($nom_utilisateur) || (strlen($nom_utilisateur) > 20)) {
$erreurs_formulaire[] = "Le nom d'utilisateur saisi :". $nom_utilisateur ." , doit faire un maximum de 20 caractères.";
}
// Si le nom d'utilisateur respecte le preg_match
elseif (!preg_match('`^([a-zA-Z0-9-_]{5,20})$`', $nom_utilisateur)) {
$erreurs_formulaire[] = "L'adresse email saisi :".$nom_utilisateur ." , n'est pas valide, merci d'en choisir un autre. <a href='index.php'>En savoir plus sur les normes du nom d'utilisateur.";
}
// On vérifie la disponibilité du nom d'utilisateur
elseif ($membres->verif_nom_utilisateur($nom_utilisateur)) {
$erreurs_formulaire[] = "Le nom d'utilisateur renseigné est déjà utilisé.";
}
// Traitement de l'adresse email
// Si le champ de l'adresse email est vide
if (!empty($adresse_email)) {
$erreurs_formulaire[] = "Vous devez renseigner une adresse email";
}
// Si l'adresse e-mail respecte le regex
elseif (!empty($adresse_email) || preg_match($regexmail, $adresse_email)) {
$erreurs_formulaire[] = "L'adresse email saisi :".$adresse_email ." , n'est pas valide. <a href='index.php'>En savoir plus sur les normes de l'adresse email.";
}
// On vérifie la disponibilité du nom d'utilisateur
elseif ($membres->verif_adresse_email($adresse_email)) {
$erreurs_formulaire[] = "L'adresse email renseigné est déjà utilisé.";
}
// Traitement des mots de passe
// Si le champ du mot de passe est vide
if (!empty($mot_de_passe)) {
$erreurs_formulaire[] = "Vous devez reseigner un mot de passe.";
}
// Si le champ du mot de passe de confirmation est vide
elseif (empty($mot_de_passe_confirm)) {
$erreurs_formulaire[] = "Vous devez renseigner un mot de passe de confirmation.";
}
// Si le champ du mot de passe et du mot de passe de confirmation ne correspondent pas
elseif ($mot_de_passe != $mot_de_passe_confirm) {
$erreurs_formulaire[] = "Le mot de passe et le mot de passe de confirmation es tindispensable qu'ils soient identique.";
}
// Si le mot de passe n'est pas vide et qui fait moins de 5 caractères ou plus de 80 caracctère.
elseif (!empty($mot_de_passe) || strlen($mot_de_passe) < 5) {
$erreurs_formulaire[] = "Le nom d'utilisateur saisi :". $mot_de_passe ." , doit faire un minimum de 5 caractères.";
}
elseif (!empty($mot_de_passe) || (strlen($mot_de_passe) > 75)) {
$erreurs_formulaire[] = "Le nom d'utilisateur saisi :". $mot_de_passe ." , doit faire un maximum de 20 caractères.";
}
// Si le mot de passe de confirmation n'est pas vide et qui fait moins de 5 caractères ou plus de 25 caracctère.
elseif (!empty($mot_de_passe_confirm) || strlen($mot_de_passe_confirm) < 5) {
$erreurs_formulaire[] = "Le nom d'utilisateur saisi :". $mot_de_passe_confirm ." , doit faire un minimum de 5 caractères.";
}
elseif (!empty($mot_de_passe_confirm) || (strlen($mot_de_passe_confirm) > 75)) {
$erreurs_formulaire[] = "Le nom d'utilisateur saisi :". $mot_de_passe_confirm ." , doit faire un maximum de 20 caractères.";
}
// Si aucune erreurs
if (empty($erreurs_formulaire)) {
$membres->Inscription($nom_utilisateur, $adresse_email, $mot_de_passe);
Redirect('index.php?module=membres&action=connexion');
}
} else {
$erreurs_formulaire[] = "Vous devez remplir tous les champs demandés.";
}
// On réaffiche le formulaire d'inscription
include CHEMIN_VUE.'formulaire_inscription.php';
}
Model/members.php
<?php
/**
* Classe gérant l'espace membre au complet
* Connexion, Inscription, Profil
*/
class membres
{
// Attributs attribués aux paremètres passés
protected $pdo;
private $id_utilisateur;
private $nom_utilisateur;
private $adresse_email;
private $mot_de_passe;
private $mot_de_passe_confirm;
private $avatar;
private $hash_validation;
// On construit une fonction va nous permettre de faire un sorte de raccourci pour envoyer une requête
function ReqExec($sql) {
$pdo = PDO2::getInstance();
// Requête exemple d'affichage ReqExec(La requête);
$req = $this->pdo->prepare($sql);
// On retourne donc la requête
return $req;
}
// On construit une fonction qui est public et qui permettera de traiter l'inscription au cours de notre application
function Inscription($nom_utilisateur, $adresse_email, $mot_de_passe) {
$pdo = PDO2::getInstance();
// Hashage du mot de passe avec la fonction bcrypt
$NewPwD = password_hash($mot_de_passe, PASSWORD_BCRYPT);
// requête d'insertion d'un membre
ReqExec("INSERT INTO membres (nom_utilisateur, adresse_email, mot_de_passe) VALUES (:nom_utilisateur, :adresse_email, :mot_de_passe)");
$req->bindparam(":nom_utilisateur", $nom_utilisateur);
$req->bindparam(":adresse_email", $adresse_email);
$req->bindparam(":mot_de_passe", $NewPwD);
// On execute la requête
$req->execute();
// On retourne la requête
return $req;
}
// On construit une fonction qui est public et qui permettera de traiter la connexion au cours de notre application
function Connexion($nom_utilisateur, $mot_de_passe) {
$pdo = PDO2::getInstance();
// Requête d'authentification d'un membre
ReqExec("SELECT nom_utilisateur, mot_de_passe FROM membres WHERE nom_utilisateur = :nom_utilisateur");
$req->execute(['nom_utilisateur' => $nom_utilisateur]);
// La fonction fetch() permet de tout savoir sur l'utilisateur, dans notre cas, contrôler si les identifiants sont exact
$ReqUser = $req->fetch();
if ($ReqUser) {
// On vérifie les données
if (password_verify($mot_de_passe, $ReqUser['mot_de_passe'])) {
// Si tout est bon, on lui attribut une variable de session en le connectant
$_SESSION['auth_user'];
// DOnc on retourne une réponse positive
return true;
} else {
// Si incorrect, on affiche une erreur
$erreurs_formulaire[] = "Les données saisi sont incorrect, ce compte n'existe pas.";
// Donc on retourne une réponse negative
return false;
}
}
}
// Fonction d'update d'avatar
function update_avatar($id_utilisateur, $avatar) {
$pdo = PDO2::getInstance();
ReqExec("UPDATE membres SET avatar = :avatar WHERE id = :id_utilisateur");
$req->bindValue(':id_utilisateur', $id_utilisateur);
$req->bindValue(':avatar', $avatar);
// On retourne l'execution de la requête
return $req->execute();
}
// Fonction de validation d'un compte avec clé de validation
function validate_account_hash($hash_validation) {
$pdo = PDO2::getInstance();
ReqExec("UPDATE membres SET hash_validation = '' WHERE hash_validation = :hash_validation");
$req->bindValue(':hash_validation', $hash_validation);
$req->execute();
return ($req->rowCount() == 1);
}
// Lire des infos sur un utilisateur
function select_info_user($id_utilisateur) {
$pdo = PDO2::getInstance();
// On prépare une requête
ReqExec("SELECT * FROM membres WHERE id = :id_utilisateur");
$req->bindValue(':id_utilisateur', $id_utilisateur);
$req->execute();
if ($result = $req->fetch(PDO::FETCH_ASSOC)) {
$req->closeCursor();
// On retourne le resultat
return $result;
}
return false;
}
// Vérification de la disponibilité du nom d'utilisateur
function verif_nom_utilisateur($nom_utilisateur) {
$pdo = PDO2::getInstance();
ReqExec("SELECT nom_utilisateur FROM membres WHERE id");
$requete->bindValue(':nom_utilisateur', $nom_utilisateur);
$requete->execute();
}
// Vérification de la disponibilité de l'adresse email
function verif_adresse_email($adresse_email) {
$pdo = PDO2::getInstance();
ReqExec("SELECT adresse_email FROM membres WHERE id");
$requete->bindValue(':adresse_email', $adresse_email);
$requete->execute();
}
// Fonction de redirection
function Redirect($url) {
header("Location $url\r\n");
}
}
La vue évidemment ^^
<?php $title_page = "Inscription"; ?>
<section class="page-title">
<div id="limite_container">
<header>
<ul class="breadcrumb"><!-- breadcrumb -->
<li><a href="#">Pages</a></li> /
<li class="active"><?php echo $title_page; ?></li>
</ul>
<h2>
Authentification
</h2>
</header>
</div>
</section>
<section id="main_section">
<div id="limite_container">
<?php if (isset($erreurs_formulaire)): ?>
<ul>
<?php foreach ($erreurs_formulaire as $e): ?>
<li><?php echo $e; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<div class="main_connexion">
<header>
<p>Inscription</p>
</header>
<div class="formulaire">
<form method="POST" action="#">
<div class="form_fields">
<label>Nom d'utilisateur</label>
<i class="fa fa-user"></i>
<input type="text" name="nom_utilisateur" placeholder="Votre nom d'utilisateur">
</div>
<div class="form_fields">
<label>Adresse email</label>
<i class="fa fa-user"></i>
<input type="email" name="adresse_email" placeholder="Votre adresse email">
</div>
<div class="form_fields">
<label>Mot de passe</label>
<i class="fa fa-user"></i>
<input type="password" name="mot_de_passe" placeholder="Votre mot de passe">
</div>
<div class="form_fields">
<label>Mot de passe (vérification)</label>
<i class="fa fa-user"></i>
<input type="password" name="mot_de_passe_confirm" placeholder="Votre mot de passe (vérification)">
</div>
<div class="form_fields">
<label>Avatar</label>
<input type="file" name="file-7[]" id="file-7" class="input_file">
<label for="file-7"><span></span> <strong><svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path d="M10 0l-5.2 4.9h3.3v5.1h3.8v-5.1h3.3l-5.2-4.9zm9.3 11.5l-3.2-2.1h-2l3.4 2.6h-3.5c-.1 0-.2.1-.2.1l-.8 2.3h-6l-.8-2.2c-.1-.1-.1-.2-.2-.2h-3.6l3.4-2.6h-2l-3.2 2.1c-.4.3-.7 1-.6 1.5l.6 3.1c.1.5.7.9 1.2.9h16.3c.6 0 1.1-.4 1.3-.9l.6-3.1c.1-.5-.2-1.2-.7-1.5z"></path></svg> Choisir un fichier..</span></strong></label>
</div>
<button type="submit" class="btn-global"><i style="padding-right: 5px;" class="fa fa-arrow-circle-o-right"></i>M'inscrire</button>
</form>
</div>
</div>
<div class="infos_login_register">
<header>
<p>Un problème ?</p>
</header>
<div class="notes">
<p>Merci d'avoir choisis <a style="font-style: italic;" href="index.php">OpenTheBooks</a>, deux solutions s'offrent à vous !</p>
<ul>
<li>1) Si vous posséder un compte, logiquement vous connecter.</li>
<li>2) Quitter cette page et naviguer sur le site sans authentification</li>
<li>3) Retourner à la page <a href="#" onclick="javascript:history.back();">Précédente</a>.</li>
</ul>
<a href="index.php?module=membres&action=connexion" class="btn-global"><i style="padding-right: 5px;" class="fa fa-arrow-circle-o-right"></i>Me connecter !</a>
</div>
</div>
</div>
</section>
Je vous remercie de l'attention que vous porterz à mon appel en detresse ^^
Bonne soirée à vous et à tres vite, f'in je l'espère.
Merci