Hallo allemaal,

Ik ben bezig met een site waarvoor ik een login script met cookies gebruik.
Gisteren probeerde ik het uit en zag tot mijn spijt dat de gebruikers via dit script niet ingelogd kunnen worden. Ik ben uren na uren aan het zoeken geweest wat het probleem zou kunnen zijn, alleen helaas zie ik het zelf niet.

Ik hoop heel erg dat iemand de fout ziet die ik maak, ik ben namelijk nog niet zo ervaren met een loginscript dat werkt via cookies.

phpcode:

<?php
$emailaddress=htmlentities($_POST['emailaddress']);
$password=htmlentities($_POST['password']);

$emailaddress=trim($emailaddress);
$password=trim($password);

$emailaddress=strtolower($emailaddress);
$password=strtolower($password);


include 'configset/conn.php';
include 'web.php';

//Mysql Injection Control

$emailaddress=mysql_real_escape_string($emailaddress);
$password=mysql_real_escape_string($password);

$query=mysql_query("SELECT * FROM Persons Where EmailAddress='$emailaddress' AND Password='$password' AND Active=1");
$count=mysql_num_rows($query);

if($count==1)
{
//Cookies Is Set For 1 Day
setcookie ("user",$emailaddress,time()+600);
setcookie ("password",$password,time()+600);
header("location:loginsuccess.php");
}
else {
setcookie ("user","",time()-86400);
setcookie ("password","",time()-86400);
unset ($_COOKIE[user]);
unset ($_COOKIE[password]);
header("location:index.php");
}
?>

---------------------------

Bij voorbaat dank voor jullie hulp !

Groeten Ricardo

[size=xsmall]Toevoeging op 16/11/2011 09:06:50:[/size]

sorry het hierboven gekopieerde script is fout, zo is het script werkelijk dat script hierboven was enkel om iets uit te proberen.


phpscript:

$emailaddress=htmlentities($_POST['emailaddress']);
$password=htmlentities($_POST['password']);

$emailaddress=trim($emailaddress);
$password=trim($password);

$emailaddress=strtolower($emailaddress);
$password=strtolower($password);

$encryptpass=md5($password);

include 'configset/conn.php';
include 'web.php';
//Mysql Injection Control

$emailaddress=mysql_real_escape_string($emailaddress);
$encryptpass=mysql_real_escape_string($encryptpass);

$query=mysql_query("SELECT * FROM Persons Where EmailAddress='$emailaddress' AND Password='$encryptpass' AND Active=1");
$count=mysql_num_rows($query);

if($count==1)
{
//Cookies Is Set For 1 Day
setcookie ("user",$emailaddress,time()+86400);
setcookie ("password",$encryptpass,time()+86400);
header("location:loginsuccess.php");
}
else {
setcookie ("user","",time()-86400);
setcookie ("password","",time()-86400);
unset ($_COOKIE[user]);
unset ($_COOKIE[password]);
header("location:index.php");
}
?>
Dat een inlogsessie met cookie en database uitsluitend op een bepaald ipadres werkt.
En dat ip-adres wordt handmatig ingevoerd ofzo?

Ricardo Verboom op 16/11/2011 10:19:17

zit ook een ip check op ;)
Ik heb alles geprobeerd maar die cookies worden niet opgeslagen, er zit ergens een klein foutje maar ik zie het echt niet :P


Accepteert je browser wel cookies? (Dit kun je aanpassen in je instellingen.)

Naar welke pagina wordt je gestuurd? loginsuccess of index?

Waaruit leid je af dat de cookie niet werkt?
Bij het aanmelden word het ip-adres gecheckt en opgeslagen op de database, samen met de verdere logingegevens. Zo kan iedereen dus enkel vanaf dat ipadres inloggen (het is wat onhandig dat weet ik) maar wel redelijk safe.

En mijn browser accepteert wel cookies, dit is inderdaad ook het eerste waaraan ik dacht, maar helaas is dit het probleem niet.
Daarmee geef je geen antwoord op mijn vragen.
obelix en idefix na inloggen wordt je naar loginsuccess gestuurd.

Ik heb meerdere malen mijn cookies nagekeken en gekeken of mijn browser cookies wel accepteerd. Mijn browser accepteerd cookies, en ik kan niets vinden, daarom vermoed ik dus dat de cookies niet werken.
Ricardo Verboom op 16/11/2011 09:57:32

Hij maakt geen cookie aan, zodoende komen de gebruikers niet in loginsuccess.php


Ricardo Verboom op 16/11/2011 10:42:32

obelix en idefix na inloggen wordt je naar loginsuccess gestuurd.


Komen de gebruikers nu wel of niet in loginsuccess?

Het aanmaken van een cookie staat los van de header. Als je if-statement goed wordt uitgevoerd, zou je naar de goede pagina moeten sturen. Dus, nogmaals, waaruit leid jij af dat de cookie niet werkt?
Debug: plaats in je code net voor de header een echo waarin je aangeeft waar de header heen zou moeten. Klopt dat met wat je zou verwachten.
die komen niet aan in loginsuccess, maar worden teruggestuurd naar index.

Nog even tussendoor, ik heb een adminpanel met dezelfde login functie en hiervan krijg ik wel de cookies door.

de header zou je ook inderdaad naar de goede pagina moetten sturen, maar hij stuurt je naar loginsuccess indien alles in orde is, is dit niet zo dan stuurt hij je terug naar index.

$query=mysql_query("SELECT * FROM Persons Where EmailAddress='$emailaddress' AND Password='$encryptpass' AND Active=1");
$count=mysql_num_rows($query);

if($count==1)
{
//Cookies Is Set For 1 Day
setcookie ("user",$emailaddress,time()+86400);
setcookie ("password",$encryptpass,time()+86400);
header("location:loginsuccess.php");
}
else {
setcookie ("user","",time()-86400);
setcookie ("password","",time()-86400);
unset ($_COOKIE[user]);
unset ($_COOKIE[password]);
header("location:index.php");
Als je doorgestuurd wordt naar de indexpagina, gaat hij er dus van uit dat je $count <>1 is.
Kijk nog even naar mijn vorige post , de laatste regel over debug. Test dat eens.
wanneer ik dit doe blijft hij in logincheck staan, en krijg ik een leeg scherm, maar wat jij zegt zou inderdaad wel moetten lukken.

[size=xsmall]Toevoeging op 16/11/2011 11:41:17:[/size]

oke 1 ding is zeker, de cookies worden niet opgeslagen bij gebruiker als gebruiker wil inloggen, dit is het enige probleem. Heb het even helemaal uitgezocht, de cookies worden gewoon niet aangemaakt. Wachtwoord en emailadres worden ecrypted in database geplaatsd, maar omdat database de cookies niet ziet word de gebruiker niet toegelaten, blijkbaar dus een fout in de code

Reageren