Bonsoir, j'ai commencé un projet et j'en suis au développent de l'inscription et un problème s'oppose à moi

j'ai suivi l'exemple de gestion d'erreurs de Grafikart et donc j'aimerais que quand il n'y a pas d"erreur on commence le traitement du formulaire mais bon voilà je suis bloqué ..

inscription.php

<?php
    require 'app/includes.php';
    $title = 'S\'enregistrer';

    // Traitement du formulaire
        // ...

    require 'partials/header.php';
?>

    <div class="page-header">
        <h3>
            <i class="fa fa-user"></i>
            S'enregistrer
        </h3>
    </div>

    <?php if(array_key_exists('errors', $_SESSION)): ?>
        <div class="alert alert-danger">
            <?= implode('<br>', $_SESSION['errors']); ?>
        </div>
    <?php
        unset($_SESSION['errors']);
        endif; 
    ?>

    <form action="app/post/register.php" method="post">
        <div class="form-group">
            <label for="identifiant">
                Votre identifiant
            </label>
            <input type="text" name="identifiant" id="identifiant" class="form-control">
        </div>
        <div class="form-group">
            <label for="password">
                Votre mot de passe
            </label>
            <input type="password" name="password" id="password" class="form-control">
        </div>
        <div class="form-group">
            <label for="password-repeat">
                Confirmation de votre mot de passe
            </label>
            <input type="password" name="password-repeat" id="password-repeat" class="form-control">
        </div>
        <div class="form-group">
            <label for="email">
                Votre adresse e-mail
            </label>
            <input type="text" name="email" id="email" class="form-control">
        </div>
        <button type="submit" class="btn btn-success btn-lg btn-block">
            <i class="fa fa-check"></i>
            S'enregistrer
        </button>
    </form>

<?php require 'partials/footer.php'; ?>

post/inscription.php

<?php
    $errors = [];

    if(!array_key_exists('identifiant', $_POST) || $_POST['identifiant'] == '')
    {
        $errors['identifiant'] = "Vous n'avez pas renseigné votre identifiant";
    }

    if(strlen($_POST['identifiant']) < 5)
    {
        $errors['identifiant'] = "Votre identifiant est trop court, il doit contenir au minimum 5 caractères";
    }

    if(!array_key_exists('password', $_POST) || $_POST['password'] == '')
    {
        $errors['password'] = "Vous n'avez pas renseigné votre mot de passe";
    }

    if(strlen($_POST['password']) < 8)
    {
        $errors['password'] = "Votre mot de passe est trop court, il doit contenir au minimum 8 caractères";
    }

    if(!array_key_exists('password-repeat', $_POST) || $_POST['password-repeat'] != $_POST['password'])
    {
        $errors['password-repeat'] = "Vous n'avez pas bien confirmé votre mot de passe";
    }

    if(!array_key_exists('email', $_POST) || $_POST['email'] == '' || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
    {
        $errors['email'] = "Vous n'avez pas renseigné une adresse e-mail valide";
    }

    if(!empty($errors))
    {
        session_start();
        $_SESSION['errors'] = $errors;
        header('Location: ../../register.php');
    }else{
        header('Location: ../../register.php');
    }
?>

donc quand on clique sur submit, on vérifie les champs avec la $_SESSION errors et si il n'y a pas d'erreurs on nous renvoient sur inscription.php qui va ensuite faire l'enregistrement

9 réponses


Précise quel est l'érreur pour savoir situer la zone à analyser ^^

SmyDrowl
Auteur

ce n'est pas une erreur mais plutot trouver une solution à ce que je veux faire :/

Pour plus de clareté je t'invite à, au minimum faire une fichier functions.php dans lequel tu vas mettre tes functions pour vérifier les champs et les appeler à tour de rôle.
VerifEmail($POST['EMAIL']); //
VerifLength($POST['password']); //

Après tu n'as pas vraiment d'autre choix que de faire ton if(!empty(session...) pour faire ta redirection en cas d'erreur et mettre le traitement en cas d'informations valides dans le else { } (en ce moment tu redirect vers ta page register...)
La où tu as l'air de caler c'est que tu veux rediriger à tout prix vers ta page formulaire... Alors que tu en as plus besoin puisque tes données introduites sont valides :)
Tu peux faire ta requete d'enregistrement et rediger vers une page qui informe que tout s'est bien passé :)

Bonsoir,

Je vous invite à consulter le Tutoriel sur les formulaires qui vous aideras à réaliser ce que vous souhaitez.

déjà pour commencer

<form action="app/post/register.php" method="post">

alors que ton fichier s'appelle post/inscription.php ?

Ensuite, où est la condition qui vérifie que le formulaire est posté ?

Salut,
ton statut n'est pas assez détaillé, et ne donne pas envie de t'aider, nous ne sommes pas là pour faire ton code..

SmyDrowl
Auteur

faut savoir être capable de comprendre ce que je demande je peut pas mieux détaillé ;)

Il faut aussi savoir se débrouiller tout seul hein ;)
Si tu as suivi des tutoriels php, notamment celui sur la gestion d'un espace membre présent sur le site tu ne devrais pas avoir de soucis.

Bout de code posté sur un sujet juste à côté de celui-ci...

$error_message = '':
if( condition_non_respecte )
{
    $error = TRUE;
    $error_message .= 'Votre identifiant est trop court<br />';
}

if( $error === FALSE )
{
    //  On lance la procédure d'inscription
}
else
{
    //  On affiche les erreurs
}

Vérifie ta variable session avec un var_dump ^^ ($_SESSION['errors']) si elle est vide, problème sur ton traitement, sinon problème pour l'afficher.
Lorsque tu rencontres ce type de pb, var_dump t'aideras toujours à trouver où se trouve l'erreur.