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");
}
?>
Zet achter je mysql_query eens --> or die(mysql_error());
verder wat gaat er niet goed? Kan hij geen gebruiker vinden? maakt hij geen cookie aan? Iets meer informatie zou handig zijn.
* Als er foute code staat, haal die dan aub even weg.
* Plaats code tussen code-tags.
* Zorg voor nette foutafhandeling. or die is dat niet. kan wel worden gebruikt om te kijken of de query lukt.
* Echo $count eens; is dat 1 of iets anders?
* Waarom al die regels om je variabelen te behandelen? Dat kan in 1x (in je query).
* mysql_real_escape_string gebruik je _in_ de query.
* Selecteer het veld/de velden die je nodig hebt. Geen *
* Variabelen buiten quotes.
Waarom sla je je pasword op in een cookie? Toch nergens voor nodig?
Bedankt voor de reacties !

Hij maakt geen cookie aan, zodoende komen de gebruikers niet in loginsuccess.php, ik zal zo de query eens aanpassen en kijken of het dan werkt. Ook zal ik eens proberen om hem het password eens niet in een cookie te laten opslaan.

Alleen dan het probleem dat hij de cookie niet aanmaakt, en ik kan niets vinden wat dit veroorzaakt, zou het mogelijk zijn dat gebruiker cookies blokkeerd ? Dit heb ik namelijk ook al eens gezien.

[size=xsmall]Toevoeging op 16/11/2011 09:59:22:[/size]

obelix en Idefix $count = inderdaad 1.
Gebruik sessions in plaats van cookies! Cookies om login gegevens in op te slaan is niet veilig.
Stefan - op 16/11/2011 10:02:15

Gebruik sessions in plaats van cookies! Cookies om login gegevens in op te slaan is niet veilig.



Niet per definitie...

[size=xsmall]Toevoeging op 16/11/2011 10:04:23:[/size]

Stefan - op 16/11/2011 10:02:15

Gebruik sessions in plaats van cookies! Cookies om login gegevens in op te slaan is niet veilig.



Niet per definitie...
Als jij je login gegevens in een cookie opslaat en ik zou de cookies van jou computer overnemen ben ik dan ook niet ingelogd? (zoals hierboven gebeurd)
Nevermind. Ik las verkeerd. Maar als je er een database aan hangt kan je het veiliger maken met o.a. ip-locking...
Geen phpsessies voor nodig..
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
- Aar - op 16/11/2011 10:17:10

Nevermind. Ik las verkeerd. Maar als je er een database aan hangt kan je het veiliger maken met o.a. ip-locking...
Geen phpsessies voor nodig..
Wat versta jij onder ip-locking Aar?

Reageren