マイコード:私はこのようなクラスを使用MySQLの接続が無効なため、リンクのリソースの失敗
class cdbsHandler
{
[...]
private $link;
function __construct($mysqld)
{
[...]
$this->link = mysql_connect(
$mysqld['host'], $mysqld['user'], $mysqld['password']
);
mysql_select_db($mysqld['database'], $this->link);
}
function write($sessionId, $data)
{
$sessionId = mysql_real_escape_string($sessionId, $this->link);
}
[...]
}
:$mysqld
は、データベースの資格情報がある
static function startSession($name, $mysqld)
{
[...]
$sessionHandler = new cdbsHandler($mysqld);
session_set_save_handler(
array ($sessionHandler,"open"),
array ($sessionHandler,"close"),array ($sessionHandler,"read"),
array ($sessionHandler,"write"),array ($sessionHandler,"destroy"),
array ($sessionHandler,"gc")
);
session_start();
}
。 静的関数は、ユーザーがページを読み込むたびに呼び出されます。
私が手にエラーがある:
mysql_real_escape_string(): 2 is not a valid MySQL-Link resource
(calling mysql_real_escape_string in the write function)
資格情報が正しいです。それらは設定ファイルからロードされ、セッションの開始後に数行の接続を確立するために使用されます。私には非常に重要なようで何
: 私は実際にログインすることだとデータが、すぐログインページは、上記のエラーが表示されたホームページに私をリダイレクトするように、データベース(/セッション)に書き込まれますがされています。 (。。ログインページがセッションデータに保存されたフォーム・トークンを検証しかし、その要求を送信した後にスクリプトがもはやいかなるセッションデータにアクセスすることはできません)
詳細情報: コードからですデータベース "バックアップ"を持つmemcachedセッションハンドラ。
多くのコードが不足しているような気がします。問題がどこにあるかを確認できるように、コードをもっと提供してください。例えば、 'write()'関数/ '$ sessionId'変数はどこでどのように使われていますか? – Ryan
データベース接続が正常に完了しましたか? mysql_connect()コールの後に 'die or(mysql_error())'を追加してみてください。 –
@ Ryan:セッションに書き込むときに使用され、sessionIdは自動的にphpによって関数に渡されます。 – Kazuo