[PHP] Inlog script, fout bij onthouden cookies in IE?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers,

Bij het volgende script heb ik het volgende probleem:

Als ik in IE9 probeer in te loggen werkt het gewoon, maar als ik in het adres balk de pagina opnieuw aanroep door deze te typen (localhost of localhost/index.php) dan komt de inlog weer terug en niet de tekst 'u bent ingelogd met [gebruikersnaam]'.

In Safari en Firefox werkt het wel normaal.

Tevens als ik uitlog in IE9 dan blijft de login onthouden en wordt deze niet verwijdert. Dit doet hij tevens in Safari en Firefox wel.

Onderstaande het config script, wie wil mij helpen?

config.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$CookiesVerloopTijd = 604800;


// ---------------------------------------


@mysql_connect($sever, $username, $password) or die("Er kan geen verbinding gemaakt worden met de database! Neemt contact op met de systeembeheerder of probeer het later nog eens.");
@mysql_select_db($database) or die("De database kan niet geselecteerd worden! Neemt contact op met de systeembeheerder of probeer het later nog eens.");

@ini_set("magic_quotes_gpc","1");
@ini_set("magic_quotes_runtime","0");
@ini_set("magic_quotes_sybase","0");
@error_reporting(2039);


if(getenv(HTTP_X_FORWARDED_FOR)) { $REMOTE_ADDR = getenv(HTTP_X_FORWARDED_FOR); }
elseif(getenv(HTTP_CLIENT_IP)) { $REMOTE_ADDR = getenv(HTTP_CLIENT_IP); }
else { $REMOTE_ADDR = getenv(REMOTE_ADDR); }


code:
1
2
3
4
5
6
7
8
9
$UnixTijd = time();
$LedensysteemMelding = "";

function VerwijderCookies() {
setcookie("LedensysteemID", "gebruikersnaam", $UnixTijd-(60*60*24));
setcookie("LedensysteemWW", "wachtwoord", $UnixTijd-(60*60*24));
unset($_COOKIE["LedensysteemID"]);
unset($_COOKIE["LedensysteemWW"]);
}


code:
1
2
3
4
// Uitloggen
if(isset($uitloggen)) { 
VerwijderCookies();
}


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Inloggen
elseif($_POST["inloggen"] && $_POST["gebruikersnaam"] && $_POST["wachtwoord"]) { 

$Lid = mysql_fetch_object(mysql_query("SELECT ID,Wachtwoord,Verbannen,Bevestigen FROM $TabelLeden WHERE Gebruikersnaam = '{$_POST["gebruikersnaam"]}'"));

if(!$Lid || $Lid->Wachtwoord != md5($_POST["wachtwoord"])) {
$LedensysteemMelding = "Gebruikersnaam en / of wachtwoord onjuist!";
VerwijderCookies();
}
elseif($Lid->Bevestigen) {
$LedensysteemMelding = "Je hebt je account nog niet via e-mail bevestigd!<br><a href='bevestigen.php'>Verstuur de bevestigingsmail opnieuw.</a>";
VerwijderCookies();
}
elseif($Lid->Verbannen) {
$LedensysteemMelding = "Je bent verbannen!";
VerwijderCookies();
}
else {
mysql_query("UPDATE $TabelLeden SET IPadres = '$REMOTE_ADDR' WHERE ID = '$Lid->ID'");
setcookie("LedensysteemID", $Lid->ID, $UnixTijd+$CookiesVerloopTijd);
setcookie("LedensysteemWW", $Lid->Wachtwoord, $UnixTijd+$CookiesVerloopTijd);
$_COOKIE["LedensysteemID"] = $Lid->ID;
$_COOKIE["LedensysteemWW"] = $Lid->Wachtwoord;
}

}


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Gegevens ophalen
$login = false; $InlogLid = "";

$_COOKIE["LedensysteemID"] = intval($_COOKIE["LedensysteemID"]);
$_COOKIE["LedensysteemWW"] = ereg('^[A-Fa-f0-9]{32}$',$_COOKIE["LedensysteemWW"]) ? $_COOKIE["LedensysteemWW"] : "";

if(!$uitloggen && $_COOKIE["LedensysteemID"] && $_COOKIE["LedensysteemWW"]) {

if($Lid = mysql_fetch_object(mysql_query("SELECT ID,Naam,Mail,Gebruikersnaam,Verbannen FROM $TabelLeden WHERE ID = '{$_COOKIE["LedensysteemID"]}' AND Wachtwoord = '{$_COOKIE["LedensysteemWW"]}' AND IPadres = '$REMOTE_ADDR' AND Verbannen != '1'"))) {
mysql_query("UPDATE $TabelLeden SET Inlogdatum = '$UnixTijd' WHERE ID = '$Lid->ID'");
$InlogLid = $Lid;
$login = true;
}

}

