我被稱爲類在我的劇本
$_SESSION['user']= 'username';
如果我贊同在某些函數這表明使用$_SESSION['user']
;
Catchable fatal error: Object of class user could not be converted to string in /home/username/public_html/cart-admin/include/classes/class.auth.php
我被稱爲類在我的劇本
$_SESSION['user']= 'username';
如果我贊同在某些函數這表明使用$_SESSION['user']
;
Catchable fatal error: Object of class user could not be converted to string in /home/username/public_html/cart-admin/include/classes/class.auth.php
好像你的腳本保存名爲user
到$ _SESSION VAR的對象。這就是爲什麼你看不到username
字符串,它可能會被腳本覆蓋。您必須使用其他關鍵字來存儲用戶名。
號,$ _SESSION可能永遠與你user
類的對象/實例衝突。
雖然你的狀態,這是你的實際代碼,很難相信你在你的腳本硬編碼'username'
。 ;-)
假設您的實際代碼如下所示:
$user = new user;
// ... many lines between ...
$_SESSION['user'] = $user;
// ... more lines between ...
echo $_SESSION['user'];
...那麼錯誤很容易解釋。當你這樣做時PHP試圖隱式地把這個變量中引用的對象(類user
的一個對象)轉換成一個字符串,以便打印。
要檢查,如果我是正確的,你可以正確之前插入這個代碼的echo
:
echo "session variable 'user' is of type: ", gettype($_SESSION['user']);
你要麼看到.. is of type: user
這是我所期望的,或者你會看到,這是你想要的。
有此兩種可能的解決方法:
$_SESSION['user'] = $user->getName();
或$_SESSION['user'] = $user->name;
user
類中的魔術__toString()
method (see manual)來使此隱式轉換成爲可能。在__toString()
中,只需從user
對象中返回用戶名即可。我會選擇1,這是更重要的一點,並不會在會話中存儲用戶對象的序列化。
你在運行[Register Globals](http://bg2.php.net/manual/en/security.globals.php)嗎? – lanzz
你確定這是你的代碼嗎?如果你有'$ _SESSION [$ user] =「username」'會更有意義,它更適合這個錯誤。 –
$ user = new user(); – vascowhite