Bonjour,

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

function forgot_pass(){

    if ($_SERVER["REQUEST_METHOD"] == "POST") {

        global $db;
        $email = $_POST['email'];
        $messages = [];

        if (!empty($email)) {

            if (exist($email,'email')) {
                $sql = "SELECT * FROM users WHERE email = ? AND confirmed_at IS NOT NULL";

                $q = $db->prepare($sql);
                $q->execute([$email]);
                $check = $q->fetch();
                if ($check) {
                    //Envoie du mail d'activation

                    $subject = "CONFIRMATION DE VOTRE COMPTE";
                    $msg = "Afin de valider votre compte merci de cliquer sur ce lien ci-dessous\n\nhttp://localhost/lost/?p=active&?id=$user_id&token=$token";

                    $headers = "From: contact@losthing.cm";

                    send_email($email,$subject,$msg,$headers);

                    //Message de succes
                    $messages['success'] = "Vous pouvez reinitialisé votre mot de passe";
                    return $messages;
                }else {
                    //Message d'erreur'
                    $messages['erreur'] = "Votre compte n'est pas encore activé.veiller l'activer en suivant : <a href='?p=reactive'>ce lien</a>";
                    return $messages;
                }
            }else {
                    //Message d'erreur'
                    $messages['erreur'] = "Le compte associé cette adresse email n'existe pas.veiller le  <a href='?p=register'>créer</a> s'il vous plait";
                    return $messages;
            }
        }
    }

}

Mon appelle dans un autre fichier

<?php forgot_pass(); ?>
<?php foreach ($messages as $key => $message): ?>
      <div class="col s12 l4 offset-l4">
          <div class="card-panel <?= ($key == "success") ? 'green' : 'red' ; ?>">
            <span class="white-text"><?= $message; ?></span>
          </div>
      </div>
<?php endforeach; ?>

j'ai des erreurs disant Undefined variable: messages in C et Invalid argument supplied for foreach()
que puis-je faire parce que là depuis je ne vois pas trop.
merci d'avance

1 réponse


Carouge10
Réponse acceptée

Bonsoir,
Simple, il faut récupérer le résultat de la fonction.

$messages = forgot_pass();