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