cookie login, virker ikke

Tags:    php


Ved ikke helt hvor problemet ligger.. Har ikke den store erfaring med cookies.

Har dette til min login (efter indtastning i html form):

Fold kodeboks ind/udKode 



// Har kun taget det med der omhandler cookies da resten omkring "tjek om brugeren eksisterer" osv. ikke er relevant.





Fra index.php
Fold kodeboks ind/udKode 





Den bliver ved med at vise indhold for "gæst/ikke logget ind"?




I din index siger du ($_POST['password'] != md5($pass)

Men du har kaldt din variabel for $password



ja du har ret.. hmm men stadig ingen forskel.



Fold kodeboks ind/udKode 




// Har kun taget det med der omhandler cookies da resten omkring "tjek om brugeren eksisterer" osv. ikke er relevant.

Forkert - det kan sagtens være relavant, hvis der er nogle ting, der af en eller anden grund forstyrer cookien.

Men her kommer mine opservasioner:
Fold kodeboks ind/udKode 

For det første skal det være $_COOKIE['email'] og $_COOKIE['password'] - går jeg i hvert fald ud fra, efter som du først tjekker efter cookiesne. For det andet, så skal != erstattes med !==, da du ellers får dig en slem overreskelse en dag - Man kan bruge 0 som en joker, da PHP automatisk forvandler teksten til en bolean (true/false), hvis der sammenlignes med disse.

Udover det skal $pass som Casper siger være $password.


Tilføjelse:
if (isset($_POST['rememberme']))
{
setrawcookie('email', $_POST['email'], time()+60*60*24*365, '/projekt','www.clich.net/projekt');
setrawcookie('password', md5($_POST['password']), time()+60*60*24*365, '/projekt','www.clich.net/projekt');
}
else
{
setrawcookie('email', $_POST['email'], false, '/projekt','www.clich.net/projekt');
setrawcookie('password', md5($_POST['password']), false, '/projekt','www.clich.net/projekt');
}

header('Location: index.php');

De fire ting, jeg har markeret med fed skrift er domæne-variablen. Så vit jeg ved, skal /projekt IKKE med i den, da det KUN er domænet og ikke URLen.



Indlæg senest redigeret d. 19.08.2010 16:00 af Bruger #15624
Mickel: Så $_POST skal altså erstattes af $_COOKIE ?

Det kommer til at se sådan ud :

Fold kodeboks ind/udKode 

kan ikke helt få det til at give mening

Har også prøvet at fjerne /projekt hvilket ikke gjorde nogen forskel


Skal man bruge sessions ind over evt ?

Har aldrig arbejdet med cookies, altid brugt sessions





Altså, hvis du i det tilfelde vil tjekke cookien og ikke POST-datasne, så ja, så er det vel $_COOKIE, du skal have fat i.

Og i det andet eksempel, er det ===, ikke ==.


Udover det kan jeg se, jeg måske har set forkert med en ting: md5($password) skal måske være md5($pass) i stedet. Problemet for os, er at vi ikke ved om du har lavet en variabel med det navn et andet sted, men når man kigger lidt nærmere på det, giver det ikke rigtig mening det skulle være $password-variablen.



Mickelvlm @ 19-08-10 15:31
Forkert - det kan sagtens være relavant, hvis der er nogle ting, der af en eller anden grund forstyrer cookien.

det er relevant hvis man læser Description til cookie i php setcookie
[cut] Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including <html> and <head> tags as well as any whitespace. [/cut]
hvis min mistanke er rigtig er viste code (eksperten og udvikleren), indsat efter html header, og så bliver cookien ikke sat.

man kan selvføgelig lave en teststub der setter en cookie, så man kan afprøve index.php.
man kan se cookie er sat direkte i browseren (FireFox), IE smider det vist ud som en extern fil, eller man kan skrive noget code man er sikke på virker, der viser cookiens indhold
eks på en teststup.php
Fold kodeboks ind/udPHP kode 




Mickelvlm @ 20-08-10 10:08
===

altid en god ide at lave type check også, da == kun laver værdi check, hvorimod === også tager typen med, ligesom det også ville være smart at lave noget sikkerheds check (har set noget af det andet code, i sammen project), men KIS

spørgsmålet kører i øvrigt også her på eksperten




t