Avatar billede Frederik Nybegynder
22. april 2006 - 11:50 Der er 23 kommentarer og
1 løsning

Hvordan fungerer et login system?

Hej.

Jeg kunne godt tænke mig at vide hvordan et login system skal være bygget op. Hvad man bruger til at få husket et login og hvordan man beskytter sine sider med et login.

Håber ikke det er helt volapyk.


- Frederik
Avatar billede webstuff Nybegynder
22. april 2006 - 12:10 #1
Du kan f.eks lave det med sessions:

#login.html{
en ganske almindelig html form
}

#login.php{
session_start();

//mysql_connect osv her

//Får fat i de indtastede oplysninger
$brugernavn = $_POST['brugernavn'];
$kodeord = $_POST['kodeord'];

//Tæller hvor mange rækker hvor både kodeord og brugernavn passer
$tael = mysql_query("SELECT COUNT(*) FROM brugerTabel WHERE brugernavn = '$brugernavn' AND kodeord = '$kodeord'") or die(mysql_error());

//Finder antallet
$antal = mysql_result($tael, 0);

//Tjekker om der var 1 match
  if($antal==1){
  //Sætter en session hvis det var de rigtige oplysnigner
  $_SESSION[login] = true;
 
  //Sender brugeren videre til den hemmelige side
  header("location: secret_page.php");
  exit;
  } else {
  echo "Forkert brugernavn eller kodeord!";
  }
}

Og så kan du tjekke om brugeren er logget ind sådan her

#secret_page.php
<?
session_start();

//Tjekker om sessionen er sand (om brugeren er logget ind)
if($_SESSION[login] == true){
  echo "Velkommen til den hemmelige side!";
} else {
  echo "Du skal være logget ind for at se denne side!";
}
?>
Avatar billede Slettet bruger
22. april 2006 - 13:10 #2
1: Database med kodeord og brugernavne.*
2: Login funktion der tjekker om brugernavn+kodeord passer sammen og sætter en session / cookie.
3: System der tjekker om session er sat.
Som i ovenstående eksempel.

*Rent etisk vil jeg anbefale at man md5-hasher kodeordene så tredjepart (hacker der har kompromiteret databasen) eller en selv ikke har fri adgang til sine brugeres kodeord. - Kodeord bliver desværre ofte genbrugt i e-mail kontoer.
Avatar billede Frederik Nybegynder
22. april 2006 - 16:03 #3
Kan du/i beskrive hvordan en session virker???
er det på samme måde som en cookie??


- Frederik
Avatar billede webstuff Nybegynder
23. april 2006 - 18:30 #4
Ja det er faktisk på samme måde som cookies, dog ødelægges en session når browservinduet lukkes.
og den udløber efter ca. 24 min.. Det er ikke muligt at sætte udløbstid på en session..
Du skal bare huske at have "session_start();" ALLER ØVERST i din kode :)
Avatar billede Frederik Nybegynder
23. april 2006 - 22:30 #5
Okay :) Du skal have mange tak :)
Når man nu laver et login, er det så mulig at inddele en side i forskellige niveauer? Så der kan være en admin del, og en bruger del??


- Frederik
Avatar billede webstuff Nybegynder
24. april 2006 - 08:40 #6
Ja du kan f.eks have et felt i brugertabellen som du kalder for "admin" som er et varchar(5) felt.
Og hvis brugeren er admin, så skal feltet stå til "ja" ellers skal der stå "nej".
Så tjekker du om feltet står til "ja" og hvis det gør, så sætter du bare en ekstra session som hedder "admin".
Det kan du gøre ved at tilføje lidt mere til "login.php".:
----------------------------------------------
#login.php{
session_start();

//mysql_connect osv her

//Får fat i de indtastede oplysninger
$brugernavn = $_POST['brugernavn'];
$kodeord = $_POST['kodeord'];

