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.
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.
|
5. Gebruikte functies
- PHP
- ob_start(); Deze functie zorgt ervoor dat je cookies mag/kunt zetten en headers (locatie/refresh) kunt toepassen
- isset() Controleren of sessions,cookies en/of variabelen zijn aangemaakt
- md5() Zet een string of integer om naar de MD5 hash. niet omkeerbaar.
- htmlentities() Maakt van HTML tekens de entities. (de " wordt: " enz). Dit doe je om te voorkomen dat je query goed uitgevoerd wordt.
- setcookie([naam],[waarde],[verloopt],[pad]) Hiermee word een cookie geset.
- header() Deze code kan de pagina doen verversen doormiddel van: "refresh:[tijd]" of doorverwijzen dmv "location:[locatie]"
- <?= Dit is de shorttag van PHP. dit is hetzelfde als <?php echo.
- $_SERVER['PHP_SELF'] Dit is de naam van het bestand waar het in geparsed wordt.
- MySQL
- Query De query is het gedeelte dat uitgevoerd word. Hiermee kan bijvoorbeeld data worden opgehaald uit de database.
- mysql_connect([hostnaam],[gebruikersnaam],[wachtwoord]) Met dit commando maakt de pagina verbinding met de database.
- mysql_select_db([database naam]) Aangezien er in een database meerdere subdatabases kunnen bestaan. kiest dit commando de juiste uit.
Er zal alleen verbinding met de tabellen in die subdatabase gemaakt kunnen worden.
- mysql_query() Met dit commando voer je de query uit.
- mysql_num_rows() Dit commando telt het aanal aangetaste rijen van een query