[PHP] Session-vars laten zich niet benaderen

Pagina: 1
Acties:

  • snoopy
  • Registratie: December 2000
  • Laatst online: 25-08 12:42
Ik ben op het moment bezig om een site te maken met een ingebouwd leden- annex cms-systeem. Heb al een klein deel af, maar als ik de functies session_register gebruik, kan ik die variabelen later niet meer benaderen vanuit andere functies.

Hier volgen de scripts:

main.php (het hoofdaansturingsscript)
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
<?php

/*
Commentaar blabla
*/

// System settings

$sys_title="Activa :: De activiteitencommissie van het OVC";
$sys_name="ActivaCMS";
$sys_version="1.0.0";

// Database settings

$db_host="192.168.0.1";
$db_user="root";
$db_pass="";
$db_database="activacms";

// Layout settings

$lo_bgcolor="#000000";
$lo_bgpic="";
$lo_txtcolor="#FFFFFF";
$lo_linkcolor="#FFFFFF";
$lo_alinkcolor="#FFFFFF";
$lo_vlinkcolor="#FFFFFF";
$lo_fontface="Arial, Helvetica, sans-serif";
$lo_fontsize="2";
$lo_titlesize="3";

// Includes

require("./sources/db.php");
require("./sources/auth.php");

// Main script

session_start();
$acms_sess=session_id();

if(!($sLoggedIn==$acms_sess)) {
    $sUIDc=session_register('sUserid');
    $sUNMc=session_register('sUsername');
    $sPWDc=session_register('sPassword');
    $sURNc=session_register('sUserrank');
    $sRLNc=session_register('sRealname');
    $sLGIc=session_register('sLoggedIn');
}

if($cmd=="verifylogin") {
    auth_verify($username,$password,$acms_sess);
}

if($cmd=="login") {
    auth_login($acms_sess);
}

?>

db.php is niet van belang, maakt alleen maar verbinding met mijn databeest met de functies db_connect() & db_query().

Hier volgt auth.php, daar zit (denk ik) het probleem:
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
<?php

/*
commentaar blabla
*/

session_start();
$acms_sess=session_id();

function auth_login($acms_sess) {
    if($acms_sess && $sLoggedIn) {
        auth_enteradmin($acms_sess);
    }
    if(!$sLoggedIn && !$sUserid && !$username && !$password) {
        // Show login entry form
        require("./sources/forms/login.frm.php");
    }

}

function auth_verify($username,$password,$acms_sess) {

    // Check username && password
    $link=db_connect();
    $sql="select * from auth_users where user_name='$username'";
    $resultaat=db_query($sql,$link);

    while(($obj_auth=mysql_fetch_object($resultaat))) {
        if(md5($password)==$obj_auth->user_pwd) {
            echo("PWDCHK OK");
            $sUserid=$obj_auth->user_id;
            $sUsername=$obj_auth->user_name;
            $sPassword=$obj_auth->user_pwd;
            $sUserrank=$obj_auth->user_rank;
            $sRealname=$obj_auth->user_rlname;
            $sLoggedIn=session_id();

            auth_enteradmin($acms_sess);
        }
    }
    mysql_close($link);
}

function auth_enteradmin($acms_sess) {
    echo($acms_sess);
    if($sLoggedIn && $acms_sess && $sLoggedIn==$acms_sess) {
        echo("You're logged in");
    }
}
?>

Ik draai btw. op een Apache-server (Apache/1.3.22 (Win32) PHP/4.0.6) met een MySQL-db op WinXP

Ik hoop hierbij genoeg informatie gegevens te hebben,

Bij voorbaat dank

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Sessie vars zijn standaard niet global, gok ik...

Oftewel gebruik $_SESSION['varnaam']; als je php4.1.x hebt, of verander je functie aanroep naar iets als:
function functie(..., $sessie_array)

waarna je het aanroept met: functie(..., $HTTP_SESSION_VARS)

[edit] Sowieso is het gebruik van een van die array's sterk aan te bevelen... Roep je pagina maar eens aan met een foutieve sessie en als GET-parameter pagina.php?sLoggedIn=true

aan :)

  • snoopy
  • Registratie: December 2000
  • Laatst online: 25-08 12:42
Bedankt, ik zal het eens proberen

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 14:17
Begin maar met upgraden naar PHP 4.2.0 (4.1.2. is buggy).
Dan kan je iig een stuk netter programmeren :)