Inlog en registratie

Voor dat je aan deze tutorial begint, moet je hebben:
- een werkende MySQL database
- Een host die alle PHP commando's ondersteund
- Basis van PHP


Stappen:

1. Tabellen maken in de database
2. Configuratie file
3. Home/Login
4. Registreren
5. Gebruikte funties


1. Tabellen aanmaken in de database


In deze tutorial maken we gebruik van een niet al te uitgebreide tabel.
Alleen de basisbegrippen. Hier kunnen gemakkelijk andere velden in toegevoegd worden via bijvoorbeeld: PHPMyAdmin.

Wij gebruiken een tabel met de volgende lay-out:

Naam: leden
Velden:
-id
-naam
-wachtwoord

!! Zie vooral dat alle veldnamen en de tabelnaam met kleine letters zijn geschreven. Dit is alleen maar ter verduidelijking. Dit is niet noodzakelijk. Maar overal moet die naam hetzelfde geschreven worden.

Deze tabel kan met de volgende query uitgevoerd worden.

CREATE TABLE `leden` (
`id` INT( 8 ) NOT NULL ,
`naam` VARCHAR( 255 ) NOT NULL ,
`wachtwoord` VARCHAR( 40 ) NOT NULL
) TYPE = MYISAM ;


2. Configuratie file

Nu de database gereed is voor gebruik gaan we een configuratie bestand maken. Dit bestand helpt de PHP bestanden om verbinding te maken met de database.

    <?PHP
    $dbase
->loginnaam     ' '// Uw loginnaam tot de database
    
$dbase->wachtoord     ' '// Uw wachtwoord tot de databse
    
$dbase->host          ' '// uw hostnaam, vaak localhost
    
$dbase->dbase         ' '// De naam van de database te gebruiken
    // Nu word er verbinding gemaakt, verander hieronder niets!
    
mysql_connect($dbase->host,$dbase->loginnaam,$dbase->wachtwoord);
    
mysql_select_db($dbase->dbase);
    
?>

Deze file sla je op als "config.php" en die gaan we includen op elke pagina. zodat elke pagina verbinding heeft met de database.


3. Home/login

Op deze pagina gaan we inloggen. deze pagina hoeft niet perse de homepage te zijn, maar in deze tutorial wel.
Noem dit bestand index.php . Zonder hoofdletter. Dit zorgt ervoor dat deze pagina standaard als homepage word gepakt.
Dit word een basispagina met geen onzindingen erdoorheen.
Dit word de codering, de aantekeningen geven verdere uiteg.

<?php
ob_start
();
include 
"config.php";
?>
<html>
<head>
<title>Login</title>
</head>

<body align="center">
<?php
// hier word gekeken of er al gesubmit is
if(isset($_POST['login'])&&$_POST['login']=="Login"){
    
$wachtwoord md5($_POST['wachtwoord']); // het wachtwoord coderen
    
$loginnaam htmlenities($_POST['loginnaam']); // de loginnaam vereenvoudigen
    
$sql mysql_query("SELECT * FROM leden WHERE loginnaam='".$loginnaam."' AND wachtwoord='".$wachtwoord."'"); 
    
// een query maken om te zoeken of de gebruiker bestaat
    
if(mysql_num_rows($sql)==1){ // kijken hoeveel rijen er zijn. als er 1 is, is het de juiste gebruiker
        // de gebruiker bestaat en het wachtwoord is goed
        
setcookie("<sitenaam>login",$loginnaam,"0","/");
        
header("location:loggedin/");
        
// er word een cookie geset en je word doorverwezen naar de map loggedin
    
}
    else{
        
// de gebruiker bestaat niet of het wachtwoord is niet correct
        
?>
        <table>
            <tr>
                <td><font color="red">De opgegeven gebruiker bestaat niet<br />of het wachtwoord is niet correct</font></td>
            </tr>
        </table>
        <?    
    
}
}
// de rest van de pagina, als er nog niet gesubmit is
else{
?>
<!-- natuurlijk wel netjes in het midden uitlijnen ;) -->
<form name="login" method="post" action="<?=$_SERVER['PHP_SELF'];?>">
<table align="center">
<tr>
    <td colspan="2" align="center">Login</td>
</tr>
<tr>
    <td align="right">Loginnaam:</td>
    <td><input type="text" maxlenght="255" name="loginnaam" value="" /></td>
</tr>
<tr>
    <td align="right">Wachtwoord:</td>
    <td><input type="text" maxlenght="255" name="wachtwoord" value="" /></td>
</tr>
<tr>
    <td colspan="2" align="center"><input type="submit" name="login" value="Login" /></td>
</tr>
</table>
</form>
<p align="center"><a href="registreren.php">Registreren</a></p>
</body>
</html>
<?php
// de else afsluiten
?>
Dit zal er als volgd uit komen te zien zodra je op de pagina komt.

Login
Loginnaam:
Wachtwoord:

Registreren


4. registreren

Deze pagina word gebruikt om jezelf te registreren op de site. Ook deze is naar smaak aan te passen en meerdere opjecten toe te passen.
Noem onderstaand bestand registeren.php

<?php
ob_start
();
include 
"config.php";
?>
<html>
<head>
<title>Registratie</title>
</head>
<body align="center">
<?php
if(isset($_POST['submit'])){
// wat te doen zodra er gesubmit is
    /*Deze controle is alleen om te kijken of degebruiker al bestaat en of de velden wel beide zijn ingevuld. 
    Dit kan natuurlijk veel uitgebreider. Huiswerk :P 
    Bijvoorbeeld door te kijken of de string wel een bepaalde lengte heeft enz*/
    
$error ""// een lege error aanmaken
    
if(empty($_POST['loginnaam'])){
        
$error .= "<br />Je hebt geen loginnaam ingevoerd";
    }
    if(empty(
$_POST['wachtwoord'])){
        
$error .= "<br />Je hebt geen wachtwoord ingevoerd";
    }
    if(
$error!=""){
        die(
$error);
    }
    else{
        
// de controle of de gebruikersnaam al bestaat
        
if(mysql_num_rows(mysql_query("SELECT naam FROM leden WHERE naam='".$_POST['loginnaam']."'))>0){
            die("
De ingevoerde gebruikersnaam is al in gebruik.<br /><a href="history.back()\">Vorige</a>");
        }
        else{
            
// de gebruikersnaam is nog niet in gebruik en zal nu ingevoerd gaan worden
            
$query "INSERT INTO leden (naam, wachtwoord) VALUES ('".htmlentities($_POST['loginnaam'])."','".md5($_POST['wachtwoord'])."')";
            
$sql mysql_query($query);
            
?>
            <b>Je bent nu geregistreerd</b><br /><a href="index.php">Inloggen</a>
            <?
        
}
    }
}
else{
// wat te doen als er nog niet is gesubmit
?>
    <form name="registratie" method="post" action="<?=$_SERVER['PHP_SELF'];?>">
    <table align="center"><!-- netjes uitlijnen -->
        <tr>
            <td colspan="2" align="center">Registreren</td>
        </tr>
        <tr>
            <td>Gewenste loginnaam:</td>
            <td><input type="text" name="loginnaam" value="" /></td>
        </tr>
        <tr>
            <td>Wachtwoord:</td>
            <td><input type="text" name="wachtwoord" value="" /></td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" name="submit" value="Registreren" /></td>
        </tr>
    </table>
    </form>
<?php
}// else afsluiten
?>
</body>
</html>
?>
Dit zal er als je nog niet geregistreerd hebt, er zo uit te zien.

Registreren
Gewenste loginnaam:
Wachtwoord:


5. Gebruikte functies