Pb suppression cookie

Fermé
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 - 27 déc. 2016 à 22:00
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 - 29 déc. 2016 à 09:29
Bonsoir,
sur mon site j'ai une page d'options qui pour pouvoir stoquer les paramètres de mes visiteurs créée des cookies.
J'aimerais proposer un bouton pour réinitialiser la config de base.
J'ai donc fais le code suivant :

<input type="submit" value="réinitialiser" <?php setcookie('menu', time() - 365*24*3600); setcookie('fontsize', time() - 365*24*3600); setcookie('littlescreen', time() - 365*24*3600); ?> />


mais ça ne fonctionne pas.

Que faire ?

Merci.
A voir également:

6 réponses

yg_be Messages postés 22770 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 mai 2024 1 481
27 déc. 2016 à 22:18
Tu peux montrer le code complet de la page d'options?
Cela nous permettra de proposer comment ajouter l'option "réinitialiser".
0
NHenry Messages postés 15115 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 8 mai 2024 331
27 déc. 2016 à 22:52
Juste un doute :

Pour rappel, le code PHP est exécuté avant que la page ne soit envoyé au client, donc là, tu vides d'abord le cookie avant d'envoyer la page, donc le fait d'afficher la page supprime le cookie.
0
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 8
Modifié par NHenry le 28/12/2016 à 08:49
Salut à vous 2.
Voici le code complet avec donc la ligne de code expérimentale que j'avais mise pour le bouton de réinitialisation :

<?php
$log = '';
if(isset($_GET['act']) and $_GET['act'] == 'form') {
if(isset($_POST['menu']))
 setcookie('menu', $_POST['menu'], time() + 365*24*3600, null, null, false, true);
if(isset($_POST['fontsize']))
 setcookie('fontsize', $_POST['fontsize'], time() + 4*365.25*24*3600, null, null, false, true);
if(isset($_POST['littlescreen'])) {
 if($_POST['littlescreen'] == 'on')
  setcookie('littlescreen', '1', time() + 4*365.25*24*3600, null, null, false, true);
 else
  setcookie('littlescreen', '0', time() + 4*365.25*24*3600, null, null, false, true);
}
header('Location: /');
}
if(isset($_GET['act']) and $_GET['act'] == 'ok')
 $log = 'ok';
set_include_path($_SERVER['DOCUMENT_ROOT']);
include("inclus/consts.php");
$titre="Options"; ?>
<!doctype html>
<html lang="fr">
<head>
<?php include("inclus/header.php"); ?>
</div>
<?php include("inclus/menu.php"); ?>
<hr />
<h3 id="menupage">Sommaire de la page</h3>
<a href="#contenu" rel="nofollow noopener noreferrer" target="_blank">Ignorer le sommaire de cette page</a>
<ul>
<li><a href="#listed" rel="nofollow noopener noreferrer" target="_blank">Choisir le style de menu</a></li>
<li><a href="#tllplc" rel="nofollow noopener noreferrer" target="_blank">Choisir la taille de la police</a></li>
<li><a href="#petit" rel="nofollow noopener noreferrer" target="_blank">Choisir l'adaptation du site pour les petits écrans</a></li>
</ul>
</div>
<hr />
<div id="container" role="main">
<h1 id="contenu"><?php print $titre; ?></h1>
<p>Cette page vous donne accès à quelques options pour personnaliser le site à votre guise.<br />
Les cookies doivent être activés dans votre navigateur pour que cela prenne effet.
</p>
<form action="?act=form" method="post">
<?php
$menu = isset($_COOKIE['menu']) ? $_COOKIE['menu'] : 'select';
$littlescreen = isset($_COOKIE['littlescreen']) ? $_COOKIE['littlescreen'] : 0;
?>
<a id="listed"></a>
<label for="choix_menu">Style du menu:</label>
<select name="menu" id="choix_menu">
<option  value="select" id="ld" <?php if($menu == "select") echo "selected='selected'"; ?> > 
Liste déroulante (par défaut)</option>
<option  value="ulli" id="lp" <?php if ($menu == "ulli" ) echo "selected='selected'"; ?> > 
Liste de liens</option>
</select>
<hr />
<a id="tllplc"></a>
<label for="f_fontsize">Taille de la police:</label>
<?php if(isset($_COOKIE['fontsize'])) $fontsize = $_COOKIE['fontsize']; else $fontsize = '16'; ?>
<select id="f_fontsize" name="fontsize"><option value="11" style="font-size: 11px;" <?php if($fontsize=='11')echo'selected';?>>11: Petit</option><option value="16" style="font-size: 16px;" <?php if($fontsize=='16')echo'selected';?>>16: Normal (par défaut)</option><option value="20" style="font-size: 20px;" <?php if($fontsize=='20')echo'selected';?>>20: Grand</option><option value="24" style="font-size: 24px;" <?php if($fontsize=='24')echo'selected';?>>24: Très grand</option></select><hr />
<a id="petit"></a>
<label for="littlescreen">Mode petit écran:</label>
<input type="checkbox" id="littlescreen" name="littlescreen"<?php if($littlescreen==1)echo ' checked="checked"'; ?> /><hr />
<input type="submit" value="Valider" /> <br />
<input type="submit" value="réinitialiser" <?php setcookie('menu', time() - 365*24*3600); setcookie('fontsize', time() - 365*24*3600); setcookie('littlescreen', time() - 365*24*3600); ?> />
</form>
<hr />
<ul>
<li><a href="#menusite" rel="nofollow noopener noreferrer" target="_blank">Retour au menu global</a></li>
<li><a href="#menupage" rel="nofollow noopener noreferrer" target="_blank">Retourner au sommaire de la page</a></li>
</ul>
</div>
<?php include("inclus/footer.php"); ?>
</body>
</html>


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


