groot-inlogsysteem
- VERSIE 2 BESCHIKBAAR!: http://www.phphulp.nl/php/scripts/8/439/ -
//sql
CREATE TABLE `gebruikers` (
`id` int(8) NOT NULL auto_increment,
`naam` varchar(50) NOT NULL default '',
`wachtwoord` varchar(50) NOT NULL default '',
`status` varchar(10) NOT NULL default '',
`email` varchar(220) NOT NULL default '',
`actief` char(1) NOT NULL default '',
`act_code` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=8 ;
//activeren.php
<html>
<head>
<title>Activeren</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
include("config.php");
if($_GET['naam'] != "" AND $_GET['code'] != "") {
$sql = "SELECT * FROM gebruikers WHERE naam='".$_GET['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$act_code = htmlspecialchars($rij->act_code);
$actief = htmlspecialchars($rij->actief);
if($_GET['code'] == $act_code) {
$update = "UPDATE gebruikers SET actief='1',act_code='' WHERE naam='".$_GET['naam']."'";
$resultaat = mysql_query($update) OR die ("Kon geen verbinding maken met MySQL");
echo "Bedankt voor het activeren van je account. Je kunt nu <a href='inloggen.php'>hier</a> inloggen.";
}else{
echo "<font color='red'><b>Je activatiecode komt niet overeen met je gebruikersnaam.</b></font>";
}
}else{
echo "<font color='red'><b>Je hebt geen activatiecode en/of naam opgegeven.</b></font>";
}
?>
</body>
</html>
//config.php
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// MySQL instellingen
$sitenaam = ""; //de naam van je site
$sitemail = ""; //emailaders van je site
$inlogp = "inloggen.php"; //pagina waar je heen moet gaan als je bent ingelogd
$actiefurl = ""; //de volledige link naar de pagina waar je je activatie code in kunt voeren. bv http://mijnsite.ext/activeren.php
$npassurl = ""; //de volledige link naar de pagina waar je je nieuwe wachtwoord in kunt voeren. bv http://mijnsite.ext/nieuwpass.php
$dbhost = ""; // host van je database, bijna altijd localhost
$dbuser = ""; // username voor je mysql database
$dbpass = ""; // wachtwoord van je database
$dbname = ""; // de database
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
?>
//inloggen.php
<html>
<head>
<title>Inloggen</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2 align="center">Inloggen</h2>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
session_start();
ob_start();
include("config.php");
if($_SESSION['naam'] == "" AND $_SESSION['status'] == "") {
if($_COOKIE['naam'] == "" AND $_COOKIE['wachtwoord'] == "" AND $_COOKIE['email'] == "") {
if(isset($_GET['login'])) {
if($_POST['naam'] != "" AND $_POST['wachtwoord'] != "") {
$sql = "SELECT * FROM gebruikers WHERE naam='".$_POST['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$dbpass = htmlspecialchars($rij->wachtwoord);
$status = htmlspecialchars($rij->status);
$email = htmlspecialchars($rij->email);
$actief = htmlspecialchars($rij->actief);
$pass = md5($_POST['wachtwoord']);
if($dbpass == $pass) {
if($actief == 1) {
$_SESSION['naam'] = $_POST['naam'];
$_SESSION['status'] = $status;
if($_POST['blijven'] == "1") {
setcookie("naam", $_POST['naam'], time() + 365 * 86400);
setcookie("wachtwoord", $pass, time() + 365 * 86400);
}
header("Location: $inlogp");
}else{
echo "<font color='red'><b>Je account is nog niet geactiveerd!</b><font>";
}
}else{
echo "<font color='red'><b>Je wachtwoord en/of naam is incorrect!</b></font>";
}
}else{
echo "<font color='red'><b>Je bent een veld vergeten in te vullen!</b></font>";
}
}else{ }
?>
<form method="post" action="?login">
<table>
<tr>
<td>Naam:</td><td><input type="text" name="naam"></td>
</tr>
<tr>
<td>Wachtwoord:</td><td><input type="password" name="wachtwoord"></td>
</tr>
<tr>
<td></td><td><input type="checkbox" name="blijven" value="1"> Ingelogd blijven</td>
</tr>
<tr>
<td></td><td><input type="submit" value="Inloggen"></td>
</tr>
</table>
<a href="wachtwoord_vergeten.php"><small>Wachtwoord vergeten?</small></a>
</form>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
}else{
$sql = "SELECT * FROM gebruikers WHERE naam='".$_COOKIE['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$dbnaam = htmlspecialchars($rij->naam);
$dbstatus = htmlspecialchars($rij->status);
$dbpass = htmlspecialchars($rij->wachtwoord);
$pass = $_COOKIE['wachtwoord'];
$naam = $_COOKIE['naam'];
if($dbpass == $pass AND $dbnaam == $naam) {
$_SESSION['naam'] = $dbnaam;
header("Location: $inlogp");
}else{
echo "<font color='red'><b>Eén van je cookies klopt niet met wat in de db staat!</b></font>";
}
}
}else{
?>
Je bent al ingelogd..
</body>
</html>
//meldaan.php
<html>
<head>
<title>Aanmelden</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2 align="center">Aanmelden</h2>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
include("config.php");
function act_code($num) {
mt_srand((double)microtime()*1000000);
while (strlen($pass) <= $num) {
$i = chr(mt_rand (0,255));
if (eregi("^[a-z0-9]$", $i))
$pass = $pass.$i;
}
return ($pass);
}
if(isset($_POST['submit'])) {
if($_POST['naam'] != "" AND $_POST['wachtwoord'] != "" AND $_POST['wachtwoord2'] != "" AND $_POST['email'] != "") {
if($_POST['wachtwoord'] == $_POST['wachtwoord2']) {
$sql = "SELECT * FROM gebruikers WHERE naam='".$_POST['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
if(mysql_num_rows($resultaat) == 0) {
$md5pass = md5($_POST['wachtwoord']);
$act_code = act_code(10);
$insert = "INSERT INTO gebruikers (naam,wachtwoord,email,actief,act_code) VALUES ('".$_POST['naam']."','".$md5pass."','".$_POST['email']."','0','".$act_code."')";
mysql_query($insert) OR die ("Kon geen verbinding maken met MySQL");
$url = $actiefurl."?naam=".$_POST['naam']."&code=".$act_code;
mail($_POST['email'],"Activatie account op ".$sitenaam,"Je kunt je account activeren op\n".$url."\nKopieer bovenstaande link in je browser en je account zal geactiveerd worden.","From: ".$sitenaam." <".$sitemail.">");
echo "Bedankt je voor je registratie. Zodra je je account geactiveerd hebt (zie je mailbox) kun je inloggen op ".$sitenaam;
}else{
echo "<font color='red'><b>De gebruikersnaam bestaat al.</b></font>";
}
}else{
echo "<font color='red'><b>Je wachtwoord en controle wachtwoord komen niet overeen.</b></font>";
}
}else{
echo "<font color='red'><b>Je bent een vak vergeten in te vullen.</b></font>";
}
}else{ }
?>
<form method="post" action="">
<table>
<tr>
<td>Naam:</td><td><input type="text" name="naam"></td>
</tr>
<tr>
<td>Wachtwoord:</td><td><input type="password" name="wachtwoord"></td>
</tr>
<tr>
<td>Wachtwoord herhalen:</td><td><input type="password" name="wachtwoord2"></td>
</tr>
<tr>
<td>E-mail:</td><td><input type="text" name="email"></td>
</tr>
<tr>
<td></td><td><input type="submit" value="Aanmelden" name="submit"></td>
</tr>
</table>
</form>
</body>
</html>
//nieuw_wacht.php
<html>
<head>
<title>Wachtwoord vergeten</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2 align="center">Wachtwoord vergeten - Wachtwoord resetten/aanpassen</h2>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
include("config.php");
if(isset($_GET['reset'])) {
$sql = "SELECT * FROM gebruikers WHERE naam='".$_GET['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$code = htmlspecialchars($rij->act_code);
if($code == $_GET['code']) {
mysql_query("UPDATE gebruikers SET actief='1',act_code='' WHERE naam='".$_GET['naam']."'") OR die ("Kon geen verbinding maken met MySQL");
echo "Je wachtwoord is teruggezet, je kunt weer gewoon inloggen.";
}else{
echo "<font color='red'><b>Je code is incorrect.</b></font>";
}
}elseif($_GET['naam'] != "" AND $_GET['code'] != "") {
$sql = "SELECT * FROM gebruikers WHERE naam='".$_GET['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$code = htmlspecialchars($rij->act_code);
if($code == $_GET['code']) {
if(isset($_POST['submit'])) {
if($_POST['pass'] != "" AND $_POST['pass2'] != "") {
if($_POST['pass'] == $_POST['pass2']) {
$pass = md5($_POST['pass']);
mysql_query("UPDATE gebruikers SET actief='1',act_code='',wachtwoord='".$pass."' WHERE naam='".$_GET['naam']."'") OR die ("Kon geen verbinding maken met MySQL");
echo "Je wachtwoord is succesvol gewijzigd en je accounts is weer geactiveerd.";
}else{
echo "<font color='red'><b>Het wachtwoord en controle wachtwoord komen niet overeen</b></font>";
}
}else{
echo "<font color='red'><b>Je bent vergeten een veld in te vullen.</b></font>";
}
}else{ }
?>
<form method="post" action="">
<table>
<tr>
<td>Nieuw wachtwoord:</td><td><input type="password" name="pass"></td>
</tr>
<tr>
<td>Herhaal wachtwoord:</td><td><input type="password" name="pass2"></td>
</tr>
<tr>
<td></td><td><input type="submit" name="submit" value="Wijzigen"></td>
</tr>
</table>
</form>
</body>
</html>
//safe.php (includen om pagina te beveiligen)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
session_start();
ob_start();
//deze pagina include je in wat beveiligd moet worden
include("config.php");
if($_SESSION['naam'] == "" AND $_SESSION['status'] == "") {
if($_COOKIE['naam'] == "" AND $_COOKIE['wachtwoord'] == "") {
echo "Je bent niet ingelogd!<br>Klik <a href='inloggen.php'>hier</a> om in te loggen.";
exit;
}else{
$sql = "SELECT * FROM gebruikers WHERE naam='".$_COOKIE['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$dbnaam = htmlspecialchars($rij->naam);
$dbstatus = htmlspecialchars($rij->status);
$dbpass = htmlspecialchars($rij->wachtwoord);
$pass = $_COOKIE['wachtwoord'];
$naam = $_COOKIE['naam'];
if($dbpass == $pass AND $dbnaam == $naam) {
$_SESSION['naam'] = $dbnaam;
header("Location: $_SERVER[PHPSELF]");
}else{
echo "<font color='red'><b>Eén van je cookies klopt niet met wat in de db staat!</b></font>";
exit;
}
}
}else{
}
?>
//safe_status.php
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
session_start();
ob_start();
$status = "admin"; //de status die een persoon moet hebben om deze pagina te bekijken
include("config.php");
if($_SESSION['naam'] == "" AND $_SESSION['status'] == "") {
if($_COOKIE['naam'] == "" AND $_COOKIE['wachtwoord'] == "") {
echo "Je bent niet ingelogd!<br>Klik <a href='inloggen.php'>hier</a> om in te loggen.";
exit;
}else{
$sql = "SELECT * FROM gebruikers WHERE naam='".$_COOKIE['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$dbnaam = htmlspecialchars($rij->naam);
$dbstatus = htmlspecialchars($rij->status);
$dbpass = htmlspecialchars($rij->wachtwoord);
$pass = $_COOKIE['wachtwoord'];
$naam = $_COOKIE['naam'];
if($dbpass == $pass AND $dbnaam == $naam) {
$_SESSION['naam'] = $dbnaam;
header("Location: $_SERVER[PHPSELF]");
}else{
echo "<font color='red'><b>Eén van je cookies klopt niet met wat in de db staat!</b></font>";
exit;
}
}
}else{
$sql = "SELECT status FROM gebruikers WHERE naam='".$_SESSION['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$dbstatus = htmlspecialchars($rij->status);
if($status == $dbstatus) {
echo "Klopt";
}else{
echo "<font color='red'><b>Je hebt niet de juiste rechten om deze pagina te bekijken!</b></font>";
exit;
}
}
?>
//style.css
body,td {
font-family: Verdana, Tahoma, Arial;
color: black;
font-size: smaller;
}
body {
background-color: white;
margin-top: 0px;
margin-bottom: 0px;
}
input, option, textarea, select, checkbox {
font-family: Verdana, Tahoma, Arial;
font-size: 8pt;
color: black;
font-weight: none;
border: 1px solid lightgray;
background-color: white;
}
a:link,a:visited {
color: darkblue;
text-decoration: none;
}
a:hover {
text-decoration: none;
color: blue;
}
a:active {
text-decoration: none;
color: darkblue;
font-weight: bold;
}
h1, h2, h3, h4, h5, h6 {
color: darkblue;
}
//uitloggen.php
2
3
4
5
6
7
8
9
10
11
12
session_start();
session_unset();
session_destroy();
if(isset($_GET['cookie'])) {
setcookie("email");
setcookie("naam");
setcookie("wachtwoord");
}
?>
<html>
<head>
<title>Uitloggen</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
Je bent nu uitgelogd.
</body>
</html>
//wachtwoord.php
<html>
<head>
<title>Wachtwoord wijzigen</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if(isset($_POST['submit'])) {
$sql = "SELECT * FROM gebruikers WHERE naam='".$_SESSION['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$dbpass = htmlspecialchars($rij->wachtwoord);
$pass = md5($_POST['huidigpass']);
if($dbpass == $pass) {
if($_POST['newpass'] == $_POST['newpass2']) {
$newpass = md5($_POST['newpass']);
$update = "UPDATE gebruikers SET wachtwoord='".$newpass."' WHERE naam='".$_SESSION['naam']."'";
$resultaat = mysql_query($update) OR die ("Kon geen verbinding maken met MySQL");
echo "Je wachtwoord is succesvol gewijzigd.";
}else{
echo "<font color='red'><b>Je nieuwe wachtwoord en controle wachtwoord komen niet overeen.</b></font>";
}
}else{
echo "<font color='red'><b>Je huidige wachtwoord komt niet overeen met je wachtwoord in de database.</b></font>";
}
}else{
?>
<h2 align="center">Wachtwoord wijzigen</h2>
<form method="post" action="">
<table>
<tr>
<td>Huidige wachtwoord:</td><td><input type="password" name="huidigpass"></td>
</tr>
<tr>
<td>Nieuwe wachtwoord:</td><td><input type="password" name="newpass"></td>
</tr>
<tr>
<td>Herhaal wachtwoord:</td><td><input type="password" name="newpass2"></td>
</tr>
<tr>
<td></td><td><input type="submit" name="submit" value="Wijzigen"></td>
</tr>
</table>
</form>
</body>
</html>
//wachtwoord_vergeten.php
<html>
<head>
<title>Wachtwoord vergeten</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h2 align="center">Wachtwoord vergeten</h2>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
include("config.php");
function act_code($num) {
mt_srand((double)microtime()*1000000);
while (strlen($pass) <= $num) {
$i = chr(mt_rand (0,255));
if (eregi("^[a-z0-9]$", $i))
$pass = $pass.$i;
}
return ($pass);
}
if(isset($_POST['submit'])) {
$sql = "SELECT * FROM gebruikers WHERE naam='".$_POST['naam']."'";
$resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
$rij = mysql_fetch_object($resultaat);
$email = htmlspecialchars($rij->email);
$act_code = act_code(10);
mail($email,"Nieuw wachtwoord".$sitenaam,"Je hebt op ".$sitenaam." je wachtwoord opgevraagd. Je accounts is op niet-actief gezet. Je moet onderstaande link naar je browser kopieeren en dan daar je nieuwe wachtwoord invoeren om je wachtword te wijzigen.\nIndien je je wachtwoord NIET wilt wijzigen, druk dan op de 2e link.\nWACHTWOORD WIJZIGEN: ".$npassurl."?naam=".$_POST['naam']."&code=".$act_code."\nNIKS DOEN (huidige wachtwoord behouden): ".$npassurl."?naam=".$_POST['naam']."&code=".$act_code."&reset","From: ".$sitenaam." <".$sitemail.">");
echo "Check je mail...";
mysql_query("UPDATE gebruikers SET actief='0',act_code='".$act_code."' WHERE naam='".$_POST['naam']."'") OR die ("Kon geen verbinding maken met MySQL");
}else{
}
?>
<form method="post" action="">
<table>
<tr>
<td>Naam:</td><td><input type="text" name="naam"></td>
</tr>
<tr>
<td></td><td><input type="submit" name="submit" value="Opvragen"></td>
</tr>
</table>
<small><b>LET OP:</b> Als je dit doet, word je account op niet-actief gezet (kun je niet meer inloggen) en krijg je naar je
e-mail adres een e-mail gestuurd met daarin een link om je account opnieuw te activeren.<br>
Zodra je dit hebt gedaan, kun je je wachtwoord daarin wijzigen. Indien jij het dan niet gewijzigd hebt, dan druk je op de
andere link, en dan zal je oude wachtwoord weer actief worden.<br>
Pas als je in dit e-mailadres op activeren klikt, word je acount weer actief, met het nieuwe wachtwoord.
</body>
</html>