Bonjour,
Voila je rencontre un petit problème avec mon code.
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>';
}
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 ;)
<?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'); ?>
Pourquoi utilise-tu une fonction "not_empty" ? Alors que tu pourrais juste utilise ceci
if(!empty(...)){
//Mon code
}
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'); ?>
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 !";
}
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.
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 !";
}
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..
Donc pour continuer je tiens à dire que mon problème n'est pas résolu car dans chaque```<?php include('partials/_header.php'); ?>
Quand tu lances ta page (où tu inclus tes partials), avec ton PHP qui affiche les Warning, ça te met quoi ?
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.
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.
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 ?