Scripts

Beveiligde login, en registratie.

Leuke en uitbreidbare login script en registratie. Je kunt zelf een pass vergeten script maken etc. Bevat onderranderen aan beveiliging: - Beveiliging tegen sql injectie. - Salt + sha1 opslag van wachtwoorden. - 'Goede' fout afhandeling. uwx3g.php is de salt pagina.(BRON Vvd. salt.: http://www.phphulp.nl/php/script/beveiliging/salt/1286/)

uwx3g.php
<?php

function salt($pass, $salt="7dy23kl6yw4bd9x0k3", $str="")
{
    $pass = str_replace(" ", "", $pass);
    $pass = strrev($pass);

    $arr[0] = strlen($pass);
    $arr[1] = strlen($salt);
    
    while($arr[0] > $arr[1] + 1)
    {
        $salt = $salt.$salt;
        $arr[1] = strlen($salt);
    }

    $split_len = floor(max($arr) / (min($arr) - 1));
    
    $salt = explode(" ", chunk_split($salt, $split_len, " "));
    array_pop($salt);
    $salt = array_reverse($salt);
    
    $j = $arr[0] > count($salt) ? $arr[0] : count($salt);
    
    for($i=0; $i<$j; $i++)
    {
        if(isset($pass{$i}))    $str .= $pass{$i};
        if(isset($salt[$i]))    $str .= $salt[$i];
    }
    
    return $str;
}
?>
registreren.php
<html>
<title>Registratie.</title>
<body>
<form action='registreerv.php' method='POST'>
<table>
<tr>
	<td>
	Gebruikersnaam:
	</td>
	<td>
	<input type='text' name='gebruikersnaam'>
	</td>
</tr>
<tr>
	<td>
	Wachtwoord:
	</td>
	<td>
	<input type='password' name='password'>
	</td>
</tr>
<tr>
	<td>
	Controle wachtwoord:
	</td>
	<td>
	<input type='password' name='passwordc'>
	</td>
</tr>
<tr>
	<td>
	E-mail:
	</td>
	<td>
	<input type='text' name='mail'>
	</td>
</tr>
<tr>
	<td>
	</td>
	<td>
	<input type='submit' value='Aanmelden'>
	</td>
</tr>
</table>
</form>
</body>
</html>
registreerv.php
<?php

//Defineer functie
function error($link)
{
header('Refresh: 3; url=' . $link.php . '');
}

if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is geklikt.
{
    include_once 'connect.php'; // Connectie db.

    if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']) AND !empty($_POST['passwordc']) AND !empty($_POST['mail'])) // Controle op invoeren
    {
        if(($_POST['password']) == ($_POST['passwordc'])) // Controle of controle pw overeenkomt met echte pw.
        {
			
            include_once 'uwx3g.php';            // Connectie met salt page.
			$gebruikersnaam	= mysql_real_escape_string($_POST['gebruikersnaam']); //Data veilig maken voor sql injectie d.m.v. mysql_real.....
			$password		= sha1(salt($_POST['password'])); //sha1 hash van pass. Inclusief salt.
			$mail			= mysql_real_escape_string($_POST['mail']);
			$sql = ("SELECT gebruikersnaam FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "'"); // Controle op gebruikersnaam, zo ja een 1 else en 0 (zie controle bij de volgende if)
			$uitvoer = mysql_query($sql);		//($row = mysql_fetch_assoc($get))
			
			$controle = mysql_num_rows($uitvoer);
				
			if($controle == 0) // Als uitvoer is 0 registreren.
			{
				mysql_query("INSERT INTO gebruikers (id, gebruikersnaam, password, mail, datum) VALUES ('','" . $gebruikersnaam . "', '" . $password . "', '" . $mail . "', '" . now() . "')"); // Gebruiker in db plaatsen.
				header('Refresh: 4; url=login.php');
				exit ('U bent succesvol aangemeld, u kunt nu inloggen.');
			}
			else
			{
				header('Refresh: 2; url=registreren.php');
				exit ('Verkeerde gebruikersnaam of wachtwoord.');        // Negatieve melding van ingevoerde gegevens.
			}	
		}
		else
		{
			error(registreren.php);
            exit ('De ingevoerde gegevens kloppen niet, u heeft het controle wachtwoord verkeerd ingevuld.');  // Negatieve melding van ingevoerde gegevens.
		}
    }
    else
    {
		error(registreren.php);
        exit ('De ingevoerde gegevens kloppen niet, niet alles is ingevuld.');  // Negatieve melding van ingevoerde gegevens.
    }
    
    

}
else
{
    error(registreren.php);
    exit ('U bent op de verkeerde pagina gekomen, U wordt doorverwezen.');
}

?>
loginv.php
<?php
session_start();
if( $_SERVER['REQUEST_METHOD'] == 'POST')        // Controle of er op de knop is gedrukt.
{
	      
    if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password'])) // Controle of alles is ingevult.
    {
		include_once 'connect.php';            // Connectie met database.
		include_once 'uwx3g.php'; // Connectie salt page.

		$gebruikersnaam	= mysql_real_escape_string($_POST['gebruikersnaam']);  // Gevaren voor sql injectie weren dmv. mysql_real_.......
		$password		= sha1(salt($_POST['password']));  // Hash en Salting van pw.
		$sql = ("SELECT gebruikersnaam, password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND password='" . $password . "'"); // Selecteer user waar de gebruiker overeenkomt met ingevoerde pas
		$uitvoer = mysql_query($sql);
		
		$controle = mysql_num_rows($uitvoer); //Uitvoer van inlog
			if($controle != 0)
			{
				//VERDERE VERWERKING. (DIT is aanjou, bijv. sessie ofziets? 
			}
			else
			{
				header('Refresh: 2; url=login.php');
				exit ('Verkeerde gebruikersnaam of wachtwoord.');        // Negatieve melding van ingevoerde gegevens.
			}			
    }
    else
    {
		header('Refresh: 2; url=login.php');
		exit ('U heeft een van de gegevens niet goed ingevuld.');        // Negatieve melding van ingevoerde gegevens.
    }   
}
else
{
    header('Refresh: 2; url=login.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
    exit ('U bent op de verkeerde pagina gekomen, u wordt doorverwezen.');
}
?>
login.php
<html>
<title>Inloggen.</title>
<body>
<form action='loginv.php' method='POST'>
<table>
<tr>
	<td>
	Gebruikersnaam:
	</td>
	<td>
	<input type='text' name='gebruikersnaam'>
	</td>
</tr>
<tr>
	<td>
	Wachtwoord:
	</td>
	<td>
	<input type='password' name='password'>
	</td>
</tr>
<tr>
	<td>
	</td>
	<td>
	<input type='submit' value='Inloggen'>
	</td>
</tr>
</table>
</form>
</body>
</html>
connect.php
<?php

//connecting to the database
$error = "Could not connect to the database";
$con = mysql_connect('---','---','---') or die($error);
mysql_select_db("---", $con) or die($error);

?>

Reacties

0
Nog geen reacties.