[PHP] Class defineren in sessie geeft fout

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Mijn code ziet er samengevat ongeveer zo uit:

index.php
PHP:
1
2
3
4
5
6
7
8
9
10
session_start();

class index
{
 function index()
 {
   require( 'action.php' );
   $action = new action;
 }
}


action.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
class action
{
  function action()
  {
     $_SESSION['user'] = new user;
  }
}
class user
{
  // heel wat functies etc
}


Als ik na een refresh een print_r van _SESSION['user'] doe krijg ik een vaag resultaat met:
__PHP_Incomplete_Class

Nu las ik ergens dat ik session_start() pas later moet doen (of iets in die richting) maar het probleem is dat er veel meer in die session staat wat in de rest van de scripts nodig is..

Weet iemand hoe ik dit kan oplossen ?

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
afaik kun je serialize en unserialize gebruiken om een class op te slaan in een var.

session_start later doen is imho sowieso onnodig aangezien het dan later de fout in zou gaan als je die class in de goede var wilt zetten.

Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
dus zeg maar:
PHP:
1
2
$_SESSION['user'] = new user;
$_SESSION['user'] = serialize( $_SESSION['user'] );


En als ik het object dan wil lezen moet ik elke keer unserialize() doen ?
Dat zo best ** zijn om elke x unserialize te moeten doen :(

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Je moet de class definieren voordat je session start aanroept. Anders is nog niet bekend hoe de class eruit moet zien sodra de sessionvars worden aangemaakt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
dus:
PHP:
1
2
3
4
5
$user = new user;

session_start();

$_SESSION['user'] = new user;


maar dan zou ik dus eigenlijk eerst session_destroy() moeten doen daarna class defineren en dan de session opnieuw starten daarna alle oude session data terug zetten en de var waarmee class gedefineerd is in de session opslaan ?

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
PHP:
1
2
3
4
5
6
class user {

}
session_start();

$_SESSION['user'] = new user;

^ Eerder zoiets.

Declareren / Definieren (:?) van class en die later na de session_start() alloceren met new "classname".

Acties:
  • 0 Henk 'm!

  • Error65
  • Registratie: Oktober 2001
  • Laatst online: 12-01-2023

Error65

Error Inside

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
class user {
    // Rest van de code
}

session_start();

$user = new user();

// Wegschrijven in de sessie
$_SESSION['user'] = serialize($user);

// Ophalen uit de sessie
$user = unserialize($_SESSION['user']);


Ik hoop dat je wat verder kan helpen...

http://www.uitdehoogte.nl/bert


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Van http://www.php.net/manual/en/ref.session.php :

Caution
If you do turn on session.auto_start then you cannot put objects into your sessions since the class definition has to be loaded before starting the session in order to recreate the objects in your session.
Pagina: 1