Eerste poging ... deel 2
Kritiek is welkom.
userlogin.php
Code (php)
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
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
<?php
class UserLogin {
private $gebruikersnaam;
private $wachtwoord;
protected $database;
function __contruct(PDO $database) {
$this->database = $database
}
private function CheckInput($input)
{
return !preg_match("[^a-z0-9.]",$input);
}
private function CheckUser(gebruikersnaam,wachtwoord)
{
$query = "SELECT gebruikersnaam,wachtwoord WHERE gebruikersnaam=':gebruikersnaam' AND wachtwoord=':wachtwoord'";
$stmt = $this->database->prepare($query);
$stmt->bindParam(':gebruikersnaam', $gebruikersnaam);
$stmt->bindParam(':wachtwoord', $wachtwoord);
$result = $stmt->execute();
if(!$result)
$this->error('Onjuiste gebruikersnaam of wachtwoord');
return $this->$stmt->fetchAll($result);
}
private function setSession() {
if ($gebruikersnaam = $this->CheckUser(gebruikersnaam,wachtwoord)
session_regenerate_id (sha1($gebruikersnaam));
$_SESSION['gebruikersnaam'] = $gebruikersnaam;
header ("location : index.php");
}
}
public function getSession {
if (isset($_SESSION['gebruikersnaam'])
$this->gebruikersnaam = $_SESSION['gebruikersnaam'];
$result = $this->CheckUser();
if ($result)
return TRUE;
}
}
public function error ($error) {
return $this->error;
}
}
?>
class UserLogin {
private $gebruikersnaam;
private $wachtwoord;
protected $database;
function __contruct(PDO $database) {
$this->database = $database
}
private function CheckInput($input)
{
return !preg_match("[^a-z0-9.]",$input);
}
private function CheckUser(gebruikersnaam,wachtwoord)
{
$query = "SELECT gebruikersnaam,wachtwoord WHERE gebruikersnaam=':gebruikersnaam' AND wachtwoord=':wachtwoord'";
$stmt = $this->database->prepare($query);
$stmt->bindParam(':gebruikersnaam', $gebruikersnaam);
$stmt->bindParam(':wachtwoord', $wachtwoord);
$result = $stmt->execute();
if(!$result)
$this->error('Onjuiste gebruikersnaam of wachtwoord');
return $this->$stmt->fetchAll($result);
}
private function setSession() {
if ($gebruikersnaam = $this->CheckUser(gebruikersnaam,wachtwoord)
session_regenerate_id (sha1($gebruikersnaam));
$_SESSION['gebruikersnaam'] = $gebruikersnaam;
header ("location : index.php");
}
}
public function getSession {
if (isset($_SESSION['gebruikersnaam'])
$this->gebruikersnaam = $_SESSION['gebruikersnaam'];
$result = $this->CheckUser();
if ($result)
return TRUE;
}
}
public function error ($error) {
return $this->error;
}
}
?>
login.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if ($_SERVER['REQUEST_METHOD'] = 'post') {
require_once ("/userlogin.php");
$gebruikersnaam = PDO::quote(CheckInput($_POST['gebruikersnaam']));
$wachtwoord = PDO::quote(CheckInput($_POST['wachtwoord']));
$UserLogin = new Userlogin;
$setSession = new setSession;
if ($setSession) {
header ("Location : index.php"); }
else {
echo $error();
}
}
else { require_once ("/loginform.php");
?>
if ($_SERVER['REQUEST_METHOD'] = 'post') {
require_once ("/userlogin.php");
$gebruikersnaam = PDO::quote(CheckInput($_POST['gebruikersnaam']));
$wachtwoord = PDO::quote(CheckInput($_POST['wachtwoord']));
$UserLogin = new Userlogin;
$setSession = new setSession;
if ($setSession) {
header ("Location : index.php"); }
else {
echo $error();
}
}
else { require_once ("/loginform.php");
?>
- in de functievariabelen van checklogin missen de dollar tekens.
- waarom bij de pregmatch een uitroepteken? Retourneer gewoon de uitkomst van de pregmatch
- waarom een pdo::quote gebruiken. Is niet nodig wanneer je gebruik maakt van prepared statements
- en checkinput gaat niet werken zonder het aanmaken van een class.
Er zijn nog wel meer dingen die niet kloppen, maar zit nu op mijn mobiel en dit was het eerste wat mij opviel.
Volgens mij krijg je ook errors als je de code uitvoert, dus probeer dat eerst eens.
Gewijzigd op 28/03/2011 11:00:24 door Arjan -
Waarom niet verder in je oude topic?
waarom zon duidelijke titel
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
public function login($username, $password)
{
try {
$user = User::loadFromUsername($username);
} catch(EntityNotFoundException $e) { // De exception die je gooit als de user niet gevonden kan worden, je kan ook null teruggeven
throw new WrongCredentialsException($username);
}
if($user->getPassword() !== self::hash($password)) {
throw new WrongCredentialsException($username);
}
// In het object opslaan om bijv. toegangsrechten te regelen
return $this->user = $user;
}
?>
public function login($username, $password)
{
try {
$user = User::loadFromUsername($username);
} catch(EntityNotFoundException $e) { // De exception die je gooit als de user niet gevonden kan worden, je kan ook null teruggeven
throw new WrongCredentialsException($username);
}
if($user->getPassword() !== self::hash($password)) {
throw new WrongCredentialsException($username);
}
// In het object opslaan om bijv. toegangsrechten te regelen
return $this->user = $user;
}
?>
Zou zou ik hem het mooist vinden
Graag verder gaan in je oude topic:
http://www.phphulp.nl/php/forum/topic/eerste-poging-/77145/
[/modedit]