8768 sujets

Développement web côté serveur, CMS

Bonjour,

Je met en place un cookie sur un de mes projets. Là pas de souci.

Mais j'ai un problème pour ma barre de message qui permet de signaler l'utilisateur sur l'utilisation d'un cookie. La barre est là donc tout va bien.

Le problème

Mais je bloque lorsque je clique sur le bouton acceptez ma barre de signal ne veut pas disparaître voici mon code.... J'ai suivi selon un tuto, mon code est-ce la meilleur solution ?

Auriez vous une autre solution ? ai-je oublié un truck ?

Index.php



<?php 

if(isset($_COOKIE ['accept_cookie'])){

  $showcookie = false;

}else{

  $showcookie = true;

}

?>

<div class="cookie">

<p>
  Mon site utilise des cookies pour vous offrir le meilleur service possible. En continuant votre navigation, vous en acceptez l'utilisation. <a href=''>En Savoir Plus</a>  <a href='accept_cookie.php'> X</button></p>

</div>


accept_cookie.php

<?php

setcookie('cdd', true, time () + 1 * 24 * 60 * 60, '/', null, false, true);

if(isset($_SERVER['HTTP_REFERER']) AND !empty($_SERVER['HTTP_REFERER'])){

		header('Location:'.$_SERVER['HTTP_REFERER']);

} else {

	header('Location:monsite/');

}

?>

Modifié par mvc (10 May 2018 - 11:38)
Ben le soucis à première vue c'est que tu mets bien true ou false dans $showcookie, mais après, tu n'en fais rien de cette variable.

Donc ta page index.php, elle fait ce que tu lui dis de faire. Et pour le moment, tu lui demandes de stocker true ou false dans une variable puis d'afficher une barre.

Si tu veux empêcher que la barre s'affiche, il faut le lui "demander" :


<?php if($showcookie) : ?>
<div class="cookie">

<p>
  Mon site utilise des cookies pour vous offrir le meilleur service possible. En continuant votre navigation, vous en acceptez l'utilisation. <a href=''>En Savoir Plus</a>  <a href='accept_cookie.php'> X</button></p>

</div>
<?php endif; ?>


Petite astuce au passage... Tu peux simplifier ton code de cette façon :

$showcookie = !isset($_COOKIE ['accept_cookie']);

Au lieu d'utiliser if/else, $showcookie prend la valeur inverse de isset($_COOKIE ['accept_cookie'])
Modifié par Charlycoste (10 May 2018 - 15:19)
Modérateur
@charlycoste : Ce code ne risque pas de fonctionner....

@mvc :
Je te donne la solution. À toi de comprendre pourquoi tu as fait des erreurs HTML et PHP.
index.php

<?php if(!isset($_COOKIE['cdd'])): ?>
    <div class="cookie">
        <p>Mon site utilise des cookies pour vous offrir le meilleur service possible. En continuant votre navigation, vous en acceptez l'utilisation. <a href="#">En Savoir Plus</a>  <a href="accept_cookie.php"> X</a></p>
    </div>
<?php endif; ?>
    <div>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fuga, rem vel quisquam recusandae iste fugit facere, id consequuntur consectetur, veritatis vitae amet autem adipisci repellendus corporis dolor minima magni ea!
    </div>


accept_cookie.php

<?php 
    setcookie('cdd', true, time () + 24 * 60 * 60, '/', null, false, true);    
    header('location:'.$_SERVER['HTTP_REFERER']);
?>


Je te conseille d'apprendre le HTML correctement avant de te lancer dans des langages dynamiques. Du moins éditer un code plus propre. Là, ton code HTML et PHP est erroné. À noter que ce genre de chose (acceptation des cookies) se fait plutôt en JS pour éviter de solliciter le serveur pour ça.
Modifié par niuxe (13 May 2018 - 17:48)
Désolé du retard de réponse. En effet ton code fonctionne bien niuxe.

Et oui après réflexion entre vos code et le mien je comprends mieux mes erreurs.

Merci