Adgangs kontrol
JEg har prøvet at lave denne classe. er der nolge der har nogle kommetarer eller noget ? - der er til tider problemmer med at få adgangsboksen frem på eksterne maskiner.. der gives 60 point da det jo tager lidt tid at kigge igennem..classen kaldes således :
$login = new Access;
$login->check_login();
Kildekoden :
<?php
class access {
var $user_id;
var $SESSION;
function check_login () {
if ($SESSION[access] == false) {
/*Logger brugeren ind*/
if ($this->login() == True) {
$SESSION[access] = True;
}
}
} // end : check_login()
function login(){
GLOBAL $sql,$PHP_AUTH_USER, $PHP_AUTH_PW;
/*Hvis man har indtastet brugernavn og adgangskode*/
if(isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW)) {
$md5_pass = md5($PHP_AUTH_PW); // Krypterer koden, så vi kan teste om den er ens med den i databasen
$sql->Queryitem("SELECT * FROM users WHERE password = '$md5_pass' AND username = '$PHP_AUTH_USER'");
if ($sql->data) {
if ($md5_pass == $sql->data[password] && $PHP_AUTH_USER == $sql->data[username]) {
$this->user_id = $sql->data[id];
$this->SESSION[access] = True;
return True;
} else {
/*Brugernavn eller adgangskode er forkert*/
sleep("2"); // Forsinker resultatet 2 sec, for at modvirke bruceforce angreb
print errormsg("Du har indtastet forkert brugernavn eller adgangskode<br>Du skal åbne en ny browser for at prøve igen..");
exit;
}
} elseif (!$sql->data) {
/*Brugernavn eller adgangskode er forkert*/
sleep("2"); // Forsinker resultatet 2 sec, for at modvirke bruceforce angreb
print errormsg("Du har indtastet forkert brugernavn eller adgangskode<br>Du skal åbne en ny browser for at prøve igen..");
exit;
}
} else {
/*Brugeren skal indtaste brugernavn og adgangskode*/
header( "WWW-Authenticate: Basic realm=\"Authentication\""); // realm, er den tekst som kommer til at stå i boksen
header( "HTTP/1.0 401 Unauthorized");
print errormsg("Adgang nægtet !"); // Hvis der trykkes "Cancel"
exit;
}
} // end : login()
} // end access()
?>