Sidste skridt mod autologin søges

Tags:    php

Hejsa, jeg har lavet et login system med SQL, men jeg vil også gerne have noget autologin i form af cookies. MEN, jeg er ny på området og kan ikke finde ud af det. Jeg har siddet og rodet med det i en time nu, men forgæves. Hvis I ville hjælpe mig med at skrive noget kodning, ja så ville jeg blive mega glad :o) ..

På forhånd tak!

Cookien skal sættes til:
Fold kodeboks ind/udKode 


Login formen:
Fold kodeboks ind/udKode 



Nedenstående behandler formens data:
Fold kodeboks ind/udKode 


[Redigeret d. 26/10-05 16:36:53 af Kermit]

[Redigeret d. 26/10-05 16:37:11 af Kermit]



4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Dine variabler hedder '$brugernavn' og '$kode', ikke '$username' og '$password'.
Når du vil have brugere til automatisk at blive logget ind, må du så tjekke om de cookies er oprettet, og om oplysningerne passer. Der får du brug for enten $_COOKIES eller $_REQUEST.
----
Weblog: http://skalske.dk




Fold kodeboks ind/udKode 



Der er nu ingen grund til at sætte hele to cookies, ingen grund til at sætte flere cookies end højst nødvendigt, du kan bare bruge følgende:

setCookie('brugernavn', $brugernavn . ';' . $kode, time() + + 2592000);

og så bruge explode til at seperer brugernavn og kode.

$dele = explode(';', $_COOKIE['brugernavn']);

$dele[0] vil da indholde $brugernavn og
$dele[1] vil indeholde $kode.


Nedenstående behandler formens data:
Fold kodeboks ind/udKode 



Her der der også lige et par fejl som nok ville være kloge at rette.
Først så skal du _altid_ huske at $_POST, $_GET og $_REQUEST variabler er protentielle skadelige. Man kan nemt ændre en $_POST variable og når du bruger den til at hente information fra en MySQL database kan en ond person skrive PHP kode ind og hente information on admin kontoen.

Derfor skal du escape html tegn, jeg synes det er mest optimalt at bruge htmlentities();

Den anden ting er du checker om variablen er falsk, så hvis brugernavnet er '0' eller 'false' så vil dette blive opfattet som tomt. I stedet burde du bruge funktionen empty() som checker om en variable er tom, dog tages mellemrum med, så du kan eventuelt bruge trim() først.


Fold kodeboks ind/udKode 



Det er godt nok ikke en fejl men det er ikke nødvendig at bruge session_register() da $_SESSION automatisk registere session variabler som globale.

Men for at besvare dit spørgsmål så vil den kodning ligne det jeg lavede i starten.

lav en common.php side som du includer på alle sider, det er generalt en god ide at have en enkle side hvor du smider det mest normale kode ind, for eksempel at include din db fil eller checke om brugeren er logget ind.

derefter smider du følgede ind i common.php
Fold kodeboks ind/udKode 




Dine variabler hedder '$brugernavn' og '$kode', ikke '$username' og '$password'.
Når du vil have brugere til automatisk at blive logget ind, må du så tjekke om de cookies er oprettet, og om oplysningerne passer. Der får du brug for enten $_COOKIES eller $_REQUEST.
----
Weblog: http://skalske.dk


Jeps, det ved jeg godt, men jeg ved ikke hvordan "kodningen" skal se ud. Jeg er forholdsvis ny i PHP miløjet =/



En der vil give en hjælpende hånd? :o)



t