//Tæller hvor mange rækker hvor både kodeord og brugernavn passer
$tael = mysql_query("SELECT * FROM brugerTabel WHERE brugernavn = '$brugernavn' AND kodeord = '$kodeord'") or die(mysql_error());

//Finder antallet
$antal = mysql_num_rows($tael);

//Tjekker om der var 1 match
  if($antal==1){
  //Vi laver et array ud fra vores variabel $tael
  $vis = mysql_fetch_assoc($tael);

  //Sætter en session hvis det var de rigtige oplysnigner
  $_SESSION[login] = true;

  if($vis[admin] == "ja"){
    $_SESSION[admin] = true;
  }

  //Sender brugeren videre til den hemmelige side
  header("location: secret_page.php");
  exit;
  } else {
  echo "Forkert brugernavn eller kodeord!";
  }
}
--------------------------------------------

Og så tjekker du om brugeren er administrator, sådan her:

if($_SESSION[admin] == "ja"){
  echo "du er logget ind som administrator!";
}
Avatar billede webstuff Nybegynder
24. april 2006 - 09:37 #7
RETTELSE:

Og så tjekker du om brugeren er administrator, sådan her:

if($_SESSION[admin] == true){
  echo "du er logget ind som administrator!";
}
Avatar billede Frederik Nybegynder
24. april 2006 - 15:38 #8
Hvorfor skal varchar være (5) Det er jo "Nej" der er flest bogstaver i, og der er jo 3 ??
Avatar billede webstuff Nybegynder
24. april 2006 - 17:24 #9
så laver du den bare til varchar(3) ;o)
Avatar billede webstuff Nybegynder
25. april 2006 - 21:05 #10
Har du fundet ud af noget ?:-)
Avatar billede Frederik Nybegynder
27. april 2006 - 16:03 #11
Jeg er lige ved at prøve mig lidt frem.. Vender tilbage når jeg har fundet et resultat...
Avatar billede Frederik Nybegynder
27. april 2006 - 16:17 #12
Jeg har denne kode:

{
session_start();

<?php

require("config.php");

$login = &$HTTP_POST_VARS['login'];



if(empty($login)) {

    echo 'Denne side kræver login adgang'; }

    else {



$username = &$HTTP_POST_VARS['username'];

$password = &$HTTP_POST_VARS['password'];





if(empty($username) OR empty($password)) {

    echo 'Felterne "Brugernavn" og "Password" skal udfyldes!'; }   

    else {

mysql_connect($mysql_host, $mysql_user, $mysql_pw);

mysql_select_db($mysql_db);


$result_user = mysql_query("select username from usersystem where brugernavn = '$username'")

or die (mysql_error());

$result_pw = mysql_query("select password from usersystem where password = '$password'")

or die (mysql_error());

$array_user = mysql_fetch_array($result_user);

$array_pw = mysql_fetch_array($result_pw);

if($array_user['username'] == $username AND $array_pw['password'] == $password) {

$_SESSION[login] = true;
}
}
}
  header("location: test_side.php");
  exit;

else {

echo 'Forkerte login oplysninger!';

}

}

}

?>


Jeg får en fejl, hvor der står:
Parse error: syntax error, unexpected T_ELSE in C:\Programmer\xampp\htdocs\IKY\Login\login_confirm.php on line 60


Kan i hjælpe med dette problem?
Avatar billede webstuff Nybegynder
27. april 2006 - 18:56 #13
Hvad med den her?

----------------------------------------------------

<?php
session_start();
require("config.php");
$login = $_POST['login'];
if(empty($login)) {
    echo 'Denne side kræver login adgang';
} else {
    $username = $_POST['username'];
    $password = $_POST['password'];

    if(empty($username) || empty($password)) {
        echo 'Felterne "Brugernavn" og "Password" skal udfyldes!';
    } else {
        mysql_connect($mysql_host, $mysql_user, $mysql_pw);
        mysql_select_db($mysql_db);
        $tael = mysql_query("SELECT COUNT(*) FROM usersystem WHERE brugernavn = '$username' AND password = '$password'")or die (mysql_error());
        $antal = mysql_result($tael, 0);

        if($antal == 1) {
            $_SESSION[login] = true;
            header("location: test_side.php");
            exit;
        } else {
            echo 'Forkerte login oplysninger!';
        }
    }
}
?>
Avatar billede Frederik Nybegynder
28. april 2006 - 18:30 #14
Den skriver der er forkert login..?

