Mon formulaire ne s'affiche pas (MVC)

Par Playzer, il y a 9 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Bonjour à tous !

J'ai suivi ce cours : https://openclassrooms.com/courses/votre-site-php-presque-complet-architecture-mvc-et-bonnes-pratiques

Je bloque au niveau de la connexion, mon formulaire ne s'affiche pas !

J'ai essayer de recoder tout le truc, ca ne marche pas non, sûrement que l'un d'entre vous aurais déja rencontré ce problème.

Je vous fait parvenir les pages liés à ce soucis :

~/modules/membres/connexion.php

<?php     // Vérification des droits d'accès de la page     if (utilisateur_est_connecte()) {         // On affiche la page d'erreur comme quoi l'utilisateur est déjà connecté         include CHEMIN_VUE.'erreur_deja_connecte.php';     } else {         // Ne pas oublier d'inclure la librairie Form         include CHEMIN_LIB.'form.php';         // "formulaire_connexion" est l'ID unique du formulaire         $form_connexion = new Form('formulaire_connexion');         $form_connexion->method('POST');         $form_connexion->add('Text', 'nom_utilisateur')                        ->label("Votre nom d'utilisateur");         $form_connexion->add('Password', 'mot_de_passe')                        ->label("Votre mot de passe");         // Ajoutons d'abord une case à cocher au formulaire de connexion         $form_connexion->add('Checkbox', 'connexion_auto')                        ->label("Connexion automatique");         // Affichage du bouton de soumission         $form_connexion->add('Submit', 'submit')                        ->value("Connectez-moi !");         // Pré-remplissage avec les valeurs précédemment entrées (s'il y en a)         $form_connexion->bound($_POST);         // Création d'un tableau des erreurs         $erreurs_connexion = array();         // Validation des champs suivant les règles         if ($form_connexion->is_valid($_POST)) {             list($nom_utilisateur, $mot_de_passe) = $form_connexion->get_cleaned_data('nom_utilisateur', 'mot_de_passe');             // On veut utiliser le modèle des membres (~/modeles/membres.php)             include CHEMIN_MODELE.'membres.php';             // combinaison_connexion_valide() est définit dans ~/modeles/membres.php             $id_utilisateur = combinaison_connexion_valide($nom_utilisateur, sha1($mot_de_passe));             // Si les identifiants sont valides             if (false !== $id_utilisateur) {                 $infos_utilisateur = lire_infos_utilisateur($id_utilisateur);                 // On enregistre les informations dans la session                 $_SESSION['id'] = $id_utilisateur;                 $_SESSION['pseudo'] = $nom_utilisateur;                 $_SESSION['avatar'] = $infos_utilisateur['avatar'];                 $_SESSION['email'] = $infos_utilisateur['adresse_email'];                 // Mise en place des cookies de connexion automatique                 if (false != $form_connexion->get_cleaned_data('connexion_auto'))                 {                     $navigateur = (!empty($_SERVER['HTTP_USER_AGENT'])) ?                     $_SERVER['HTTP_USER_AGENT'] : '';                     $hash_cookie =                     sha1('aaa'.$nom_utilisateur.'bbb'.$mot_de_passe.'ccc'.$navigateur.'ddd');                     setcookie( 'id', $_SESSION['id'], strtotime("+1 year"), '/');                     setcookie('connexion_auto', $hash_cookie, strtotime("+1 year"), '/');                 }                 // Affichage de la confirmation de la connexion                 include CHEMIN_VUE.'connexion_ok.php';             } else {             $erreurs_connexion[] = "Couple nom d'utilisateur / mot de passe             inexistant.";             // On réaffiche le formulaire de connexion             include CHEMIN_VUE.'formulaire_connexion.php';             }         }     }

~/modules/membres/view/formulaire_connexion.php

<h2>Connexion au site</h2> <p>Si vous n'êtes pas encore inscrit, vous pouvez le faire en <a href="index.php?module=membres&amp;action=inscription">cliquant sur ce lien</a>.</p> <?php if (!empty($erreurs_connexion)) { echo '<ul>'."\n"; foreach($erreurs_connexion as $e) { echo ' <li>'.$e.'</li>'."\n"; } echo '</ul>'; } echo $form_connexion;

On dirait que c'est en rapport avec ce code :

include CHEMIN_VUE.'formulaire_connexion.php';

config.php

<?php // Identifiants pour la base de données. Nécessaires a PDO2. define('SQL_DSN', 'mysql:dbname=openthebooks;host=localhost'); define('SQL_USERNAME', 'root'); define('SQL_PASSWORD', ''); // Chemins à utiliser pour accéder aux vues/modeles/librairies $module = empty($module) ? !empty($_GET['module']) ? $_GET['module'] : 'index' : $module; define('CHEMIN_VUE', 'Module/'.$module.'/View/'); define('CHEMIN_MODELE', 'Model/'); define('CHEMIN_LIB', 'Libs/'); // Largeur et hauteur défini à l'avatar define('AVATAR_LARGEUR_MAXI', 100); define('AVATAR_HAUTEUR_MAXI', 100);

Je vous remercie de votre aide,
merci d'avance.
Guillaume

5 réponses

Lartak, il y a 9 ans

Bonjour.
Suis cette formation et utilises là : Formations PHP » Débogguer son code.
Donnez-nous des erreurs quand vous en avez, car là j'ai regardé le code que tu nous montres et tu en a forcément, au moins une en tout cas.

Playzer, il y a 9 ans

Je te remercie je viens de résoudre mon soucis.
Pour éviter le double posts, j'ai un soucis au niveau de mon traitement, il ne m'affiche pas les erreurs de mon formulaire
inscription.php

// Traitement de formulaire // Vérifier la longueur du nom d'utilisateur if (strlen($nom_utilisateur) < 5) { $erreurs_inscription[] = "Le nom d'utilisateur ".$nom_utilisateur." saisi doit se composer d'un minimum de 5 caractères."; } // Vérifier que le nom d'utilisateur ne soit pas pris if (!verif_nom_utilisateur($nom_utilisateur)) { $erreurs_inscription[] = "Le nom d'utilisateur ".$nom_utilisateur." est déjà utilisé."; } // Vérifier la longueur du mot de passe if (strlen($mot_de_passe) < 5) { $erreurs_inscription[] = "Le mot de passe saisi doit se composer d'un minimum de 5 caractères."; } // Vérifier que les deux mots de passe concordent if ($mot_de_passe != $mot_de_passe_confirm) { $erreurs_inscription[] = "Les deux mots de passe saisis ne concordent pas."; } // Vérifier la validité de l'adresse email if (empty($adresse_email) || !filter_var($adresse_email, FILTER_VALIDATE_EMAIL)) { $erreurs_inscription[] = "L'adresse email ".$adresse_email." n'est pas valide."; }

formulare_inscription.php

<?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 (!empty($erreurs_inscription)): ?> <ul> <?php foreach ($erreurs_inscription as $e): ?> <li><?php echo $e; ?></li> <?php endforeach; ?> </ul> <?php endif; ?> <div class="main_connexion"> <header> <p>Inscription</p> </header> <div class="formulaire"> <?php echo $form_inscription; ?> </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">Me connecter !</a> </div> </div> </div> </section>
Playzer, il y a 9 ans

J'ai fais un var_dump de mes erreurs en faisant exprès de faire des erreurs dans mon formulaire et il m'indique aucune erreur...

Lartak, il y a 9 ans

A quel endroit de ton code as tu placé ton var_dump?

Playzer, il y a 9 ans

Au moment de l'affichage des erreurs sur le formulaire_inscription