Avatar billede renton Nybegynder
08. oktober 2001 - 14:26 Der er 15 kommentarer og
2 løsninger

multi login system i PHP

Hejsa
Er der nogle som kan hjælpe mig med et multi login system i PHP.
Jeg har et system, som omhandler tipning, hvor jeg har oprettet nogle tabeller i MySQl (person,tipskupon,kamp,sæson og hold).
Jeg vil så gerne ha\' et login system til dette, hvor det skal være muligt for brugerne af systemet at logge på (der er ingen forskel på administratoren og brugeren). Desuden skal der være en funktions som automatisk logger af, hvis man er indaktiv i fx 15 min.
Avatar billede binderup Nybegynder
08. oktober 2001 - 14:33 #1
http://www.hotscripts.com/PHP/Scripts_and_Programs/User_Authentication/

Her kan du finde en masse scripts der kan opfylde dine krav.
Avatar billede parazite Nybegynder
08. oktober 2001 - 15:11 #2
Du får mig ikke til at lave systemet fra bunden, men her får du nogle tips: (Alt dette er forslag - du kan naturligvis selv ændre hvad du lyster.)
I din mySQL-database opretter du en ny tabel, som du kalder brugere. Der skal være 3 felter:
brugernavn (varchar 30)
kodeord (varchar 30)
id (auto_increment)

Du laver så en side med en loginform:
<form action=\"<?=$PHP_SELF;?>\" method=\"post\">
<input type=\"text\" name=\"brugernavn\" value=\"Brugernavn\"><br>
<input type=\"text\" name=\"kodeord\" value=\"Kodeord\"><br>
<input type=\"submit\" value=\"Login\" name=\"ok\"><br>
</form>

