Authenticatie Class

Door Robin , 19 jaar geleden, 3.351x bekeken

Authenticatie class gebaseerd op cookies.
Verdere uitwerking van een iets minder praktische functie: http://www.phphulp.nl/php/scripts/1/203/

Na het uitloggen en inloggen vind er een redirectie plaats naar een standaard pagina.

config.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
<?
require_once("sessionclass.php");

$mysql['host']        = 'localhost';    //mysql server adress
$mysql['user']        = 'root';        //mysql server user
$mysql['pass']        = '';            //mysql server password
$mysql['db']        = 'admin';        //mysql database

$cookie['website']     = "hozee";        //website name
$cookie['path']        = "";            //cookiepath, leave empty
$cookie['domain']     = "";            //website domain
$cookie['expire']    = "10000";        //cookie expire time in seconds

$config['path']        = "/hozee/test.php";    //Default path after logout/failed login
?>


voorbeeld.php //niet daadwerkelijk gebruiken, is voor het uitleggen van functies.
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
<?
//include eerdere configuratie bestand
include ("config.php");

//creeer nieuw object
$session = new mysession;

//voor variabelen uit in object in.
$session->SetVars($mysql,$cookie,$config);

//maak een connectie naar de database, gebruik deze functie altijd voordat je de hieronder vemelde functies wilt gebruiken.
$session->db_connect();

//maak een gebruikerstabel aan
$session->createtable();

//login, met de waarden $name en $pass uit je inlog formulier
$session->login($name, $pass);

//controleer of cookie aanwezig is, zoja retourneer gebruikersgegevens in een array
$user = $session->check();

//log gebruiker uit, de informatie in de cookie komt niet meer over een met die van de database, de gebruiker zal opnieuw moeten inloggen
$session->logout();

//in een login pagina gebruik je het volgende

include ("config.php");
$session = new mysession;
$session->SetVars($mysql,$cookie,$config);
$session->db_connect();
$session->login($name, $pass);

//controleren of iemand ingelogd is (bijna elke pagina vermoed ik)

include ("config.php");
$session = new mysession;
$session->SetVars($mysql,$cookie,$config);
$session->db_connect();
$session->check();

//logout voorbeeld

include ("config.php");
$session = new mysession;
$session->SetVars($mysql,$cookie,$config);
$session->db_connect();
$session->logout();

//aanmaken van de tabel

include ("config.php");
$session = new mysession;
$session->SetVars($mysql,$cookie,$config);
$session->db_connect();
$session->createtable();
?>


Vragen en suggesties zijn zeer welkom (per mail svp)
To do list: functie voor het aanmaken van gebruikers en eentje voor het zelf configureren van tabelnaam en velden.

Gesponsorde koppelingen

PHP script bestanden

  1. authenticatie-class

 

Er zijn 14 reacties op 'Authenticatie class'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Bas Kreleger
Bas Kreleger
19 jaar geleden
 
0 +1 -0 -1
nice :)
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Handig om mensen info over je tabel te geven met je mysql_error() ...

Verder ziet ie er goed uit :)
Robin
robin
19 jaar geleden
 
0 +1 -0 -1
Gewijzigd:p
Mitch X
Mitch X
19 jaar geleden
 
0 +1 -0 -1
Veel beter :)
Arend a
Arend a
19 jaar geleden
 
0 +1 -0 -1
Aardig geschreven, meer commentaar zou aardig zijn
Remco nvt
Remco nvt
19 jaar geleden
 
0 +1 -0 -1
Waarom doe je 4 keer includen(de config)? Of zie ik iets over het hoofd?
Robin
robin
19 jaar geleden
 
0 +1 -0 -1
is eenmalige include,
1 keer een totaal voorbeeld
4 keer een voorbeeld per pagina.
Vincent elschot
vincent elschot
19 jaar geleden
 
0 +1 -0 -1
Paar puntjes:
- je maakt een array met database gegevens en die geef je samen met nog wat andere, niet database-gerelateerde data door aan de een method die "setvars" heet. Dat is niet erg duidelijk, maar ook onhandig omdat je nu iedereen dwingt om een array te bouwen om vier(!) gegevens door te geven. Maak liever een aparte setDatabaseData() functie die gewoon vier argumenten verwacht. Ditto met cookies en $config.

- je controleert niet of de database verbinding wel gemaakt kon worden, dat is toch wel redelijk kritiek voor een script dat met een database werkt :)

- je controleert nergens of de queries die je draait wel gelukt zijn.