Acties:
  • 0 Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 16:56
Doen eens ff je code tussen [code] tags zetten. Dat leest wat lekkerder dan dit blok.

Update: ik bedoel
PHP:
1

Nu ff zoeken wat er mis gaat. ;)

[ Voor 30% gewijzigd door MuddyMagical op 15-11-2010 15:04 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@ MuddyMagical: Mijn excusses, hierbij aangepast!

Update: tevens onthoud firefox ook de inlog en verwijdert hij deze niet.

Hierbij de script van uitloggen.php:
$uitloggen =1;

(Dit haalt hij uit de config.php die in de start topic staat.)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

MuddyMagical schreef op maandag 15 november 2010 @ 15:00:
Doen eens ff je code tussen [code] tags zetten. Dat leest wat lekkerder dan dit blok.
Niet dus, want er staat geen uitlijning in die code. :X DannyEster: je code is zo niet te lezen, formatteer hem even met fatsoenlijke indenting. Je kan niet van ons verwachten dat we jouw code gaan debuggen en daarbij ook nog eens om je gebrek aan formattering heen moeten werken.

Dit gelezen, trouwens? http://genotrance.wordpre...ted-by-internet-explorer/

'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.


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Waarom gebruik je http://php.net/session niet?

Acties:
  • 0 Henk 'm!

Verwijderd

Niet dus, want er staat geen uitlijning in die code.
Waarom bekruipt mij nu het angstige gevoel dat die er überhaupt niet is?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op maandag 15 november 2010 @ 15:06:
[...]
Waarom bekruipt mij nu het angstige gevoel dat die er überhaupt niet is?
Klopt, weetje waarom? Omdat ik eerst het script aan het testen ben voordat ik hem ga uitlijnen. :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 15 november 2010 @ 15:07:
[...]

Klopt, weetje waarom? Omdat ik eerst het script aan het testen ben voordat ik hem ga uitlijnen. :)
Je kan niet fatsoenlijk debuggen als het niet goed uitgelijnd is, en wij gaan dat al helemaal niet voor je doen. ;) Sowieso: als je een fatsoenlijke editor gebruikt hoef je niet eens zelf uit te lijnen, de editor doet dat wel voor je...

En inderdaad: wat jij wil zou je eigenlijk gewoon met sessies moeten doen, niet handmatig met je eigen cookies.

[ Voor 4% gewijzigd door NMe op 15-11-2010 15:09 ]

'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.


Acties:
  • 0 Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 16:56
Verwijderd schreef op maandag 15 november 2010 @ 15:07:
[...]


Klopt, weetje waarom? Omdat ik eerst het script aan het testen ben voordat ik hem ga uitlijnen. :)
Wat is dat voor vage redenering?
Uitlijning doe je terwijl je aan het scripten bent. Dit bevordert de leesbaarheid waardoor je makkelijker fouten kan vinden en een beter overzicht over je code.

Maar om even terug te komen. Eerst ff uitlijnen en duidelijk plaatsen inclusief wat je zelf allemaal hebt ontdekt in de uren die je er al op loopt te zweten, want ik heb het idee dat je het probleem net ontdekt hebt en gelijk een oplossing wilt.

Damn you NMe ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op maandag 15 november 2010 @ 15:07:
Klopt, weetje waarom? Omdat ik eerst het script aan het testen ben voordat ik hem ga uitlijnen. :)
Erg onverstandige wijzen van coden, als ik zo vrij mag zijn. Je zou je echt moeten aanleren om tijdens het schrijven het uitlijnen gewoon meteen toe te passen. Debugged ook een stuk gemakkelijker en maakt dus het testen ook een stuk gemakkelijker.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Even ter info:

Zelf zit ik te denken dat een deel van mijn probleem hiermee te maken heeft:
code:
1
2
3
4
// Uitloggen
if(isset($uitloggen)) { 
VerwijderCookies();
}


Correct me if i'm wrong..

[ Voor 7% gewijzigd door Verwijderd op 15-11-2010 15:18 ]


Acties:
  • 0 Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 16:56
Verwijderd schreef op maandag 15 november 2010 @ 15:16:
Even ter info:

Zelf zit ik te denken dat het hiermee te maken heeft:
code:
1
2
3
4
// Uitloggen
if(isset($uitloggen)) { 
VerwijderCookies();
}


Correct me if i'm wrong..
Je hoort ons niet hé?
NMe schreef op maandag 15 november 2010 @ 15:09:
[...]

Je kan niet fatsoenlijk debuggen als het niet goed uitgelijnd is, en wij gaan dat al helemaal niet voor je doen. ;) Sowieso: als je een fatsoenlijke editor gebruikt hoef je niet eens zelf uit te lijnen, de editor doet dat wel voor je...