I toppen af siden laver du så:
<?
session_start();
if ($ok) {
    // Hent brugernavnet og kodeordet ud fra databasen.
    if ($kodeord == \"$row[kodeord]\") {
        session_register(\"brugernavn\");
        session_register(\"kodeord\");
        header(\"Location: loggetind.php\");
        exit;
    } else {
    print \"Hov - der skete en fejl\";
    }
}
?>

I toppen af alle de sider, som kun brugere skal have adgang til skriver du så:
<?
session_start();
?>
På alle disse sider kan du så skrive:
<?
if (session_is_registered(\"brugernavn)) {
    // Alt det brugeren skal se når han ER logget ind
} else {
    // Alt det brugeren skal når han IKKE er logget ind
}
?>

Tjek evt:
www.php.net/session

Held og lykke, og spørg endelig hvis der er mere du vil vide.
Avatar billede parazite Nybegynder
08. oktober 2001 - 15:12 #3
Rettelse:
<?
if (session_is_registered(\"brugernavn\")) {
    // Alt det brugeren skal se når han ER logget ind
} else {
    // Alt det brugeren skal når han IKKE er logget ind
}
?>
Avatar billede barfoed Nybegynder
09. oktober 2001 - 00:34 #4
En anden ting du burde over veje er sikkerhed....

Hvis der ligger  følsomme informationer i systemet er det ikke smart at overfører brugernavn og kodeord i klar tekst.

Du kan f.eks. bruge md5 kryptering, som er en 1-vejs nøgle, til at sikre dig mod \"ubudne gæster\"

Det er lidt svært at komme med et bud på dit bruger login behov, da det kan løses på mange måder alt efter behov.

Men som parazite skriver skal du kigge på php session funktioner.

Kunne du evt. være lidt mere konkret.. f.eks. koden til det eksisterende system..

jeg smider gerne et eksempel i din retning.. hvis du kan bruge det til noget..
Avatar billede renton Nybegynder
09. oktober 2001 - 09:38 #5
parazite
der hvor du checker kodeord op mod hvad der står i boxen, bliver det ikke sat op imod et brugernavn???
Er det ikke nødvendigt, at man får det rette brugernavn sammen med det tilhørende kodeord.
Så vidt jeg kan se, bliver der kun checket på kodetordet.
En anden ting er det automatiske i at blive logget af?
session_start();
if ($ok) {
    // Hent brugernavnet og kodeordet ud fra databasen.
    if ($kodeord == \"$row[kodeord]\") {
        session_register(\"brugernavn\");
       
Avatar billede renton Nybegynder
09. oktober 2001 - 09:39 #6
barfoed
Da jeg er helt ny, med hensyn til kryptering, ville det være fedt hvis du gad smide et eksempel..
Avatar billede parazite Nybegynder
09. oktober 2001 - 10:57 #7
renton : Du skal naturligvis hive brugernavn og kodeord ud fra databasen med $brugernavn som kriterie. Altså:
SELECT brugernavn, kodeord FROM brugere WHERE brugernavn = \'$brugernavn\'
Lidt skal du jo selv lave! :)
Automatiske i at blive logget af? Det er da muligt, men gør det hele en smule mere besværligt, og hvorfor vil du egentlig have det? Personligt HADER jeg sider, hvor de vil bestemme hvor længe jeg skal være logget ind.
Hvis du alligvel vil, så gør noget i stil med dette:
Tilføj et felt i databasen, der hedde last_action eller noget i den stil.
I dette felt gemmer du time(); (tjek www.php.net/time for at se mere) for deres sidste aktivitet hver gang en side i systemet loades. På den måde kan du hele tiden holde øje med hvor længe det er siden de sidst skifede side.
Rækkefølgen skal være:
Hent last_action ud af databasen. Træk tallet fra time();, og hvis resultatet er større end 15 * 60 (15 minutter i sekunder), så skal de sendes til logud-siden. Er resultatet mindre end 15 * 60, så skal nuværende time(); gemmes i databasen i stedet for det eksisterende.

Er det for kryptisk? Er \"lidt\" træt, så ting der lyder logisk for mig er sikkert kaget for andre! :)

Husk dog, at hvis du eks. har et forum hvor brugeren kan tænkes at lave længere indlæg, så vil der komme tidspunkter hvor han ikke gør noget i mere end 15 minutter fordi han skriver. Når han så sender sit indlæg, så vil han være logget ud, og det bliver ikke tilføjet. Det er ikke muligt, i PHP, at tjekke på samme måde som i JS, altså uden at siden reloades.
Avatar billede renton Nybegynder
09. oktober 2001 - 11:26 #8
får denne fejl når:
Warning: Cannot send session cookie - headers already sent by (output started at D:\\home\\jjense21\\supertips\\login.php:5) in D:\\home\\jjense21\\supertips\\login.php on line 6

når jeg har skrevet
if ($kodeord == \"$row[password]\") {
        session_register(\"brugernavn\");
        session_register(\"password\");
        header(\"Location: kamp.php\");
        exit;

Avatar billede binderup Nybegynder
09. oktober 2001 - 11:31 #9
der må ikke outputtes noget i browseren før du kalder sessions.

Pas også på at der ikke er et linjeskift i toppen af scriptet (dvs. php delen skal begynde på den aller første linje i scriptet).
Avatar billede parazite Nybegynder
09. oktober 2001 - 11:33 #10
Du skal også huske session_start(); i toppen af siden, for at aktivere sessions.
Avatar billede jjense21 Nybegynder
09. oktober 2001 - 13:02 #11
Er der iøvrigt nogen der ved hvordan det fungerer med sessions. Bliver man automatisk logget af når man forlader siden, eller lukker browseren.
Ellers kan man jo risikere at man stadig er logget ind næste gang man besøger siden. Selvfølgelig kan man bare logge af manuelt ligesom man logger på, men hvem husker at logge af når man forlader en side...
Avatar billede binderup Nybegynder
09. oktober 2001 - 13:04 #12
jjense21> du kan jo bare lave et check på hvorfra brugeren kommer. Kommer man fra et andet domæne så bliver den aktuelle session slettet og man skal logge sig på igen.
Avatar billede jjense21 Nybegynder
09. oktober 2001 - 13:11 #13
god idé binderup
Avatar billede parazite Nybegynder
09. oktober 2001 - 21:58 #14
jjense21 : Man logges automatisk ud når man lukker browseren. Der er altså ingen fare for at en person er logget ind, når han kommer igen en uge senere.
Dog logges man ikke ud når man forlader siden.
Avatar billede parazite Nybegynder
10. oktober 2001 - 12:53 #15
Takker mange gange for point. Er glad for du kunne bruge det. Dog synes jeg 220 point er i overkanten, så sig til hvis du vil have de 100 igen. :)
Avatar billede renton Nybegynder
10. oktober 2001 - 13:27 #16
nevermind...spørgerbare om mere, hvis der opstår yderligere problemer med loginsystemet :)
Avatar billede parazite Nybegynder
10. oktober 2001 - 13:36 #17
Det er du mere end velkommen til! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester