Pagina 1 van 1

hulp bij 'remember me' optie in website (PHP)

Geplaatst: 27 apr 2006 10:42
door N-Rico
is hier iemand die wat meer bedreven is met PHP dan ik? :D

Ik heb op mijn eigen website een inlog mogeljikheid en wil hier graag een 'remember me' vinkje bij hebben, dus zal er iets in een cookie opgeslagen moeten worden (setcookie()?)

Heeft iemand hier ervaring mee?

Groet,

N-Rico

Geplaatst: 28 apr 2006 07:48
door chromis
N-Rico,

Even googlen: http://www.free2code.net/plugins/articl ... .php?id=83
http://www.metalshell.com/view/source/117/

Een cookie is uiteindelijk een stuk tekst (een string) die de browser onthoudt. Een cookie 'sturen', beter gezegd setten doe je voordat je je HTML begint te sturen. De browser slaat deze dan apart op. Een cookie heeft een naam, een waarde, een verloopdatum, een pad (bv / of /forum) en domein (www.freethinker.nl) die bepalen wanneer de cookie gestuurd zal worden door de browser. De cookie maakt deel uit van de HTTP header die je browser verstuurt dus dmv. telnet kan je dat zien en evt. debuggen. Een cookie kan gelezen worden via de environment variabelen van apache, maar php voorziet daarin.

Geplaatst: 28 apr 2006 11:36
door N-Rico
Ah..thanks voor de reactie!

Ik ben al iets verder (ik had eerst de fout gemaakt om de cookie te zetten terwijl er al html was ge-output :) ) alleen nu wil ik eigenlijk dat als iemand logout clickt op m'n site dat de cookie wordt 'gecleared'....m'n logout form heeft als action 'checklogin.php'

in checklogin.php heb ik bovenin de onderstaande code staan:

<?php
ob_start();
include "inc/connect.php";
$link = mysql_connect($hostname, $mysql_login, $mysql_password) or die("MySQL: ".mysql_error());
mysql_select_db($database, $link) or die("MySQL: ".mysql_error());

if (isset($UserUnAuth)) {
setcookie('username',"",time() - 60*60*24*7);
setcookie('password',"",time() - 60*60*24*7);
session_start();
session_destroy();
header("Location: index.php");
} else {
.....

Als ik op logout click kom ik weer netjes terug op de index.php, maar ben ik nog steeds ingelogd :S

enig idee? :D

Greetz,
N-Rico

Geplaatst: 28 apr 2006 11:46
door N-Rico
laat maar :S haha

was pad en domein vergeten bij het 'unsetten' van de cookies :)

setcookie('username',"",time() - 60*60*24*7,"/","www.enricoklein.nl");
setcookie('password',"",time() - 60*60*24*7,"/","www.enricoklein.nl");

Thanks again!

Geplaatst: 28 apr 2006 11:57
door chromis
De vraag is in hoeverre je browser meewerkt als het gaat om invalide cookies. Dat wil wellicht wel eens verschillen. Invalide cookies zijn inderdaad cookies die verlopen zijn. De kans bestaat dat ze pas gewist worden nadat je je browser hebt afgesloten.

Om dat te vermijden kan je de string "INVALID" oid in de cookies plaatsen en daarop extra checken.

Geplaatst: 28 apr 2006 12:10
door N-Rico
ah...goeie tip! verschillende browsers hebben inderdaad nogal eens verschillende wijzen van interpretatie :S

Thanks!

N-Rico

Geplaatst: 28 apr 2006 12:35
door N-Rico
Zoiets?

if (isset($_COOKIE['username']))
{
if ($_COOKIE['username'] !== "INVALID")
{
session_register('username','accesslevel','stylesheet');
include "inc/cookiecheck.php";
$_SESSION['username'] = $_COOKIE['username'];
}
}

:)

N-Rico

Geplaatst: 28 apr 2006 18:01
door chromis
Bijvoorbeeld, ja.

!== zal denk ik != moeten zijn.

Maar mischien is dat equivalent in php.