Problème avec l'affichage de mes différentes erreurs.

Par Alexis Hanne, il y a 10 ans


Bonjour,

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

Ce que je fais

Je cherche à afficher mes erreurs lorsqu'un utilisateur se trompe en entrant ses différents champs dans la rubrique inscription.
J'ai un problème au niveau de mes erreurs. Ils ne me les affichent pas. Voici le code pour mieux comprendre.

```<?php if(isset($errors) && count($errors) != 0){ echo '<div class="alert alert-danger"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">$times;</button>' foreach($errors as $error){ echo $error.'<br/>'; } echo '</div>'; }

19 réponses

Alexis Hanne, il y a 10 ans

Oui mais celà ne résout en aucun cas mon problème.

Gaspard, il y a 10 ans

On peut voir le fichier qui créé les erreurs ?

Cordialement,
Gasp.

Alexis Hanne, il y a 10 ans
<?php require('includes/fonction.php'); require('config/database.php'); if(isset($_POST['register'])){ if(not_empty(['name', 'pseudo', 'email', 'password', 'password_confirm'])){ $errors = []; if(mb_strlen($_POST['pseudo']) < 3){ $errors[] = "Pseudo trop court minimun 3 caractères!"; } if(filter_var($_POST['pseudo'], FILTER_VALIDATE_EMAIL)){ $errors[] = "Adresse email invalide !"; } if(mb_strlen(($_POST['password']) < 6)){ $errors[] = "Mot de passe trop court minimun 6 caractères!"; }else{ if(($_POST['pseudo']) != ($_POST['pseudo'])){ $errors[] = "Les deux mot de passe ne correspondent pas !"; } } if(is_already_in_use('pseudo', ($_POST['pseudo']), 'users')){ $errors[] = "Pseudo déjà utilisé"; } if(is_already_in_use('email', ($_POST['email']), 'users')){ $errors[] = "Email déjà utilisé"; } if(count($errors) == 0){ $to = ($_POST['email']); $subject = "Réseau social - Activation du compte"; $token = sha1(($_POST['pseudo']).($_POST['email']).($_POST['password'])); ob_start(); require('templates/emails/activation.tmpl.php'); $content = ob_get_clean(); $headers = 'MINE-Version: 1.0' . "\r\n"; $headers .= 'Content-type: test/html; charset=iso-8859-1'. "\r\n"; mail($to, $subject, $content, $headers); echo "Mail d'activation envoye"; } }else{ $errors[] = "Veuillez remplir tous les champs !"; } } ?> <?php require('views/register.view.php'); ?>
Laznet, il y a 10 ans

Pourquoi utilise-tu une fonction "not_empty" ? Alors que tu pourrais juste utilise ceci

if(!empty(...)){ //Mon code }
Alexis Hanne, il y a 10 ans

Mon register.view ou il me dit qu'il ne reconnait pas mes partials

<?php $title = "Inscription"; ?> <?php include('partials/_header.php'); ?> <div id="main-content" > <div class="container"> <h1>Devenez membre à présent !</h1> <?php include('partials/_errors.php') ?> <form method="post" class="well col-md-6"> <form method="post"> <!-- Name Field --> <div class="form-group"> <label class="control-label" for="name">Nom : </label> <input type="text" class="form-control" id="name" name="name" required="required"> </div> <!-- Pseudo Field --> <div class="form-group"> <label class="control-label" for="pseudo">Pseudo : </label> <input type="text" class="form-control" id="pseudo" name="pseudo" required="required"> </div> <!-- Email Field --> <div class="form-group"> <label class="control-label" for="email">Adresse Mail : </label> <input type="email" class="form-control" id="email" name="email" required="required"> </div> <!-- Password Field --> <div class="form-group"> <label class="control-label" for="password">Mot de passe : </label> <input type="password" class="form-control" id="password" name="password" required="required"> </div> <!-- Password Confirmation Field --> <div class="form-group"> <label class="control-label" for="password_confirm">Confirmer votre mot de passe : </label> <input type="password" class="form-control" id="password_confirm" name="password_confirm" required="required"> </div> <input type="submit" class="btn btn-primary" value="Inscription" name="register"/> </form> </div> </div> <?php include('partials/_footer.php'); ?>
Gaspard, il y a 10 ans

Un var_dump sur la page qui créé ton tableau d'erreurs te renvoie quoi ?

Laznet, il y a 10 ans

Ca ne va sans doute pas résoudre ton problème, mais je tiens a te dire que au moment où tu cherche a savoir si l'e-mail est valide. Tu passe ta condition sur $_POST['pseudo']; ce qui n'est pas voulu ^^

Pareil pour les mots de passe ^^.

if(filter_var($_POST['pseudo'], FILTER_VALIDATE_EMAIL)){ $errors[] = "Adresse email invalide !"; } et if(($_POST['pseudo']) != ($_POST['pseudo'])){ $errors[] = "Les deux mot de passe ne correspondent pas !"; }
Laznet, il y a 10 ans

Il y a pas mal d'erreur dans les codes que tu nous montre.

Par exemple dans le tout premier que (celui ou tu affiche l'erreur), tu as oublier un ;.

Veille bien à corriger tout ces petit détails.

kwik, il y a 10 ans

Tu n'as pas bien suivis le tuto des TDN, moi même étant débutant j'ai trouvais pas mal d'erreurs dans ton code juste en jetant un oeil. Tu devrais relire ton code genre :

Ligne 19 : Si le pseudo à le format d'une email tu affiches "Adresse email invalide". Sa n'a pas vraiment de sens. Ca devrais plutot être :

// Si l'adresse email n'a pas un format valide if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { $errors[] = "Adresse email invalide !"; }

Ligne 30: Si le pseudo est différent du pseudo tu affiches "Les deux mot de passe ne correspondent pas!".

// Si le password est différent de password_confirm if ($_POST['password'] != $_POST['password_confirm']) { $errors[] = "Les deux mot de passe ne correspondent pas !"; }
Gaspard, il y a 10 ans

Le fait est que toutes ces petites erreurs ne remplissent peut-être pas ton tableau d'erreurs, et donc n'affiche pas correctement le tableau derrière..

Alexis Hanne, il y a 10 ans

Donc pour continuer je tiens à dire que mon problème n'est pas résolu car dans chaque```<?php include('partials/_header.php'); ?>

Gaspard, il y a 10 ans

Quand tu lances ta page (où tu inclus tes partials), avec ton PHP qui affiche les Warning, ça te met quoi ?

Alexis Hanne, il y a 10 ans

Gaspard, il y a 10 ans

Tu ne vas donc pas chercher tes fichiers dans le bon dossier..

Peux t-on avoir la hiérarchie de tes différents fichiers/dossiers ?

As-tu un router ou quelque chose comme ça qui appelle tes fichiers ?

Cordialement,
Gasp.

Alexis Hanne, il y a 10 ans


Voilà Pour info j'utilise wanp

Gaspard, il y a 10 ans

Le chemin de ton "register.view.php" c'est /templates/register.view.php ?

Si oui, alors il faut que tu mettes include('../partials/_header.php');

Cordialement,
Gasp.

Alexis Hanne, il y a 10 ans

Non mon "register.view.php" c'est views/register.view.php si je met la ligne qe tu m'as dit de mettre cela va changer quoi avec l'autre ?

kwik, il y a 10 ans

Ton erreur indique qu'il n'arrive pas a accédé au fichier errors.php

Tu cherches a inclure le fichier _errors.php alors que dans ton fichier il est appélé errrors.php. Donc il te suffis de renommer ton fichier correctement ;)

Gaspard, il y a 10 ans

Bien vu kwik ! :)