merci d'avance !
Amicalement! Corentin.
0
yg_be Messages postés 22770 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 mai 2024 1 481
28 déc. 2016 à 09:23
Je pense que ce serait plus simple d'avoir un checkbox "réinitialisation" dans le formulaire, et, dans la page php, tester si ce checkbox est actif, et, dans ce cas, changer les cookies.
0
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 8
28 déc. 2016 à 14:34
Euh, oui, sûrement raison.
Mais, je sais pas trop faire ça, enfin, je peux tenter mais pourrais-tu me donner un petit exemple de code stp ?
Merki.
0
yg_be Messages postés 22770 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 mai 2024 1 481
28 déc. 2016 à 15:30
Tu peux t'inspirer de ce que tu fais pour "littlescreen" : tu offres une checkbox, et, si elle est cochée, le php agit en conséquence.
Tu pourrais donc ajouter une checkbox "réinitialisation", et, si elle est cochée, faire le code que tu proposes.
C'est possible aussi avec le bouton submit tel que tu le proposes, à condition de donner un nom au bouton submit, ce qui te permettra de le tester au retour et d'agir en conséquence.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 8
Modifié par NHenry le 28/12/2016 à 16:29
Euh, j'ai dû faire une gaffe :(

j'ai fais ça :

<?php
$log = '';
if(isset($_GET['act']) and $_GET['act'] == 'form') {
if(isset($_POST['menu']))
 setcookie('menu', $_POST['menu'], time() + 365*24*3600, null, null, false, true);
if(isset($_POST['fontsize']))
 setcookie('fontsize', $_POST['fontsize'], time() + 4*365.25*24*3600, null, null, false, true);
if(isset($_POST['littlescreen'])) {
 if($_POST['littlescreen'] == 'on')
  setcookie('littlescreen', '1', time() + 4*365.25*24*3600, null, null, false, true);
 else
  setcookie('littlescreen', '0', time() + 4*365.25*24*3600, null, null, false, true);
}
if(isset($_POST['reinitialise'])) {
if($_POST['littlescreen'] == 'on')
setcookie('menu', time() - 365*24*3600); setcookie('fontsize', time() - 365*24*3600); setcookie('littlescreen', time() - 365*24*3600);
else
}
header('Location: /');
}
if(isset($_GET['act']) and $_GET['act'] == 'ok')
 $log = 'ok';
