summaryrefslogtreecommitdiff
path: root/www/login.php
blob: 0c6aeb256d6744129ac981367df858916c9e6423 (plain)
1
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
/* Copyright Maximilian Möhring, 2013
Licensed under the GPL. Read LICENSE for more Information.*/

/*Process the login*/

session_start();

if($_SERVER['REQUEST_METHOD'] == 'POST') {

/*___Database Query: Login___*/
	$unsafe_username = $_POST["username"];
	$unsafe_passwort = $_POST["password"];
	$username = SQLite3::escapeString("$unsafe_username");
	$passwort = SQLite3::escapeString("$unsafe_passwort");

        $db = new SQLite3("../database/sqlite.db");
        $salt_db  = $db->query("SELECT salt FROM user WHERE name='$username';");
        while($salt_array = $salt_db->fetchArray(SQLITE3_NUM)){
                foreach($salt_array as $firstelement){
                        $salt=$firstelement;
                }
        }

        $password = "$salt"."$passwort";
        $hash_password = md5($password);
        for($i=0;$i<15000;$i++)
                $hash_password = md5($hash_password);

        $real_password_db = $db->query("SELECT password FROM user WHERE name='$username';");
        while($real_password_array = $real_password_db->fetchArray(SQLITE3_NUM)){
                 foreach($real_password_array as $secondelement){
                        $real_password=$secondelement;
                }
        }

/*___Login___*/
	if ($real_password == $hash_password) {

		if($db->exec("
			BEGIN TRANSACTION;
			INSERT INTO log (id, user, login) VALUES (NULL, (SELECT id FROM user WHERE name='$username'), (SELECT datetime()) );
			COMMIT;
		")){

		$_SESSION["login"] = true;
		$_SESSION["username"] = "$unsafe_username";

		header("Refresh: 0; /");

		} else {
			header("Refresh: 0; login?reason=database");
		}
	} else {
		header("Refresh: 0; login?reason=failure");
	}
} else {

/*Prints the GET version*/

	foreach ($_GET as $argument => $value) {
		if(preg_match("/logout/",$argument)){
			session_destroy();
			header("Refresh: 0; /login?success");
			exit;
		} else {
			 if(preg_match("/success/",$argument))
				$logout="Successfull loged out!";
		}
	}

	if($_SESSION["login"]){
		header("Refresh: 0; /");
	} else {
		echo $logout;

		echo "<form method='post' action='/login.php'>
			<p>Name: <input type='text' name='username'></p>
			<p>Password: <input type='password' name='password'>
			<p><input type='submit' name='submit' value='login'></p>
		</form>";
	}
}