Session class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jurgen assaasas

Jurgen assaasas

29/06/2009 12:46:00
Quote Anchor link
Ik wil binnenkort eens gaan kijken om een session class te schrijven, hier in heb ik 2 opties of een combi optie.

- een wrapper schrijven voor de huidige session.
- een eigen session handler.
- een wrapper schrijven in combinatie met een eigen session handler.

Wat is het gemakkelijkste en eventueel de beste oplossing. Mijn idee was bijvoorbeeld zo.

simpel voorbeeld van login.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
//code

if($auth->checkuser($_POST['username'], $_POST['password']))
{

    $session->set('key','waarde');
    header('location: index.php');
}

//nog meer code
?>
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
 
PHP hulp

PHP hulp

19/01/2020 08:09:42
 
Mark PHP

Mark PHP

29/06/2009 14:13:00
Quote Anchor link
Wat is het verschil tussen punt 1 en 2?

In mijn framework heb ik een wrapper geschreven om de session superglobal, met support voor verschillende savehandlers, zoals een databaseimplementatie.

Volgens mij heeft het Zend Framework zelfs iets met "namespaces" gedaan, wat opzich ook een aardig idee is. Ik gebruik iets soortgelijks.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
Jurgen assaasas

Jurgen assaasas

29/06/2009 14:19:00
Quote Anchor link
Zou je eens een klein voorbeeld kunnen laten zien hoe jij zoiets zou implementeren?
 
Mark PHP

Mark PHP

29/06/2009 14:37:00
Quote Anchor link
Pseudo-code (PHP5.3).
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
<?php
class Session {
  public function createSection($id);//maakt sectie aan, $_SESSION[$id] = array(), geeft Section object terug
  public function destroy();//session_destroy()
  public function regenerateId();//session_regenerate_id
  public function start(); //session_start()
}

class Section {
  public function __get($key);
  public function __isset($key);
  public function __set($key, $value);
  public function __unset($key);
}

?>

Daar komt het ongeveer op neer. Section is dus niets meer dan een storage object, welke momenteel (nog) wat goochelt met de magische functies.

Nogmaals, volgens mij werkt het ongeveer hetzelfde als bij het Zend Framework.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
Jurgen assaasas

Jurgen assaasas

29/06/2009 15:03:00
Quote Anchor link
Als ik het goed begrijp heb je een namespace session en een class erbij, nu kun je dus vanuit /Countable, /IteratorAggregate en /Session je session class aanroepen.
 
Mark PHP

Mark PHP

29/06/2009 16:02:00
Quote Anchor link
Heb het voorbeeld in mijn vorige post iets aangepast, wat makkelijker gemaakt. De namespaces c.q. interfaces zijn niet echt van kritisch belang.

Het is opzich mogelijk om beide objecten Session en Section in elkaar te voegen, dan krijg je zoiets als jij ongeveer voorstelde in de beginpost.
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
<?php
$session
= new Session();
$session->start();

function
login(Session $session) {
  ...

  $session->save('userid', 1);
  ...
}

function
logout(Session $session) {
  ...

  $session->delete('userid');
  $session->destroy();
  ...
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
Jurgen assaasas

Jurgen assaasas

29/06/2009 16:15:00
Quote Anchor link
Ok, bedankt dit klinkt helder. Het is dus handig om een gewone wrapper (class) om de session heen te bouwen.
 



Overzicht Reageren

 
 

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.