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