Fatal error: Call to a member function setQuery() on a non-object
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)
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
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');
?>
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
.. waarom niet geheel in classes? Dan kan je gewoon $this->dbObj->setQuery() doen.
ik weet niet hoe ik objecten zet in session_set_save_handler ik weet alleen hoe het moet met functies.
Code (php)
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
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