set_include_path($_SERVER['DOCUMENT_ROOT']);
include("inclus/consts.php");
$titre="Options"; ?>
<!doctype html>
<html lang="fr">
<head>
<?php include("inclus/header.php"); ?>
</div>
<?php include("inclus/menu.php"); ?>
<hr />
<h3 id="menupage">Sommaire de la page</h3>
<a href="#contenu" rel="nofollow noopener noreferrer" target="_blank">Ignorer le sommaire de cette page</a>
<ul>
<li><a href="#listed" rel="nofollow noopener noreferrer" target="_blank">Choisir le style de menu</a></li>
<li><a href="#tllplc" rel="nofollow noopener noreferrer" target="_blank">Choisir la taille de la police</a></li>
<li><a href="#petit" rel="nofollow noopener noreferrer" target="_blank">Choisir l'adaptation du site pour les petits écrans</a></li>
</ul>
</div>
<hr />
<div id="container" role="main">
<h1 id="contenu"><?php print $titre; ?></h1>
<p>Cette page vous donne accès à quelques options pour personnaliser le site à votre guise.<br />
Les cookies doivent être activés dans votre navigateur pour que cela prenne effet.
</p>
<form action="?act=form" method="post">
<?php
$menu = isset($_COOKIE['menu']) ? $_COOKIE['menu'] : 'select';
$littlescreen = isset($_COOKIE['littlescreen']) ? $_COOKIE['littlescreen'] : 0;
?>
<a id="listed"></a>
<label for="choix_menu">Style du menu:</label>
<select name="menu" id="choix_menu">
<option  value="select" id="ld" <?php if($menu == "select") echo "selected='selected'"; ?> > 
Liste déroulante (par défaut)</option>
<option  value="ulli" id="lp" <?php if ($menu == "ulli" ) echo "selected='selected'"; ?> > 
Liste de liens</option>
</select>
<hr />
<a id="tllplc"></a>
<label for="f_fontsize">Taille de la police:</label>
<?php if(isset($_COOKIE['fontsize'])) $fontsize = $_COOKIE['fontsize']; else $fontsize = '16'; ?>
<select id="f_fontsize" name="fontsize"><option value="11" style="font-size: 11px;" <?php if($fontsize=='11')echo'selected';?>>11: Petit</option><option value="16" style="font-size: 16px;" <?php if($fontsize=='16')echo'selected';?>>16: Normal (par défaut)</option><option value="20" style="font-size: 20px;" <?php if($fontsize=='20')echo'selected';?>>20: Grand</option><option value="24" style="font-size: 24px;" <?php if($fontsize=='24')echo'selected';?>>24: Très grand</option></select><hr />
<a id="petit"></a>
<label for="littlescreen">Mode petit écran:</label>
<input type="checkbox" id="littlescreen" name="littlescreen"<?php if($littlescreen==1)echo ' checked="checked"'; ?> /><hr />
<input type="checkbox" id="reinitialise" name="reinitialise" <?php if($reinitialise==1) echo "checked='checked'"; ?> /><hr />
<input type="submit" value="Valider" /> <br />
</form>
<hr />
<ul>
<li><a href="#menusite" rel="nofollow noopener noreferrer" target="_blank">Retour au menu global</a></li>
<li><a href="#menupage" rel="nofollow noopener noreferrer" target="_blank">Retourner au sommaire de la page</a></li>
</ul>
</div>
<?php include("inclus/footer.php"); ?>
</body>
</html> 


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


mais, ma page ne charge même plus :(
Amicalement! Corentin.
0
yg_be Messages postés 22770 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 mai 2024 1 481
28 déc. 2016 à 16:24
Ton code est illisible, sans indentation, et tu négliges d'utiliser la coloration syntaxique offerte par ccm (vois remarque du modérateur plus haut).
Les accolades dans ceci me semblent suspectes:
if(isset($_POST['reinitialise'])) {
if($_POST['littlescreen'] == 'on')
setcookie('menu', time() - 365*24*3600); setcookie('fontsize', time() - 365*24*3600); setcookie('littlescreen', time() - 365*24*3600);
else
}
Je pense que le code php que tu insères au milieu du code html de définition des boutons n'a pas de sens.
0
NHenry Messages postés 15115 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 8 mai 2024 331
28 déc. 2016 à 16:30
Souvent à cause d'un ; oublié, d' { } pas en phase ou d'une ( ) manquante.
0
corentin.bc Messages postés 389 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 4 novembre 2022 8
29 déc. 2016 à 09:29
Bon, merci de m'avoir répondu mais j'abandonne, je comprends rien à comment je pourrai faire, donc, temps pis.
0