[PHP/Javascript] Cookie resetten / verwijderen

Pagina: 1
Acties:

  • BoXie
  • Registratie: Juni 2001
  • Laatst online: 30-03-2023
Ik heb een probleem mbt het verwijderen van een cookie.

Om de cookie te zetten gebruik ik een php document met daarin de volgende code bovenaan.
PHP:
1
2
3
4
5
if (isset($_POST['items'])) {
    $id_list = $_POST['items'];
    $id_list = implode(",",$id_list);
    setcookie('cat0', $id_list, mktime()+86400*60) or die("Could not set cookie.");
    }

Dit is het formulier dat de waardes opneemt voor de cookie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<form name="form" id="form" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    <select name="items[]" size="10" multiple="multiple">
      <?php  
            $sql = "SELECT feed_id,title FROM feed_content ORDER BY cat_id,order_no";
            // Process query
            $result = mysql_query($sql);
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
              echo "<option value=\"".$row['feed_id']."\">".$row['title']."</option>";
            }
            ?>
    </select>
    <p>
      <input type="submit" name="Submit" value="Weergeven" />

Nou zou ik de cookie willen verwijderen door een extra knop in bovenstaand formulier. Alleen hoe dat werkt weet ik sowieso niet. Ik probeer het nu met een extra formpje onder bovenstaand formulier:
PHP:
1
2
3
<form action="<?php echo $_SERVER['PHP_SELF'] ?>">
    <input onclick="setcookie('cat0','',-3600);" value="Reset" type="submit">
  </form>

Echter .. dit werkt niet ! .. Hoe kan ik nou zorgen dat ik een button heb ... liefst in het 1ste formulier .. waarmee ik die cookie weggooi. En liever nog met PHP ipv Javascript.

  • BoXie
  • Registratie: Juni 2001
  • Laatst online: 30-03-2023
Ok topic mag dicht (kan niet vinden hoe ik dat zelf kan doen .. of verwijderen).

De fout was denk ik dat je cookie-dingen alleen mag uitvoeren VOORDAT er overige HTML wordt verzonden.
Ik heb nu een submitknop genaamd 'reset' toegevoegd aan mijn formulier .. en bovenin mijn bestand de volgende code opgenomen .. dat werkt:

PHP:
1
2
3
4
elseif (isset($_POST['reset'])) { 
    setcookie('cat0','', -3600);
    header("Location: http://www.intranetwork.nl/test.php");
}


Misschien kan een ervaren coder nog even zeggen of dit de best-practise is ... of in ieder geval juist is.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

HTML:
1
<button onclick="setcookie('cat0','',-3600);">Reset</button>

Als je het met PHP wil doen, dan moet je het onclick deel weglaten, een name attribuut opnemen in je input. Vervolgens controleer je bovenaan of een post-var met die naam is geset, en zo ja, dan reset je je cookie. Overigens moet je ook de method van je formulier dan op post instellen.

Als het werkt, dan zou ik gewoon voor de JS-oplossing gaan; dat scheelt je weer onnodig gesubmit naar een server toe, en daardoor kun je sneller browsen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • BoXie
  • Registratie: Juni 2001
  • Laatst online: 30-03-2023
-NMe- schreef op dinsdag 29 maart 2005 @ 01:38:
HTML:
1
<button onclick="setcookie('cat0','',-3600);">Reset</button>

Als je het met PHP wil doen, dan moet je het onclick deel weglaten, een name attribuut opnemen in je input. Vervolgens controleer je bovenaan of een post-var met die naam is geset, en zo ja, dan reset je je cookie. Overigens moet je ook de method van je formulier dan op post instellen.

Als het werkt, dan zou ik gewoon voor de JS-oplossing gaan; dat scheelt je weer onnodig gesubmit naar een server toe, en daardoor kun je sneller browsen.
Thanx !.Je alternatief beschrijft inderdaad precies de manier zoals ik het al zelf opgelost heb .. dus dat geeft me het idee dat het wel 'netjes' is zo.

Om de een of andere reden werkt dat Javascriptje dus niet .. de cookie blijft gewoon bestaan (niet ge-expired). Zou graag es horen waarom die methode niet werkt.

[ Voor 8% gewijzigd door BoXie op 29-03-2005 01:45 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

BoXie schreef op dinsdag 29 maart 2005 @ 01:44:
Om de een of andere reden werkt dat Javascriptje dus niet .. de cookie blijft gewoon bestaan (niet ge-expired). Zou graag es horen waarom die methode niet werkt.
Voornamelijk omdat setcookie geen Javascript functie is. Het zou waarschijnlijk wel werken, als je deze functie in je head opneemt:
Java:
1
2
3
4
5
6
7
8
9
function setcookie(name, value, secs) {
  var dc = document.cookie;
  if (!secs) secs= 1; // default to 1 sec if empty

  var expdate = new Date();
  expdate.setTime(expdate.getTime() + secs*1000);

  dc = name + "=" + escape(value) + "; expires=" + expdate.toGMTString();
}

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • BoXie
  • Registratie: Juni 2001
  • Laatst online: 30-03-2023
Ok ik hou het bij deze toevoeging bovenaan mijn script. Temeer omdat ik meer verstand heb van PHP dan van Javascript. Al is deze oplossing misschien wat 'duurder'.

PHP:
1
2
3
4
if (isset($_POST['reset'])) { 
    setcookie('cat0','', -3600);
    header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 17:46
Het mooiste is natuurlijk om beide methoden te gebruiken. En dat is nog eenvoudig ook. Je maak t gewoon naar -NMe-'s advies een javascript-functie om het cookie te verwijderen (laten we aannemen dat die functie logoff() heet). Je eigen code laat je intact (alhoewel ik de naan reset niet bijster handig vind). Dan kun je met de volgende code snel uitloggen als JS aan staat en volgens jouw servers-side manier als JS uit staat:
code:
1
<input type="submit?" name="reset" value="reset" onclick="logoff(); return false;" />

Regeren is vooruitschuiven


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:12

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 denkt dat de mensen in Webdesign & Graphics hier meer plezier aan zullen beleven

>> Webdesign & Graphics

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1