Bonjour,

Voila je rencontre un petit problème avec mon code et je recherche un peu d'aide.
Voici mon problème.
J'ai créé une page article où en fin de page j'aimerais inclure des commentaires.
Ce module donne deux affichages (quand on est loggué précédemment et qd on ne l'est pas)

voici ma page de test : https://www.amiibo-collection.com/article_dev.php?id=1

Si on est loggué, aucun souci, je peux faire mon ajout de commentaires, on voit le texte, soin avatar et celui qui l'a posté.

Mais c'est quand on ne l'est pas et que je propose à mon utilisateur de se connecter.
Lorsque j'envoie le formulaire en 2 champs, la page plante et il faut que je refresh la page (F5) pour que le log se fasse.
J'aimerais que lorsque je clique sur ce bouton login, je puisse me connecter sans souci et que je puisse poser mon commentaire.

Voici l'architecture de ma phase de log

<?php 
if($_SESSION['auth']->actif_user == 'oui' ){ 

 if(!empty($_POST)){
   $errors = array();
     if(empty($_POST['content_commentaire'])){
         $errors['content_commentaire'] = "Vous n'avez pas posté de commentaire valide'";
     }
     if(empty($_POST['controle']) || $_POST['controle'] != $_POST['verifControle']){
         $errors['controle'] = "Vous n'avez pas indiqué le bon amiibo";
         }
     if(empty($errors)){
       $req = $pdo->prepare("INSERT INTO t_commentaire SET content_commentaire = ?, ref = ?, ref_id = ?, add_user = ?, date_commentaire  = ?");
       $req->execute(array($_POST['content_commentaire'], $ref, $ref_id, $_SESSION['auth']->id_user, $date));
       echo "<div class='alert alert-info'>Vous avez ajouté un nouveau commentaire  sur le site</div>";
       header('Location: index.html');
       } 
 }
?>

// Code pour mes ajouts de commentaires

<?php 
if(!empty($errors)):?>
<div class="alert alert-danger">
<p><img src="images/icon/alert_16x16.png" alt=""> Vous n'avez pas rempli le formulaire correctement</p>

        <?php foreach($errors as $error): ?>
            <?= $error ?><br>
        <?php endforeach; ?>

</div>
<?php endif; ?>

<div id="formulaire"></div>
<form action="#moduleCommentaire" method="POST">
<div class="form-group"> <p style="margin:5px 0 0 5px;">Votre pseudo : <?= $_SESSION['auth']->login_user; ?> <span style="font-size: 12px; font-style: italic;">(Ce n'est pas vous ? <a href="se-deconnecter.html" border="0"><img src="images/icon/icon_logout_white.png" alt="" style="width:20px;"></a>)</span>
    <input style="float:right;margin-bottom:15px;" type="text" name="controle" value="" size="60" placeholder="Quel est le tout premier amiibo ?" required /></p>
    <input type="hidden" name="verifControle" value="Mario"/>
</div>  

<div class="form-group"> 
    <textarea name="content_commentaire" id="commentaire" class="form-control" placeholder="Donnez votre avis en commentaire" ></textarea>  
</div>
<div class="form-group">
    <input type="hidden" name="actif_commentaire" value="oui"/>
</div>
<button type="submit" class="btn_register">Je poste mon commentaire</button>
<div id="clear"></div>
</form> 
<?php } else { 
include('inc/commentaire/login-commentaire.php');
} 
?>

et donc mon fichier login-commentaire.php

<?php 
if(!empty($_POST) && !empty($_POST['login_user']) && !empty($_POST['passwd_user'])){
    require_once 'db.php';
    $req = $pdo->prepare('SELECT * FROM t_user WHERE (login_user = :login_user OR email_user = :login_user) AND confirmed_date_user IS NOT NULL');
    $req->execute(array('login_user' => $_POST['login_user']));
    $user = $req->fetch();
    if($user == null){
        $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrect';
    }elseif(password_verify($_POST['passwd_user'], $user->passwd_user)){
        $_SESSION['auth'] = $user;
        $_SESSION['flash']['success'] = 'Vous êtes maintenant connecte';
        if($_POST['remember']){
            $remember_token = str_random(250);
            $pdo->prepare("UPDATE t_user SET remember_token = ? WHERE id_user = ?")->execute(array($remember_token, $user->id_user));
            setcookie('remember', $user->id_user.'=='.$remember_token.sha1($user->id_user.'amiiboActu'), time() + 60 * 60 * 24 * 7);
            }
        header('Location: index.html');
        exit();
    }else{
        $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrect';
    }
}
?>
<form action="" method="POST">
    <h3>Pour commenter, vous devez vous identifier</h3>
<div class="form-group">
    <input type="text" name="login_user" id="pseudo" class="form-control" placeholder="Login ou email">
</div>
<div class="form-group">
    <input type="password" name="passwd_user" id="pass" class="form-control" placeholder="Mot de passe">
</div>
<div class="form-group">
    <label>
        <input type="checkbox" name="remember" value="1" /> Se souvenir de moi
    </label>
</div>
<p align="center">
    <button type="submit" class="btn_register">Se connecter</button>
</p>
<p><a href="s-inscrire.html" title="Je m'inscris sur le site amiibo-collection.com">Toujours pas inscrit ? Je crée mon compte >></a></p>
</form>

Je n'arrive pas à comprendre où ça peut pêcher.
Si quelqu'un aurait une petite aide ou me dire vers où m'orienter.
Je pense que le souci vient de la page login-commentaire mais où après..
Merci par avance

Cordialement

5 réponses


Bonsoir,
Définir "la page plante" ?
As-tu activés l'affichages des erreurs PDO et PHP ?
Pourquoi faire une redirection vers "index.html" ? ça serait plutôt vers cette même page afin d'afficher les commentaires

j'ai mis en place le var_dum ($pdo)
Je tombe sur ce message : object(PDO)#3 (0) { }
Est-ce une erreur ?
Cordialement

var_dump permet d'afficher le contenu d'une variable, cela n'affiche pas les erreurs

ça m'aide pas bcp xD
Je suis pas assez calé en fait
Auj j'ai passé par mal de tps à mettre, enlever, reformuler
j'arrive pas à trouver pkoi j'arrive pas à logguer normalement (même en supprimant les header location)
Je vais continuer de chercher en espérant qu'une bonne âme m'éclaire :p
Cordialement