#login.php
<form action="login_confirm.php" method="post">

Brugernavn: <input type="text" name="username">

Password: <input type="password" name="password">

<input type="submit" name="login" value="Login">

</form>

#login_confirm.php
<?php
session_start();
require("config.php");
$login = $_POST['login'];
if(empty($login)) {
    echo 'Denne side kræver login adgang';
} else {
    $username = $_POST['username'];
    $password = $_POST['password'];

    if(empty($username) || empty($password)) {
        echo 'Felterne "Brugernavn" og "Password" skal udfyldes!';
    } else {
        mysql_connect($mysql_host, $mysql_user, $mysql_pw);
        mysql_select_db($mysql_db);
        $tael = mysql_query("SELECT COUNT(*) FROM usersystem WHERE username = '$username' AND password = '$password'")or die (mysql_error());
        $antal = mysql_result($tael, 0);

        if($antal == 1) {
            $_SESSION[login] = true;
            header("location: test_side.php");
            exit;
        } else {
            echo 'Forkerte login oplysninger!';
        }
    }
}
?>

#test_side.php
<html>
<head></head>
<body>
<?php
if($_SESSION[login] == true){
  echo 'du er logget ind.!';
} else {
            echo 'Forkerte login oplysninger!';
        }
?>
</body>
</html>
Avatar billede webstuff Nybegynder
30. april 2006 - 11:48 #15
Det er forside din side skal have session_start();

#test_side.php
<? session_start(); ?>
<html>
<head></head>
<body>
<?php
if($_SESSION[login] == true){
  echo 'du er logget ind.!';
} else {
            echo 'Forkerte login oplysninger!';
        }
?>
</body>
</html>
Avatar billede Frederik Nybegynder
30. april 2006 - 17:20 #16
Super :D

Nu virker det, men kan man ikke få den til at inkludere en side hvis der er rigtigt login, og en anden side, hvis det er forkert, i stedet for at der kun bliver vist noget tekst?


- Frederik
Avatar billede Frederik Nybegynder
30. april 2006 - 17:30 #17
Dumt formuleret før... prøver igen..

Når jeg skriver denne kode:

<? session_start(); ?>
<html>
<head></head>
<body>
<?php
if($_SESSION[login] == true){
  include("blabla.php");
} else {
            echo 'Forkerte login oplysninger!';
        }
?>
</body>
</html>

Kan jeg så ikke have skrive noget i blabla.php så den tjekker om man er logget ind? hvis man ikke er, så bliver siden ikke vist..??
Avatar billede webstuff Nybegynder
01. maj 2006 - 17:16 #18
Altså du kan jo f.eks lave en fejlside som du sender brugeren videre til hvis der er forkert login.

<? session_start(); ?>
<html>
<head></head>
<body>
<?php
if($_SESSION[login] == true){
  include("blabla.php");
} else {
            echo "<meta http-equiv=\"refresh\" content=\"0;url=fejl_side.php\">";
        }
?>
</body>
</html>

Men så skal du også tjekke login'et på blabla.php - ellers kan brugeren jo bare gå direkte dertil :-)
Avatar billede Frederik Nybegynder
01. maj 2006 - 17:37 #19
Men du kan jo gå ind på siden "blabla.php" hvis du skriver den direkte adresse.. Kan man lave et tjek på en side så den viser noget hvis det er rigtigt login, og noget andet hvis det er forkert login...
Avatar billede Frederik Nybegynder
01. maj 2006 - 17:40 #20
Sorry, fik ikke læst det sidste..

