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
Bonjour,
$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']);
Change les $_GET en $_POST
Bonjour.
AlexJM t'a donné la réponse à ton problème.
Par contre, lorsque quelqu'un vous conseille de suivre une formation du site, ce n'est pas pour rien.
Vous pourriez donc au moins prendre en considération ces conseils, car dans un autre de tes sujets je t'avais conseillé de suivre la Formation PHP » Débogguer son code PHP et si tu regardes dans les chapitres de la formation, il y en a justement un qui se nomme Notice : Undefined index.
En conclusion, si tu avais suivi la formation comme il te l'avait été conseillé, en plus de pouvoir trouver une solution pour cet autre sujet, tu aurais pu trouver la solution pour celui-ci aussi.
Pour ce qui concerne la dernière ligne d'erreur, c'est parce que tu ne réfléchis pas à ce que tu codes.
Une fonction qui se trouve dans une classe ne s'utilises pas de cette manière, et si tu ne stockes pas ce que te retourne celle-ci dans une variable, c'est comme-ci tu ne faisais absolument rien.
Fais donc en sorte de comprendre un minimum ce que tu codes et de venir demander de l'aide uniquement quand tu as déja fais sufisamment de recherches auparavent.
Bonjour
AlexJm, je te remercie j'ai dû aller trop vite alors je n'ai aps fais attention et comme hier soir j'ai pas eu trop le temps de y regarder vu que j'ai eu une urgence donc je n'ai aps pu y jeter un coup d'oei.En effet je n'ai pas fais attention.
Lartak : Au sujet de cette formation : Formation PHP » Débogguer son code PHP, je l'ai aps regarder en entier, donc je peux pas tout suivre non plus. Je vais plus m'y pencher.Je vais aussi de même revoir mes cours sur le php, pour tout revoir afin d'éviter de demander de l'aide pour rien.
Je vous remercie et je m'excuse d'avoir créer ce post inutilement.
Passer une bonne journée :)