- Je stuurt nu een javascript-redirect als iemand inlogt of uitlogt. Dat mag niet vannuit een class. Ten eerste is javascript niet betrouwbaar en kun je dus beter header() gebruiken (is ook efficienter) maar ten tweede mag een class geen enkele output genereren als het geen functies bevat die daar specifiek voor zijn gemaakt. Als iemand wil redirecten dan doet hij dat wel met een eigen functie nadat jouw inlog/uitlog functie een TRUE heeft teruggegeven.

- In de functie 'check' staan twee globals, dat is uit overgebleven uit een wilde debug sessie en ben je vergeten weg te halen neem ik aan? :)


- over je TODO list: de veldnamen moet je zelf bepalen. De tabelnaam mag je variabel maken, maar aan de veldnamen heeft verder niemand een boodschap. Als je die veranderbaar gaat maken verspil je een hoop tijd terwijl echt helemaal niemand ooiot een noodzaak zal vinden om die namen te veranderen.

- Wat wel in je todo list thuishoort is sessions. Zoals je het nu hebt wordt op elke pagina altijd een database verbinding geopent en een query gedraait, terwijl je maar een heel klein stukje informatie nodig hebt dat ook gewoon in een session kan staan: ingelogd=1.

Dat scheelt je, vooral op een drukke site, heel erg veel tijd want een session is ongeveer 100 keer zo snel als een database. (inc het maken van de verbinding)
PrisonerOfPain
PrisonerOfPain
19 jaar geleden
 
0 +1 -0 -1
> Dat scheelt je, vooral op een drukke site, heel erg veel tijd want een session is
> ongeveer 100 keer zo snel als een database. (inc het maken van de verbinding)

Dat wil ik wel eens bewezen zien eigenlijk :-)

Overigens is het inderdaad handig om eens naar sessies te kijken, en dan vooral session_set_save_handler die een hoop garbage collection werk op zich neemt. Ik zou jou class ook niet 'mysession' noemen maar iets als 'user' oid.


19 jaar geleden
 
0 +1 -0 -1
Top script, dit zou iedereen moeten gebruiken, ook beginners, als je dit op je hoofdpagina zet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? if(!isset($user))  {   ?>

<form action="login.php" method="post" name="form1" target="_self">
<p><br>
<span class="style1">Inloggen</span><br>
<br>
Gebruikersnaam<br>
<input name="user" type="text" id="user">
<br>
Wachtwoord<br>
<input name="pass" type="password" id="pass">
<br>
<br>
<input type="submit" name="Submit" value="Inloggen">
<input type="reset" name="Reset" value="Legen">
</p>
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<? } else {
include('adminmenu.php');
}

?>


Wat je moet doen is door een formulier de variabelen $user en $pass aanmaken . kijk hier worden ze meegegeven in de laatste regel, en deze vars worden gecontroleerd door de class.

include ("config.php");
$session = new mysession;
$session->SetVars($mysql,$cookie,$config);
$session->db_connect();
$session->login($name, $pass); <<de bekende vars

om bovenstaand form te gebruiken moet je even ene bestand gehete login.php aanmaken met dit als inhoud:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
include ("config.php");
$session = new mysession;
$session->SetVars($mysql,$cookie,$config);
$session->db_connect();
$session->login($name, $pass);
?>


Als dit klaar is werkt het al, je moet wel evcen die tabel in je database zetten, dat lukt toch wel, even een nieuw bestand met dit erin:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
include ("config.php");
$session = new mysession;
$session->SetVars($mysql,$cookie,$config);
$session->db_connect();
$session->createtable();
?>

en diej moet je nu even uitvoeren, dan verwijderen en klar!

Prachtig script, ik zie dat je nog een toevoegsysteem gata bouwen, dat ga ik nu ook doien en als diej klaar is post ik hem hier :P!

ps. diej tekst hierboven is voor de NoObs!
Maarten
Maarten
19 jaar geleden
 
0 +1 -0 -1
Hoe kun je dit nou gebruiken ?! ... waar kun je de gebruiker(s) aanmaken ?!


19 jaar geleden
 
0 +1 -0 -1
Kan iemand me uitleggen hoe php inelkaar zit????


19 jaar geleden
 
0 +1 -0 -1
Eeh.... hoe lang wil je het verhaal hebben ??
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Leon Kunst
Leon Kunst
18 jaar geleden
 
0 +1 -0 -1
php uitleggen?

lolz:P

koop een boek :P

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

Inhoudsopgave

  1. authenticatie-class

Labels

  • Geen tags toegevoegd.

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.