Hvis man nu skulle lave et login tjek på en side hvor strukturen ser sådan her ud:

<html>


<head>
<title>sddgdsgfd</title>
<link rel="stylesheet" type="text/css" href="style1.css">
</head>

<body>
<p align="center">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" id="AutoNumber1">
<tr>
<td>
<table border="0" width="750">

<tr>

    <td background="images/top_bg.jpg" height="150" width="750" colspan="3">


    </td>

</tr>

<tr>

<td width="150">
<p align="center">
<br>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" id="AutoNumber1">
<tr>
<td>
nioofsdonfsd
</td>
</tr>
</table>
</p>
<table border="0" height="100%">
<tr>
<td height="100%">
</td>
</tr>
</table>
</td>

    <td width="450">
<br><p align="center">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" id="AutoNumber1">
<tr>
<td>
sdkmsdksdklnfsdklnfsdkln

</td>
</tr>
</table></p>
<table border="0" height="100%">
<tr>
<td height="100%">
</td>
</tr>
</table>

    </td>

    <td width="150">
<br>
<p align="center">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" id="AutoNumber1">
<tr>
<td>
nougsbgo
</td>
</tr>
</table>
        </p>

<table border="0" height="100%">
<tr>
<td height="100%">
</td>
</tr>
</table>


    </td>

    </tr>


    <tr>
        <td width="750" colspan="3">

bfuisdbisd

</td>
    </tr>



</table>
<br>
</td>
</tr>
</p>

</body>


</html>
Avatar billede webstuff Nybegynder
02. maj 2006 - 19:08 #21
<? session_start(); ?>
<html>
<head>
<title>sddgdsgfd</title>
<link rel="stylesheet" type="text/css" href="style1.css">
</head>

<body>
<?
if($_SESSION['login']){
?>
<p align="center">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" id="AutoNumber1">
<tr>
<td>
<table border="0" width="750">

<tr>

    <td background="images/top_bg.jpg" height="150" width="750" colspan="3">


    </td>

</tr>

<tr>

<td width="150">
<p align="center">
<br>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" id="AutoNumber1">
<tr>
<td>
nioofsdonfsd
</td>
</tr>
</table>
</p>
<table border="0" height="100%">
<tr>
<td height="100%">
</td>
</tr>
</table>
</td>

    <td width="450">
<br><p align="center">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" id="AutoNumber1">
<tr>
<td>
sdkmsdksdklnfsdklnfsdkln

</td>
</tr>
</table></p>
<table border="0" height="100%">
<tr>
<td height="100%">
</td>
</tr>
</table>

    </td>

    <td width="150">
<br>
<p align="center">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" id="AutoNumber1">
<tr>
<td>
nougsbgo
</td>
</tr>
</table>
        </p>

<table border="0" height="100%">
<tr>
<td height="100%">
</td>
</tr>
</table>


    </td>

    </tr>


    <tr>
        <td width="750" colspan="3">

bfuisdbisd

</td>
    </tr>



</table>
<br>
</td>
</tr>
</p>
<?
} else {
    echo "Du skal være logget ind for at se denne side!";
}
?>
</body>


</html>
Avatar billede Frederik Nybegynder
04. maj 2006 - 19:28 #22
Jeg takker mange gange :)


- lukker
Avatar billede webstuff Nybegynder
04. maj 2006 - 19:31 #23
Selv tak og tak for point :-)

//Webstuff
Avatar billede bigtime Nybegynder
23. august 2008 - 20:58 #24
god gide hehe :D
men ville lige høre hvordan laver du en log ud til den der ?

ved godt det er et gammelt spørgsmål
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

IT-JOB

Politiets Efterretningstjeneste

GenAI Specialist i PET

Politiets Efterretningstjeneste

Teknisk IT-sikkerhedsspecialist i PET

Netcompany A/S

Network Engineer

Politiets Efterretningstjeneste

AI/ML udvikler i PET