Scripts

Inlogsysteem 1 gebruiker

Met dit script kun je door middel van een include en 2 functies een inlogsysteem voor 1 gebruiker opzetten. Dit komt van pas in een admin systeem waarbij er toch maar 1 gebruiker is en het zonde van de tijd is om steeds je inlogsysteem in het adminsysteem te gaan verwerken. Het is een relatief simpel stukje code maar ik denk toch dat het voor veel mensen handig is en voor de beginners erg leerzaam. Het grote verschil met het hiervoor geposte script is dat je daar 3 pagina's nodig hebt die je allemaal een naam moet geven en die naam ook aan moet passen in het script, en je hier slechts de naam van het include-bestand en de include zelf aan hoeft te passen. Hieronder vind je eerst de code. Daaronder een voorbeeldje van het gebruik.

inlogsysteem-1-gebruiker
[b]include.inlog.php:[/b]
<?php
<?php
	if(empty($_SESSION)) //als er nog geen sessie gestart is
	{
		session_start(); //dan starten wij hem wel
	}
	
	/**
	* Check of variabele bestaat
	*
	* @param string $x de variabele waarvan bekeken moet worden of hij bestaat
	* @param string $y de waarde die gereturned moet worden wanneer $x niet bestaat
	* @param string $z achtervoegsel wat achter $x wordt geplakt als deze bestaat
	* @return string $x.$z of $y
	*/
	
	function ifset(&$x, $y = null,$z=null)
	{
	    return isset($x) ? $x.$z : $y;
	}

	/**
	* Toon het inglogformulier
	*
	* @param array $aErrors een array met errors die getoond worden in het formulier
	* @return string het inlogformulier
	*/
	
	function toonInlogFormulier($aErrors = array())
	{
		return 	'<span class="formError">'.ifset($aErrors['global'],null,'<br /><br />').'</span><form action="'.$_SERVER['SCRIPT_NAME'].'" method="post">
					<label for="username">Gebruikersnaam:</label>	<input type="text" 		name="username" id="username"	value="'.ifset($_POST['username']).'" /> <span class="formError">'.ifset($aErrors['username']).'</span><br />
					<label for="password">Wachtwoord:</label>		<input type="password" 	name="password" id="password"	value="'.ifset($_POST['password']).'" /> <span class="formError">'.ifset($aErrors['password']).'</span><br />
					<br />
					<input type="submit" value="Inloggen" />
				</form>';
	}
	
	/**
	* Valideer het inglogformulier
	*
	* @param string $sUsername de correcte username
	* @param string $sPassword een md5 hash van het correcte wachtwoord
	* @return string het inlogformulier bij een foutieve login
	*/
	
	function validateInlogformulier($sUsername, $sPassword)
	{
		$aErrors = array();
		
		if($_SERVER['REQUEST_METHOD'] == 'POST') //wanneer er een post request is uitgevoerd
		{
			if(empty($_POST['username']))		{ $aErrors['username'] 		= 'Geef een gebruikersnaam op'; } //checken we of er een username
			if(empty($_POST['password']))		{ $aErrors['password']		= 'Geef een wachtwoord op'; } //en password is opgegeven
			
			if(empty($aErrors)) //zo ja
			{
				if($_POST['username'] == $sUsername && md5($_POST['password']) == $sPassword) //Is het de goede username en het goede password
				{
					$_SESSION['loggedin'] = md5($_SERVER['REMOTE_ADDR']); //dan zetten we een sessie met een hash van het ip
					header('Location: '.$_SERVER['SCRIPT_NAME']); //en redirecten we de user weer naar deze pagina
					exit(); //er hoeft nu dus niets meer uitgevoerd te worden
				}
				else //is het een verkeerde combinatie
				{
					$aErrors['global'] = 'Foutieve inloggegevens'; //dan zetten we dat in de error array
				}
			}
			
			return toonInlogFormulier($aErrors); //We tonen het inlogformulier opnieuw, ditmaal met (een) error(s)
		}
	}
	
	/**
	* Check of een gebruiker is ingelogd
	*
	* @return boolean
	*/
	
	function isIngelogd()
	{
		if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == md5($_SERVER['REMOTE_ADDR'])) //als de sessie bestaat en de waarde in de sessie is een md5 hash van het ip
		{
			return true; //dan geven we true terug
		}
		else //anders is een gebruiker niet ingelogd
		{
			return false; //en returnen we false
		}
	}
	
	/**
	* Toon of valideer het inlogformulier
	*
	* @param string $sUsername de correcte username
	* @param string $sPassword een md5 hash van het correcte wachtwoord
	* @return string
	*/
	
	function login($sUsername, $sPassword)
	{
		if($_SERVER['REQUEST_METHOD'] == 'POST') //als er een post request is uitgevoerd
		{
			return validateInlogformulier($sUsername, $sPassword); //dan gaan we het formulier valideren
		}
		else //als er geen post request is uitgevoerd
		{
			return toonInlogFormulier(); //dan is tonen genoeg
		}
	}

	/**
	* Log een gebruiker uit
	*/
	
	function loguit()
	{
		unset($_SESSION['loggedin']); //we verwijderen de sessie
		header('Location: '.$_SERVER['SCRIPT_NAME']); //en sturen de gebruiker door naar de huidige pagina
	}
?>

[b]Voorbeeld van gebruik:[/b]
<?php
	session_start(); //start een sessie, niet noodzakelijk wordt namelijk ook in include.inlog.php gedaan, maar ter illustratie dat dit geen error oplevert
	
	include 'include.inlog.php'; //include onze inlogfuncties
	
	if(!isIngelogd()) //als iemand niet is ingelogd
	{
		echo login('username', '5f4dcc3b5aa765d61d8327deb882cf99'); //dan tonen we het inglogdformulier. (inlognaam: username, wachtwoord: password)
	}
	elseif(isset($_GET['loguit'])) //als iemand uit wil loggen
	{
		loguit(); //dan mag dat
	}
	else
	{
		echo 'ingelogd. <a href="?loguit">loguit</a>'; //en anders mag je zelf weten wat je doet
	}
?>

Reacties

0
Nog geen reacties.