Avatar billede BTEngineer Novice
01. april 2007 - 15:26 Der er 5 kommentarer og
1 løsning

Et godt og sikkert login system?

Hej Eksperter.

Jeg ville lige hører jer, om hvordan i syntes et godt og sikkert login system skal kodes?

Jeg koder normalt mit således:
------------------------------------------------------------------
<?
session_start();
if(isset($_SESSION['user']) AND isset($_SESSION['pass'])) {
    include("access.php");
} else {

include("../inc/cfg.php");
?>

<html>

<head>

<title>Log på</title>


</head>

<body>

<?
if($_POST[logon]) {

if(!$_POST[user] || !$_POST[pass]) {
    $fejl[] = "Alle felter blev ikke udfyldt.";
}

$check_user = mysql_query("SELECT * FROM brugere WHERE user LIKE '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error());
$check = mysql_fetch_array($check_user);

if($check[user] == "") {
    $fejl[] = "Brugernavn og kodeord passede ikke sammen.";
}

if($check[aktiveret] != "ja") {
    $fejl[] = "Du har ikke aktiveret din bruger endnu, tjek din email og klik på aktiveringslinket.";
}

if($fejl) {
    for($i=0;
    sizeof($fejl) > $i;
$i++) {
    echo("<font color='RED'><b>$fejl[$i]</b></font><br>");
}
} else {

$_SESSION[user] = $_POST[user];
$_SESSION[pass] = $_POST[pass];
$logon_date     = date('d/m-Y');

print "<font color='blue'><b>Henter nødvendige data..</b></font>";
    mysql_query("UPDATE brugere SET loginet = '$logon_date' WHERE user = '$_SESSION[user]'") or die(mysql_error());
print "<meta http-equiv=\"refresh\" content=\"0; url=access.php\">";

mysql_close();

}
}

if($fejl || !$_POST[logon]) {
?>

<form action="logon.php" method="POST">

<b>Brugernavn:</b><br>
<input type="text" name="user" size="35" value="<? echo $_POST[user]; ?>">
<br>
<b>Kodeord:</b><br>
<input type="password" name="pass" size="35">
<br>
<br>

<input type="submit" name="logon" value="Log på">

</form>

<?
}
?>

</body>

</html>

<?
}
?>
-----------------------------------------------------------------
Hvordan kan jeg gøre det mere professionelt og sikkert?
Og hvis nu jeg skal lave admin statuser, hvor nogen kan mere end andre osv. Hvordan kan jeg så lave det lettest?

Håber i kan komme med lidt kode, og nogle forslag.
Avatar billede mcgoat Nybegynder
02. april 2007 - 09:32 #1
forstår ikke helt hvorfor du bruger LIKE:

$check_user = mysql_query("SELECT * FROM brugere WHERE user LIKE '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error());

Og så ville jeg nok lægge mine passwords krypteret i databasen f.eks med PHP funktionen md5()
Avatar billede BTEngineer Novice
02. april 2007 - 09:44 #2
Hvad skulle jeg da ellers bruge??

Og hvordan tjekker man om passwordet er korrekt, når det er krypteret med md5() ?
Avatar billede mcgoat Nybegynder
02. april 2007 - 11:11 #3
Når du opretter en bruger gør du noget ala:

$SQL = "INSERT INTO table_users VALUES(NULL,'".$brugernavn."','" , md5($pass) . "')";

Så er password gemt med md5.

Så ville jeg nok lave login funktionen sådan her:

$SQL = "SELECT * FROM users WHERE username=" . $username . " AND password=" . md5($password);
Avatar billede intenz Novice
02. april 2007 - 11:25 #4
Du kan også bruge korrekt syntaks.
F.eks. skal $_POST[user] være $_POST['user'].
Avatar billede intenz Novice
02. april 2007 - 11:27 #5
Omkring kryptering af password kan du også læse denne artikel:
http://www.eksperten.dk/artikler/1051
Avatar billede BTEngineer Novice
14. juli 2007 - 16:21 #6
lukker
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