Login

Door MayDay PHP, 10 jaar geleden, 20.792x bekeken

Hallo PHP Hulp

Dit is een simpel PHP login systeem, dit wil dus ook zeggen dat een registratie, activatie en wachtwoord vergeten onderdeel weggelaten is.

Wel kan dit script je al een heel stuk op weg helpen om die modules erbij te voegen. Eventueel zou je de database klasse ook nog wat kunnen veranderen want deze is onderdeel van een ouder systeem.

De mappen structuur ziet er als volgt uit: index.php, login.php en phphulp.sql (dit is de users tabel). Daarna is er nog een map genaamd classes met alle klassen erin!

Opmerking! Als je dit script gebruikt zou ik wel in het bestand class.hash.php de pepper bovenaan veranderen. Zorg ook dat je deze goed opslaat. Ook moet je opletten bij de user klasse want die gebruikt de gebruikers naam als onderdeel van de hash. Als je dit niet wilt moet je zoeken naar de functie $this->getHashedPassword() en dit manueel aanpassen.

Als er vragen of opmerkingen zijn gelieve het formulier hieronder te gebruiken.

Update 26 december 2012
1. User mapper > instance User
2. User class > hashen wachtwoord gebruikt nu de gebruikersnaam in kleine letters zodat de user ook met demo kan inloggen i.p.v. Demo.

Opmerking 26 december 2012
Eventueel zou je als je dat zelf wilt en voor extra veiligheid en efficiƫntie de database een object kunnen later bezorgen. Pas daarvoor de database class and bij fetchAll() en fetch(). Zet daarin een param $object = '' en gebruikt dat dan daaronder.

Ook moet je dan als je gebruikers info opvraag $user->getUsername() gebruiken. $user->username zal dan niet meer werken.

Veel succes!

Gesponsorde koppelingen

PHP script bestanden

  1. index.php
  2. class.user.php
  3. login.php
  4. phphulp.sql
  5. class.userMapper.php
  6. class.bruteForce.php
  7. class.bruteForceMapper.php
  8. class.database.php
  9. class.dataMapper.php
  10. class.hash.php

 

Er zijn 11 reacties op 'Login'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter J
Wouter J
10 jaar geleden
 
1 +1 -0 -1
Ik wordt altijd een beetje verdrietig als ik zoveel flat PHP zie in een OO applicatie...

Tevens hoort een login applicatie in OO minimaal 3 klassen te hebben die ik hier mis: Authentication, Authorization en Roles (Strategy pattern).
Harry hogeveen
harry hogeveen
9 jaar geleden
 
0 +1 -0 -1
Je mocht toch geen username in een session opslaan, je moest toch met een hash werken of zo iets?
Waarom moet je eigenlijk geen username in session zetten?
Wouter J
Wouter J
9 jaar geleden
 
0 +1 -0 -1
Het is beter om een hash erin te zetten.
Harry hogeveen
harry hogeveen
9 jaar geleden
 
0 +1 -0 -1
En dan met de hash de username uit de database selecteren? (Dus de hash staat natuurlijk ook in de database)
Maar is een session dan toch uit te lezen en kan een hacker zo je username achterhalen die is ingelogd? of moet je een hash gebruiken om een andere reden?
Sebastien vdj
sebastien vdj
9 jaar geleden
 
0 +1 -0 -1
kan iemand uitleggen hoe je een gebruiker aanmaakt bij deze script ? met dat hash verhaal ?
MayDay PHP
MayDay PHP
9 jaar geleden
 
@sebastien vdj
Zelf zou ik dit script alleen meer gebruiken als het om simple authenticatie gaat. Want zoals Wouter J al eerder zei zouden er nog een paar extra klassen moeten bij komen.

Maar daarvoor was dit voorbeeld ook nooit bedoeld. Om op je vraag the antwoorden zul je naar de UserMapper moeten gaan.

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
<?php

class UserMapper extends DataMapper {

    /**
     * Een nieuwe functie.
     *
     * @param object User $user,
     * @return mixed
     */

     public function insert(User $user) {
        return $this->pdo->query("INSERT INTO users SET username = :username, password = :password", array(':username' => $user->getUsername(), ':password' => $user->getHashedPassword()));
     }

}


/**
 * Maak de user aan. Eerst nog
 * valideren in een echte applicatie!
 */

$user = new User();
$user->setUsername('Demo');
$user->setPassword('DeMo');

/**
 * De user mapper aanroepen. Errors nog uitbreiden is een mogelijheid.
 * Anders tonen we een succes message.
 */

if(UserMapper::create()->insert($user) == true) {
    echo 'Toegevoegd.';
}


?>


Om het even te verduidelijken. $user->getHashedPassword() return het gehaste wachtwoord (zie private $password in User).

Dus dan kan je dat gewoon opslaan als gehaste wachtwoord.
Sebastien vdj
sebastien vdj
9 jaar geleden
 
0 +1 -0 -1
Trouwens de error functie werkt ook niet op php 5.3
;)

Maar in idergeval bedankt voor toevoeg hulp :D
MayDay PHP
MayDay PHP
9 jaar geleden
 
0 +1 -0 -1
Hoe bedoel je als ik vragen mag? Ik gebruik ook PHP 5.3 en krijg geen errors.
Sebastien vdj
sebastien vdj
9 jaar geleden
 
0 +1 -0 -1
das juist wat er aan de hand is als je b.v je gebruikersnaam/wachtwoord combi verkeerd heb krijg ik fatal error 500 ;)

dus krijg idd niet de error te zien die er bij hoort en wel een error 500
MayDay PHP
MayDay PHP
9 jaar geleden
 
0 +1 -0 -1
Zou je bovenaan in de index de volgende code willen plaatsen a.u.b.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

ini_set('display_errors', 'On');
error_reporting(E_ALL);

?>


Dan zou je normaal gezien geen Error 500 pagina mogen zien, maar de echte errors die zich afspelen.

Heb je daarnaast ook gebruik gemaakt van http://www.phphulp.nl/php/script/php-algemeen/login/1967/phphulpsql/1817/ want misschien staan de tabellen wel niet in de database of de juiste velden.

Kijk ook a.u.b. nogmaals de database info na.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- SanThe -
- SanThe -
9 jaar geleden
 
0 +1 -0 -1
De php errors en de apache errors staan los van elkaar.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. index.php
  2. class.user.php
  3. login.php
  4. phphulp.sql
  5. class.userMapper.php
  6. class.bruteForce.php
  7. class.bruteForceMapper.php
  8. class.database.php
  9. class.dataMapper.php
  10. class.hash.php

Labels

Navigatie

 
 

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.