AJAXリクエストを介してセッションを維持しようとしています。単にsession_start()
を呼び出すだけでは、既存のセッションが取得されず、代わりに新しいセッションIDが作成されます。私のソリューションは、AJAX呼び出してPHPのセッションIDを渡すことだったが、これは、次のエラーが発生しました:セッションIDの下線番号
Warning: session_start() [function.session-start]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in ...
私は現在のセッションIDは、アンダースコア文字を含んでいるためであると考えていますが、そのセッションIDをされていますsession_id()
への呼び出しによって取得されるため、どのように不正な文字が含まれる可能性がありますか?
私が何を意味するかの簡単な例:(jQueryのを使用して)ページの
はJavaScript
var sessID = "<?php echo session_id(); ?>"; //sessID contains underscore characters
$.get('/path/to/script.php',{sid:sessID}, function(data) {
//do something
});
script.php
<?php
session_id($_GET['sid']);
session_start();
echo $_SESSION['some_key'];
?>
だから私は現在、セッションIDを解析するために思っています最初のページでそれを使用しようとする前にその中の悪い文字を置き換えてください。しかし、これが正しいことかどうか、あるいは別の場所で解決策を探す必要があるかどうかはわかりません。
'のsession_start()は' AJAX呼び出しでセッションを保存していない場合は、どこかに問題を抱えています。あなたはどこかでセッションIDを再生成していますか? –
可能です。セッションは実際にはDrupalモジュールで設定されていますが、JSとJSが相互作用するPHPはDrupalサイトの一部ではありません。 – shanethehat
セッションIDを送信するための新しいチャネルを開く代わりに、Cookieの問題を詳細に調べてください。 firebugやfiddlerのようなものから始め、サーバーの応答のクッキーヘッダーを確認します。 – VolkerK