[PHP] Session in class werkt niet

Pagina: 1
Acties:

Onderwerpen


  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
ik heb de volgende code in een class staan:

PHP:
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
function the_session()
    {
        global $MasterBB, $HTTP_SESSION_VARS;
        session_start();
        if(empty($HTTP_SESSION_VARS['member_name']) || $HTTP_SESSION_VARS['member_name'] != $MasterBB->memberinfo['username'])
        {
            if(!empty($HTTP_SESSION_VARS['member_name']))
            {
                if($HTTP_SESSION_VARS['member_name'] != $MasterBB->memberinfo['username'])
                {
                    session_unregister("member_name");
                }
            }
            $member_name = $MasterBB->memberinfo['username'];
            session_register("member_name");
        }
        if(empty($HTTP_SESSION_VARS['member_id']) || $HTTP_SESSION_VARS['member_id'] != $MasterBB->memberinfo['uid'])
        {
            if(!empty($HTTP_SESSION_VARS['member_id']))
            {
                if($HTTP_SESSION_VARS['member_id'] != $MasterBB->memberinfo['uid'])
                {
                    session_unregister("member_id");
                }
            }
            $member_id = $MasterBB->memberinfo['uid'];
            session_register("member_id");
        }
        if(empty($HTTP_SESSION_VARS['member_group']) || $HTTP_SESSION_VARS['member_group'] != $MasterBB->memberinfo['membergroup'])
        {
            if(!empty($HTTP_SESSION_VARS['member_group']))
            {
                if($HTTP_SESSION_VARS['member_group'] != $MasterBB->memberinfo['membergroup'])
                {
                    session_unregister("member_group");
                }
            }
            $member_group = $MasterBB->memberinfo['membergroup'];
            session_register("member_group");
        }
        if(empty($HTTP_SESSION_VARS['ip']) || $HTTP_SESSION_VARS['ip'] != $_SERVER['REMOTE_ADDR'])
        {
            if(!empty($HTTP_SESSION_VARS['ip']))
            {
                if($HTTP_SESSION_VARS['ip'] != $_SERVER['REMOTE_ADDR'])
                {
                    session_unregister("ip");
                }
            }
            $ip = $_SERVER['REMOTE_ADDR'];
            session_register("ip"); 
        }
        
    }


Nu is het probleem dat alle sessies leeg blijven terwijl de variabelen wel zijn ingevuld.

Ik roep deze functie zo aan:
$func->the_session();

Stop ik deze code in de index.php dan werkt hij als een trein dus zou het eigenlijk niet aan de code 'kunnen' liggen.

Stop ik er bijv. dit in:
code:
1
2
$test = "blaat";
session_register("test");

dan doet hij het ook niet |:(

k weet niet waar k het hierin moet zoeken

Verwijderd

session_start(); moet die niet helemaal bovenaan het script staan dan ?

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
heb k ook al geprobeerd, maar dat werkt ook niet :(

Verwijderd

Heeft dat niet te maken met feit dat je met die manier van gebruik van sessie variabele ze pas 'op de volgende pagina' kan gebruiken? Misschien is het opgelost als je gebruik maakt van $_SESSION['test'] = "blaat"; Deze kan je namelijk direct op de pagina aanroepen... Of begrijp ik je probleem helemaal verkeerd...

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
wat ik dus doe is dit:
PHP:
1
2
$func->the_session(); // Hier moet hij m dus 'aanmaken'
print_r($HTTP_SESSION_VARS); // hier zouden ze er dus wel bij moeten zitten


magoed, k zal jouw manier een proberen

[ Voor 9% gewijzigd door codeweb op 27-02-2003 11:49 ]


Verwijderd

OP 'mijn' manier wordt dat dus wel print_r ($_SESSION), let wel op je php versie, want oudere versie ondersteunen het gebruik van $_SESSION nog niet (weet ff niet meer vanaf welke versie dit ws )

edit:
sorry, had de global ff over het hoofd gezien...

[ Voor 17% gewijzigd door Verwijderd op 27-02-2003 12:04 ]


  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

van de online PHP documentatie: http://www.php.net/manual/en/ref.session.php
Note: As of PHP 4.1.0, $_SESSION is available as a global variable just like $_POST, $_GET, $_REQUEST and so on. Unlike $HTTP_SESSION_VARS, $_SESSION is always global. Therefore, you do not need to use the global keyword for $_SESSION. Please note that this documentation has been changed to use $_SESSION everywhere.

You can substitute $HTTP_SESSION_VARS for $_SESSION, if you prefer the former. Also note that you must start your session using session_start() before use of $_SESSION becomes available.

The keys in the $_SESSION associative array are subject to the same limitations as regular variable names in PHP, i.e. they cannot start with a number and must start with a letter or underscore. For more details see the section on variables in this manual.

If register_globals is disabled, only members of the global associative array $_SESSION can be registered as session variables. The restored session variables will only be available in the array $_SESSION.

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
dan zou het dus niets uitmaken :/

Verwijderd

hmm, toch raar, als ik je functie niet gebruik asl functie (;)) en zet er bovenin nog ff dit:
code:
1
2
$test = "blaat";
session_register("test");
Dan moet ik sowieso nog ff mn browser refreshen voordat ik resultaat naar mn scherm geschreven krijg... Stop ik voor de gein ff het ip adres met
code:
1
$_SESSION['ip'] = $REMOTE_ADDR;
krijg ik wel direct resultaat op mn scherm...

edit:
ASH heeft waarschijnlijk gelijk, jij maakt je HTPP_SESSION_VARS globaal, maar zo globaal zijn ze dus niet ;), want met $_SESSION die standaard globaal zijn en makkelijker in gebruik werkt het wel...

[ Voor 26% gewijzigd door Verwijderd op 27-02-2003 12:31 ]


  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

misschien éérst die $HTTP_SESSION_VARS 'globaliseren' ?? (heb ik namelijk vaker meegemaakt)

bijvoorbeeld:

PHP:
1
2
3
global $HTTP_SESSION_VARS;
$func->the_session(); // Hier moet hij m dus 'aanmaken'
print_r($HTTP_SESSION_VARS); // hier zouden ze er dus wel bij moeten zitten


* [ash] vindt werken met $_SESSION, $_POST etc veel prettiger :)

Verwijderd

$_SESSION[test] --> is al globaal
$HTTP_SESSION_VARS[test] --> niet globaal
global $HTTP_SESSION_VARS ---> nu wel globaal

ik zou dit even lezen als ik jou was: http://www.phpfreakz.nl/artikelen.php?aid=88

Acties:
  • 0 Henk 'm!

  • codeweb
  • Registratie: Juni 2002
  • Laatst online: 17-09 16:36
K had eigenlijk niet verwacht dat $_SESSION zoveel verschil zo maken, maar k had misschien even moeten zoeken ( had k waarschijnlijk die phpfreakz pagina wel gevonden), maar k vond het raar dat het ene wel werkte en andere niet. Maar het werkt nu en k wil iedereen bedanken :D

[ Voor 3% gewijzigd door codeweb op 28-02-2003 10:30 ]

Pagina: 1