Avatar billede logitech33 Nybegynder
19. marts 2007 - 12:15 Der er 11 kommentarer og
1 løsning

Simple login

jeg har lavet en simple login side som er koblet til en database..
jeg er total newbie til php,

det er min kode :

include("mysql.php");


$query = mysql_query("SELECT * FROM bruger WHERE brugernavn = '$_POST[brugernavn]' AND kodeord = '$_POST[kodeord]'");

$antal = mysql_num_rows($query);

if($antal == 0) {
echo " Du skal logge ind ... ";
die();
}

ellers bliver siden vist, men problemet er, hvergang browseren bliver refreshed, så skal man login igen,jeg kunne desuden godt tænke mig at udbygge min side med flere links, hvordan går jeg så den husker adgangskoden til underlæggende sider...
Avatar billede mcgoat Nybegynder
19. marts 2007 - 12:45 #1
session_start();
include("mysql.php");


$query = mysql_query("SELECT * FROM bruger WHERE brugernavn = '$_POST[brugernavn]' AND kodeord = '$_POST[kodeord]'");

$antal = mysql_num_rows($query);

if($antal == 0) {
echo " Du skal logge ind ... ";
}
else
{
$_SESSION['loggedin'] == "1";
}

så på de andre sider kan du lave en session_start(), og så spørge: if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == "1")
Så er man logged ind
Avatar billede logitech33 Nybegynder
19. marts 2007 - 13:32 #2
include("mysql.php");
session_start();

$query = mysql_query("SELECT * FROM bruger WHERE brugernavn = '$_POST[brugernavn]' AND kodeord = '$_POST[kodeord]'");
$antal = mysql_num_rows($query);

if($antal == 0) {
echo " Du skal logge ind ... ";
die();
}
else
{
$_SESSION['loggedin'] == "1";
}

session_start()
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == "1")
else
echo " Du skal logge ind ";
die();

og under side :

session_start()
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == "1")
else
echo " Du skal logge ind ";
die();


hvad har jeg gjordt forkert ? det ser ikke ud til at virke .. som sagt.. TOTAL noob
Avatar billede logitech33 Nybegynder
19. marts 2007 - 13:35 #3
jeg mener :

include("mysql.php");
session_start();

$query = mysql_query("SELECT * FROM bruger WHERE brugernavn = '$_POST[brugernavn]' AND kodeord = '$_POST[kodeord]'");
$antal = mysql_num_rows($query);

if($antal == 0) {
echo " Du skal logge ind ... ";
die();
}
else
{
$_SESSION['loggedin'] == "1";
}

og under side er :
session_start()
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == "1")
else
echo " Du skal logge ind ";
die();
Avatar billede mccookie Seniormester
19. marts 2007 - 14:24 #4
1)

Din session_start() skal være øverst

2)

Lidt sikkerhed
SELECT * FROM bruger WHERE md5(brugernavn) = 'md5($_POST[brugernavn])' AND md5(kodeord) = 'md5($_POST[kodeord])'

Så skal du ikke tænke så meget på hvad brugeren sender til dig ;)

Ved godt der er andre metoder, men denneher virker ganske udmærket!
Avatar billede logitech33 Nybegynder
19. marts 2007 - 14:27 #5
min kodeord i databasen er ikke md5.. det er ren tekst.. kan jeg få dig til hvordan det virker mere sikkert ? udover den krypter ;) hvis du gider.. lideledes smid et svar ;)
takker
Avatar billede logitech33 Nybegynder
19. marts 2007 - 14:38 #6
når jeg går ind på


minside.dk/login.php så logger jeg ind .. og bliver forwarded til index.php..

hvis jeg skriver
minside.dk/index.php så får jeg en pænt afvide at jeg skal logge ind..

men hvis jeg går direkte ind på en af underlæggende sider med
session_start()
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == "1")
else
echo " Du skal logge ind ";
die();

så får jeg lov til dette uden at logge ind ..  efter jeg har besøgt en underlæggende side. så kan jeg ikke få lov til at kom ind på index.php igen .. da den beder mig om at logge ind igen.. hvad gør jeg ?
Avatar billede mccookie Seniormester
19. marts 2007 - 15:31 #7
Hej du....

Det er meget simpelt vha. af md5 så sammenligner du brugernavn med DB og for begges vedkomne er de om man vil "krypteret" hvorved du ikke behøver at tage hensyn til lumske banditter der vil dig ondt!

Du kan få et kopi af noget login jeg har lavet.....


    $username = md5($_REQUEST['username']);
    $password = md5($_REQUEST['password']);
   
    $sql = "SELECT id FROM TABEL WHERE md5(username) = \"" . $username . "\" AND md5(password) = \"" . $password . "\" AND aktiv = \"1\"";
    open_db();
    $query = mysql_query($sql);
    if(!mysql_num_rows($query) == 1)
        {
            // Brugeren ikke genkendt
            $_SESSION['login'] = false;
            $_SESSION['action'] = "";
            header("Location: $host");  // $host = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
            exit;
           
        }     else
        {
            // Brugeren blev genkendt
           
            while($result = mysql_fetch_array($query))
                {
                    extract($result);
                }
               
                        $sql = "SELECT username, password FROM DB WHERE id = \"" . $id . "\"";
                        $new_query = mysql_query($sql);
                            while($new_result = mysql_fetch_array($new_query))
                                {
                                    extract($new_result);
                                    $_SESSION['username'] = $username;
                                    $_SESSION['password'] = $password;
                                    $_SESSION['id']          = $id;
                                    $_SESSION['login'] = true;                   
                                }               
        }
       
    close_db();

Prøv at se om det kan inspirrere dig lidt....

Tror jeg ville gøre sådan:

if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == "1")
if(!$_SESSION['loggedin'] == true) { // Tilbage hvor du kom fra } else
{ // Velkommen Mulle }

og så sæt din session til true når du har godkendt dem ;)

///Henning
Avatar billede logitech33 Nybegynder
21. marts 2007 - 13:41 #8
Ok, vi glemmer alt omkring sikkerhed.. lige i først omgang ... jeg kan ikke få det til at virke.. jeg kan fint login .. men når jeg bruger underlæggende sider så virker det ikke.. ...

i alle underlæggende sider tilføjer jeg denne linje :
session_start();
og
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == "1")
if(!$_SESSION['loggedin'] == true) { } else
{  }
Avatar billede mccookie Seniormester
21. marts 2007 - 22:59 #9
http://www.pcproblemer.dk/exp768838/

Her er en simpel, enkelt og sikker løsning.

Filerne er highlightet så du kan se koden og blot copy/paste den.

Alle sider du ønsker beskyttet af password, inkludere du følgende fil: login.inc.php

///Henning
Avatar billede logitech33 Nybegynder
22. marts 2007 - 10:11 #10
takker
Avatar billede denny Nybegynder
22. marts 2007 - 17:38 #11
Hej Henning,

Kanon script men vil du forklar denne her kode:
highlight_file($_SERVER['DOCUMENT_ROOT'] . "/exp768838/login.inc.php");
Avatar billede mccookie Seniormester
22. marts 2007 - 18:12 #12
Den highligther blot filen, så du kunne se kildekoden ;)
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