En inderdaad: wat jij wil zou je eigenlijk gewoon met sessies moeten doen, niet handmatig met je eigen cookies.
Daarnaast, let even op je input:
PHP:
1
$Lid = mysql_fetch_object(mysql_query("SELECT ID,Wachtwoord,Verbannen,Bevestigen FROM $TabelLeden WHERE Gebruikersnaam = '{$_POST["gebruikersnaam"]}'"));

Die is namelijk wat eng zonder controle op je user input

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op maandag 15 november 2010 @ 15:16:
Even ter info:

Zelf zit ik te denken dat een deel van mijn probleem hiermee te maken heeft:
code:
1
2
3
4
// Uitloggen
if(isset($uitloggen)) { 
VerwijderCookies();
}


Correct me if i'm wrong..
Dat zou zomaar kunnen. Kun je zelf uitleggen wat die code doet, dan komen we misschien verder. Dus, wat doet isset en waarom denk je dat het daaraan ligt?

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
MuddyMagical schreef op maandag 15 november 2010 @ 15:20:
[...]

Daarnaast, let even op je input:
PHP:
1
$Lid = mysql_fetch_object(mysql_query("SELECT ID,Wachtwoord,Verbannen,Bevestigen FROM $TabelLeden WHERE Gebruikersnaam = '{$_POST["gebruikersnaam"]}'"));

Die is namelijk wat eng zonder controle op je user input
Nee hoor, dat is niet eng:

PHP:
1
@ini_set("magic_quotes_gpc","1");


Alleen is dat niet meer zo handig: http://php.net/magic_quotes_gpc

[ Voor 3% gewijzigd door HuHu op 15-11-2010 15:22 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22:52

MueR

Admin Tweakers Discord

is niet lief

Geinig scriptje. Totaal onoverzichtelijk, wachtwoorden in cookies, vreemde methoden om het ipadres te achterhalen, pogingen om magic_quotes_gpc tijdens runtime aan te zetten, terwijl de handleiding daar vrij duidelijk over is: "Keep in mind that attempting to set magic_quotes_gpc at runtime will not work.". Ik weet niet waar en hoe je php aan het leren bent, maar dit is _niet_ de manier.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

HuHu schreef op maandag 15 november 2010 @ 15:20:
[...]

Dat zou zomaar kunnen. Kun je zelf uitleggen wat die code doet, dan komen we misschien verder. Dus, wat doet isset en waarom denk je dat het daaraan ligt?
Belangrijker: waar komt $uitloggen vandaan. Ik begin een nare register_globals-kriebel te krijgen.

Trouwens, ongerelateerd, maar waarom zet je in godesnaam magic quotes bewust aan?

'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.


Acties:
  • 0 Henk 'm!

  • ameesters
  • Registratie: Juni 2008
  • Laatst online: 05-01-2022
code:
1
if(!empty($uitloggen))


code:
1
if($uitloggen !== FALSE)


code:
1
if($uitloggen === TRUE)


als uitloggen nul is is hij alsnog true als je isset gebruikt. dus isset zou ik met een uitlog functie niet gebruiken!

Acties:
  • 0 Henk 'm!

Verwijderd

Ik vind het gehele script sowieso echt een gruwel. Maar goed, zoals al is aangegeven is het niet aan Tweakers.net's gebruikers om door jouw spaghetti code te ploegen.

Dus, lijn alles eerst maar eens netjes uit en dan zien we daarna wel weer verder.

Acties:
  • 0 Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 16:56
PHP:
1
@mysql_connect($sever, $username, $password) or die

Heb je die $sever ook ergens anders gedefinieerd? :+

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zoals ik de reacties zie is dit niet echt meer een veilig script, ik heb deze van webmensen af omdat ik veel reacties zag dat het een goed script is. Zo te horen is er heel veel aan fout en ga ik dus maar even een cursus PHP volgen om zo een eigen PHP login op te zetten.

Als dit al fout is dan ben ik bang dat de andere pagina's ook brak zijn..

Bedankt voor jullie hulp en ondersteuning!

Ook zou ik sommige tips meenemen mocht ik nog vragen hebben omtrend PHP scripts. :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Eerst de basis van PHP leren, daarna pas iets proberen te bakken dat je echt wil gebruiken. Programmeren door het gewoon te doen of door gewoon code van anderen te kopiëren en plakken is een slecht plan, zeker wat PHP betreft omdat er zoveel prut te vinden is op het web.

'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.


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op maandag 15 november 2010 @ 15:27:
Zoals ik de reacties zie is dit niet echt meer een veilig script, ik heb deze van webmensen af omdat ik veel reacties zag dat het een goed script is. Zo te horen is er heel veel aan fout en ga ik dus maar even een cursus PHP volgen om zo een eigen PHP login op te zetten.

Als dit al fout is dan ben ik bang dat de andere pagina's ook brak zijn..

Bedankt voor jullie hulp en ondersteuning!

Ook zou ik sommige tips meenemen mocht ik nog vragen hebben omtrend PHP scripts. :)
Het laatste nieuws van 30 januari 2009 zegt eigenlijk al genoeg:
Ik heb de artikelen van de website gehaald. Ze waren niet up-to-date en voegden daardoor niet veel meer toe.
Heel die site zou niet meer mogen bestaan.

Acties:
  • 0 Henk 'm!

  • ameesters
  • Registratie: Juni 2008
  • Laatst online: 05-01-2022
Als ik je een tip mag geven: lees de manual php.net door, daar ben ik zelf "late in the game" mee begonnen maar daar is zo enorm veel data te vinden! en in de comments is altijd wel informatie te vinden hoe iets te implementeren. Veel beter dan al die tutorial sites waar ze vaak niet verder komen dan if-else statements...

Succes verder.

vriendelijk groet,

Leipe Po

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22:52

MueR

Admin Tweakers Discord

is niet lief

Verwijderd schreef op maandag 15 november 2010 @ 15:27:
ik heb deze van webmensen af omdat ik veel reacties zag dat het een goed script is
De php scripts daar zijn geschreven in 2002-2004. Misschien dat het toen goede scripts waren, nu staan ze naast IE6 in het hokje "We zijn eigenlijk al dood, maar ze begraven ons maar niet". Dat is geen kritiek op jou overigens, meer op de mensen die dergelijke rotzooi nog altijd online laten staan.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

MueR schreef op maandag 15 november 2010 @ 15:57:
Misschien dat het toen goede scripts waren
Nou, nee. In 2002 - 2004 deden we dit soort zaken al oneindig veel netter. Zo lang geleden is dat namelijk nog niet eens.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

@Kharay1977: Voor ons programmeer fossielen uit het prachtjaar '77 is dat inderdaad niet zo lang geleden, maar voor een broekje uit '86 lijkt dat natuurlijk heel anders :+.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ben nu bezig momenteel op www.w3schools.com dingen door te lezen en zodanig PHP en MySQL te leren. :)

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22:52

MueR

Admin Tweakers Discord

is niet lief

Verwijderd schreef op maandag 15 november 2010 @ 16:49:
Nou, nee. In 2002 - 2004 deden we dit soort zaken al oneindig veel netter. Zo lang geleden is dat namelijk nog niet eens.
Ach, er zullen vast scripts tussen staan die in die tijd nog wel enigsinds up to date waren.

Janoz: }:|

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 15 november 2010 @ 16:57:
Ben nu bezig momenteel op www.w3schools.com dingen door te lezen en zodanig PHP en MySQL te leren. :)
Doe nou niet, koop/leen liever een goed boek. :)

'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.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
NMe schreef op maandag 15 november 2010 @ 17:07:
[...]

Doe nou niet, koop/leen liever een goed boek. :)
Dat is ook een goed idee, ik zou eens kijken of ik een up-to-date boek kan vinden in de bieb anders koop ik wel de nieuwste hier.

Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
up-to-date boek
in de bieb
Contradictio in terminis?

Acties:
  • 0 Henk 'm!

Verwijderd

Niet meteen afbranden, mede guru's - wat je ook kan overwegen, hier ben ik namelijk ooit mee begonnen en het is nog steeds mijn voornaamste manier van het leren van een nieuwe taal - pak er gewoon een stuk software bij en ga de source zitten lezen.

Ja, klinkt vreemd. Maar, ik heb er zelf altijd veel baat bij gehad. Voor mij persoonlijk is de afstand tussen boek en praktijk altijd te groot gebleken. Ik wil het zien, ik wil het voelen.

Waar je natuurlijk wel voorzichtig mee moet zijn is de keuze in welk stuk software je erbij pakt. Zoals al is aangegeven eerder in de topic - er is ongelooflijk veel troep te vinden qua php. Maar, er zijn ook echt pareltjes te vinden.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 15 november 2010 @ 17:20:
Niet meteen afbranden, mede guru's - wat je ook kan overwegen, hier ben ik namelijk ooit mee begonnen en het is nog steeds mijn voornaamste manier van het leren van een nieuwe taal - pak er gewoon een stuk software bij en ga de source zitten lezen.
Dan heb je toch op zijn minst eerst de absolute basis al onder de knie gehad. Als je die kennis nog niet hebt wil je niet zomaar willekeurige software gaan bestuderen, al helemaal niet als je niet in kan schatten of die software goed in elkaar zit of niet. :)

'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.

Pagina: 1