Eerste poging ... deel 2

Overzicht

Sponsored by: Vacatures door Monsterboard

Alex L

Alex L

28/03/2011 09:02:37
Anchor link
Weer een paar dagen verder, dus tweede poging.
Kritiek is welkom.

userlogin.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;
    }
}

?>


login.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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");
?>
 
PHP hulp

PHP hulp

22/11/2024 01:03:47
 
Arjan -

Arjan -

28/03/2011 10:59:02
Anchor link
- een controle op execute() bepaalt niet of er resultaten zijn gevonden, maar controleert of een query succesvol is uitgevoerd. Gebruik bijvoorbeeld rowCount() in pdo om te bepalen hoeveel records er zijn gevonden
- 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 -
 

28/03/2011 10:59:25
Anchor link
Waarom niet verder in je oude topic?
 
Gerhard l

gerhard l

28/03/2011 11:03:08
Anchor link
waarom zon duidelijke titel
 
Pim -

Pim -

28/03/2011 11:15:44
Anchor link
Je noemt je klasse UserLogin, maar ik zie nergens een User klasse staan... Het mooist is om alleen de User klasse (of een datamapper) met de DB te laten communiceren en dat de andere klassen dus via de User klasse werken (in het geval van een login klasse).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

?>

Zou zou ik hem het mooist vinden
 
Bas IJzelendoorn

Bas IJzelendoorn

28/03/2011 14:56:57
Anchor link

Graag verder gaan in je oude topic:

http://www.phphulp.nl/php/forum/topic/eerste-poging-/77145/
[/modedit]
 
 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.