Pb suppression cookie

corentin.bc Messages postés 383 Date d'inscription   Statut Membre Dernière intervention   -  
corentin.bc Messages postés 383 Date d'inscription   Statut Membre Dernière intervention   -
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.

6 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
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 383 Date d'inscription   Statut Membre Dernière intervention   8
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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 383 Date d'inscription   Statut Membre Dernière intervention   8
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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 383 Date d'inscription   Statut Membre Dernière intervention   8
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
Souvent à cause d'un ; oublié, d' { } pas en phase ou d'une ( ) manquante.
0
corentin.bc Messages postés 383 Date d'inscription   Statut Membre Dernière intervention   8
 
Bon, merci de m'avoir répondu mais j'abandonne, je comprends rien à comment je pourrai faire, donc, temps pis.
0