Scripts
Http Auth beveiliging met mysql
Met dit scripje kan je een pagina/pagina's beveiligen. Ik heb dit scripje gemaak naar aanleiding van een reactie die ik juist zag staan (http://www.phphulp.nl/php/scripts/1/357/). Je paginas moeten tussen de 2 aangegeven puntjes in de code staan. De code is uitgelegd in het script zelf :-) Een voorbeeldje: User: Testuser Pass: Testpass Opbouwende commentaar is welkom:-) Mvg, Jens EDIT 1: Foutje in de sql opgelost EDIT 2: Superglobals gebruikt EDIT 3: Anti-SQL-Injection toegevoegd (thx niek)
http-auth-beveiliging-met-mysql
[code]
Tabel opbouw van de database:
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
[/code]
<?
include('includes/config.php');//Naar de database connecten.
if (!isset($_SERVER['PHP_AUTH_USER']))//Kijken of er al een form is gesubmit, anders een weergeven.
{
header("WWW-Authenticate: Basic realm=\"Enter Password.\"");
Header("HTTP/1.0 401 Unauthorized");
exit;
}
elseif(isset($_SERVER['PHP_AUTH_USER']))//Als er een username is gesubmit, kijken of de logininformatie klopt.
{
$sql = "SELECT * FROM users WHERE username = '".mysql_real_escape_string($_SERVER['PHP_AUTH_USER'])."' AND password = '".sha1($_SERVER['PHP_AUTH_PW'])."'";//Het paswoord in de database is omgezet met een SHA1 encryptie.
$res = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows ($res) == 1)
{
$row = mysql_fetch_array ($res)//Array opbouwen.
//HIER MOET DE SITE INHOUD
header("Refresh: 3; URL=http://www.jouwsite.be/test.php");
echo 'Dag '.$row['username'].'';
echo '<br>U wordt zodadelijk doorverwezen...';
//HIER STOPT DE SITE INHOUD
}else//Als de logininformatie fout is, form opnieuw weergeven.
{
header("WWW-Authenticate: Basic realm=\"Enter Password.\"");
header("HTTP/1.0 401 Unauthorized");
exit;
}
}
?>
Reacties
0