[PHP] Session-vars werken niet in andere functie

Pagina: 1
Acties:
  • 41 views sinds 30-01-2008

  • snoopy
  • Registratie: December 2000
  • Laatst online: 25-08 12:42
Ik heb een script met meerdere functies verdeeld over verscheidene bestanden.
Als ik inlog dan geeft ie de session-variabelen niet weer als ze aangeroepen worden vanuit een andere functie.

Hier de broncode van mijn scripts. btw: ik heb mod_db.php weggelaten, want die bevat alleen de database functies (verbinden, query e.d)

index.php:
code:
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
<?php

/*
ActivaCMS
/cp/index.php
Creation date: 30-06-2002
Copyright (©) : Karst Hammer
*/
$fid="cp/index.php, 1.5 Beta, 30-06-2002";

session_start();

require("./mod/mod_db.php");
require("./mod/mod_auth.php");

if(!isset($cmd) && !isset($pg) && !isset($page))
{
    showlogin('Login');
}

if($cmd == 'verify')
{
    checkpwd($username,$password);
}

if($cmd == 'sayhello')
{
    sayhello();
}
?>

mod_auth.php:
code:
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
58
59
60
61
62
63
64
<?php

/*
ActivaCMS
/cp/mod/mod_auth.php
Creation date : June 30th, 2002
Copyright (©) 2002 - Karst Hammer
*/

$fid="/cp/mod/mod_auth.php, 1.5 Beta, 30-06-2002";

session_start();

function showlogin($pagetitle)
{
    //(denk hier de login-page)\\
}

function checkpwd($username,$password)
{
    $link = db_connect();
    $sql = "SELECT * FROM auth_users WHERE user_name='$username'";
    $res_chkpwd = db_query($sql,$link);
    
    if(mysql_num_rows($res_chkpwd) == "0")
    {
        echo("Login failure");
    }
    else
    {
        while(($obj_chkpwd = mysql_fetch_object($res_chkpwd)))
        {
            if($obj_chkpwd->user_pwd == md5($password)) {
                
                global $sUserid, $sUsername, $sPassword, $sRealname, $sUserrank, $sErank, $sLoggedIn;
                
                $sUserid = $obj_chkpwd->user_id;
                $sUsername = $obj_chkpwd->user_name;
                $sPassword = $obj_chkpwd->user_pwd;
                $sRealname = $obj_chkpwd->user_rlname;
                $sUserrank = $obj_chkpwd->user_rank;
                $sErank = $obj_chkpwd->user_erank;
                $sLoggedIn = session_id();
                
                session_register('sUserid');
                session_register('sUsername');
                session_register('sPassword');
                session_register('sRealname');
                session_register('sUserrank');
                session_register('sErank');
                session_register('sLoggedIn');
                
                header("Location: index.php?cmd=sayhello&PHPSESSID=".$sLoggedIn);
                
            }
        }
    }
}

function sayhello()
{
    echo("Your username is: ".$HTTP_SESSION_VARS['sUsername']);
}
?>

Hij geeft dus de session-vars niet weer als deze aangeroepen worden vanuit de functie sayhello.

Weet iemand hoe dit komt en/of hoe dit op te lossen valt?

Bij voorbaat dank.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

scope probleem.

gebruik ofwel $_SESSION, of check www.php.net/global

Dit topic is gesloten.