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


Playzer
Auteur
Réponse acceptée

Au moment de l'affichage des erreurs sur le formulaire_inscription

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
Auteur

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
Auteur

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...

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