Regnery.net Internet

HTML CSS PHP MYSQL JQuery SEO – internetoplossingen

Login script PHP MySQL

Als webmaster wil je graag een site waarop bezoekers zich kunnen registreren. Dit vraagt om een inlogscript. Een loginscript php mysql kun je zelf maken. Onderstaand voorbeeld is heel simpel. Op youtube hebben wij een serie films gezet om nog meer aandacht te geven aan het maken van een login script (zie youtube films maken login systeem).

Login script PHP en MySQL

In dit script maak ik een simpel login systeem met PHP en MySQL. Ik ga er vanuit dat je een database hebt met daarin een table “users”. Hierin heb je vier velden, namelijk user_id (int), usernaam (varchar 50), password (varchar 50) en userlevel (int 1 en standaardwaarde op 0).

Vervolgens begin ik met het eerste script, de login pagina. Deze pagina noem ik login.php.

<?php
mysql_connect('127.0.0.1', 'gebruikersnaam', 'wachtwoord');
mysql_select_db('naam_tabel_mysql'); 

if(isset($_POST['login'])) {
$gebruiker = mysql_real_escape_string($_POST['naam']);
$wachtwoord = sha1(mysql_real_escape_string($_POST['password']));

$query = mysql_query("SELECT user_id, username, userlevel
FROM users 
WHERE username = '$gebruiker' 
AND password = '$wachtwoord' "); 

// aantal rijen uit de database halen 
$result = mysql_num_rows($query);

// session variabele starten waaraan je data koppelt
$sess_var = mysql_fetch_assoc($query);
$userlevel = $sess_var['userlevel'];

if ($result == 1){

// sessie starten en variabelen in de sessie opnemen
session_start();
$_SESSION['userlevel'] = $userlevel;
$_SESSION['gebruiker'] = $gebruiker;
$_SESSION['wachtwoord'] = $wachtwoord;

// userlevel controleren en vervolgens bezoeker doorsturen
// naar de juiste pagina's voor zijn/haar rechten
if($userlevel == 1){
header('location:login_member.php');
exit();
} elseif($userlevel == 3) {
header('location:login_admin.php');
exit();
} else {
header('location:login.php');
exit();}
}?>

<html>
<head>
<style type="text/css">
ul {list-style: none;}
</style>
</head>
<body>

<form method="post" action="">
<ul>
<li>Gebruikersnaam:</li>
<li><input typ="text" name="naam" /></li>
<li>Wachtwoord:</li>
<li><input type="password" name="password" /></li>
<li><input type="submit" name="login" value="login" /></li>
</ul>
</form>
</body>
</html>

Loguit pagina

Om uit te loggen moet je de sessie vernietigen. Dit doe je in een apart bestand. Ik heb het bestand loguit.php genoemd. Hierin maak je eerst de sessie mogelijk door te beginnen met de session_start()  functie. Vervolgens vernietig je de sessie door de functie session_destroy() aan te roepen. Om zeker te zijn dat de bezoeker vervolgens niet blijft hangen, gebruik je een header functie om de bezoeker door te verwijzen naar de login pagina. En tot slot, mocht er iets mis gaan, dan stopt het script door de functie exit() aan te roepen.

<?php
session_start();
session_destroy();
header('location: login.php');
exit();
?>

 Beveiligde pagina

Als je als bezoeker de juiste gegevens hebt ingevoerd, moet je uiteindelijk op de gewenste site uitkomen. Via de header functie in login.php komt de bezoeker op de gewenste pagina uit.

Deze pagina heb ik login_admin.php genoemd. Als je userlevel 3 hebt, kun je op deze site uitkomen. Ben je een ‘gewone’ member met userlevel 1, dan kom je uit op de pagina login_member.php.

<?php
session_start();
if(!isset($_SESSION['gebruiker'])){
header('location:login.php');
exit();
}
// controleer niveau userlevel,
// niet correct dan terug naar login
if ($_SESSION['userlevel'] != 3) {
header('location:login.php');
exit();
}?>
<!DOCTYPE html>
<html>
<body>
<h1>Admin area</h1>
<p>Hallo <?php echo htmlentities($_SESSION['gebruiker']); ?></p>
<p>Level: <?php echo htmlentities($_SESSION['userlevel']); ?></p>

// staat voor leerdoeleinden ertussen, zelf verwijderen!!
// laat zien wat er in de sessie zit aan gegevens
<p><?php echo "<pre>".print_r($_SESSION)."</pre>"; ?></p>

<p><a href="loguit.php">Log uit</a></p>
</body>
</html>

Bovenstaand script is voor de login_admin.php pagina. Voor de login_member.php moet je de code if ($_SESSION['userlevel'] != 3) veranderen van 3 naar 1.

 Vervolg…

Dit script biedt je een beetje inzicht in hoe je met sessies, PHP, MySQL en slim nadenken een heel eind kunt komen om een member pagina te gaan opzetten. Let erop dat de sessie variabelen hier nog niet goed beveiligd zijn! Dit kun je zeker nog verder verbeteren. Verder kun je nog allerlei functies gaan toevoegen, zoals aanmelden als nieuwe bezoeker, pagina voor als je bezoeker de gegevens kwijt is, een activatie code per mail toesturen enzovoorts.

Mocht je een belangrijk veiligheidslek zien en vind je dat daaraan aandacht moet worden besteed? Laat dan een bericht achter…… op die manier leert iedereen van jouw kennis.