Fatal error: Call to a member function setQuery() on a non-object

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Josef Zorgui

Josef Zorgui

27/03/2008 10:42:00
Quote Anchor link
Goedenmorgen,

Ik probeer een database gestuurde sessie handler te maken alleen krijg ik steeds dezelfde fout. Ik weet echt niet wat er mis is, zou iemand voor mij kunnen kijken.

De foutmelding die ik krijg is.
Fatal error: Call to a member function setQuery() on a non-object inFatal error: Call to a member function setQuery() on a non-object in F:\www\Root\admin\session.php on line 38
Hieronde volgt de script.
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
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
include 'core.php';
$dbObj = null;

function
openSessie(){
    global $dbObj;
    $dbObj = new coreFunctions;
    if ($dbObj->connection){
        return true;
    }

    else{
        return false;
    }
}

function
leesSessie($id){
    global $dbObj;
    $query = "SELECT data FROM session WHERE id = $id";
    $connect = $dbObj->setQuery($query);
    if ($connect == false){
        echo "Er is een fout opgetreden tijdens het inlezen van deze sessie.<br />\n";
    }

    else{
        $aantal = count($dbObj->loadRowList());
        if ($aantal < 1){
            return '';
        }
else{
            list($data) = $dbObj->loadRowList();
            return $data;
        }
    }
}


function
schrijfSessie($id, $data){
    global $dbObj;
    $query = "UPDATE session SET data = $data WHERE id = $id";
    $connect = $dbObj->setQuery($query);
    if ($connect){
        return $dbObj->getAffectedRows();
    }
else{
        return $dbObj->getAffectedRows();
    }
}

function
destructSession($id){
    global $dbObj;
    $query = "DELETE FROM session WHERE id = $id";
    $connect = $dbObj->setQuery($query);
    $_SESSION = array();
    if ($connect){
        return $dbObj->getAffectedRows();
    }
else{
        return $dbObj->getAffectedRows();
    }
}


function
sluitSessie(){
    global $dbObj;
    unset($dbObj);
    return true;
}


function
clearSession($seconds){
    global $dbObj;
    $query = "DELETE FROM session WHERE DATE_ADD(eind, INTERVAL $seconds SECOND) < NOW()";
    $connect = $dbObj->setQuery($query);
    if ($connect){
        return $dbObj->getAffectedRows();
    }

    else{
        return $dbObj->getAffectedRows();
    }
}


session_set_save_handler('openSessie', 'sluitSessie', 'leesSessie', 'schrijfSessie', 'destructSession', 'clearSession');
?>
Gewijzigd op 01/01/1970 01:00:00 door Josef Zorgui
 
PHP hulp

PHP hulp

19/11/2024 00:47:30
 
Gerben Jacobs

Gerben Jacobs

27/03/2008 10:51:00
Quote Anchor link
Waar komt $dbObj vandaan?

.. waarom niet geheel in classes? Dan kan je gewoon $this->dbObj->setQuery() doen.
 
Josef Zorgui

Josef Zorgui

27/03/2008 10:54:00
Quote Anchor link
ik weet niet hoe ik objecten zet in session_set_save_handler ik weet alleen hoe het moet met functies.
 
Terence Hersbach

Terence Hersbach

27/03/2008 11:08:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
session_set_save_handler(
    array('classname', 'openSessie'),
    array('classname', 'sluitSessie'),
    array('classname', 'leesSessie'),
    array('classname', 'schrijfSessie'),
    array('classname', 'destructSession'),
    array('classname', 'clearSession'));
?>

let er wel op dat alles static aangeroepen word. (dus je kan binnen de klas niet met $this-> werken, maar zul je self:: moeten gebruiken)

edit: als je in de sessionclass de db-class extend, moet je de dbfuncties aanroepen met parent:: ipv self::
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
Josef Zorgui

Josef Zorgui

27/03/2008 11:43:00
Quote Anchor link
het lukt me niet???
ik krijg nu een warning.

Warning: session_set_save_handler() [function.session-set-save-handler]: Argument 1 is not a valid callback in F:\www\Root\admin\session.php on line 96
 



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.