3

前文:私のアプリはmod_rewriteが有効になっており、Request_URIに基づいてさまざまなページをダウンロードしてページコンテンツとして出力するindex.phpページがあります。

問題:File()またはFile_get_contents()関数は、他のアプリページのダウンロードに優れています。しかし、セッションが有効になっているページをダウンロードするためにそれを使用しようとするとすぐに、問題が発生し始めます。

主な問題は、ダウンロードしたページから既存のセッションIDをURLに渡そうとすると、たとえば

  $url = "http://localhost/EmplDir/AdminMenu.php";
  return implode('',file($url. "&" . session_name() . "=". session_id()));

私のページが読み込まれることはありません(またはfile()がコンテンツを読み込むことはありません)。ここではcurl関数を使用する必要があると思いますが、オプションが多すぎます。ダウンロード可能なページに現在のPHPセッションについて知らせるために使用するcurlオプションが役立つアドバイスです。

PS上記はWindowsとLinuxの両方に当てはまるようです。

4

3 に答える 3

3

クエリ文字列を残りのURLから?で区切りませんでした。

試す

return file_get_contents($url. "?" . session_name() . "=". session_id());

また、サーバーがsession.use-only-cookies構成設定を使用していないことを確認する必要があります。

スクリプトがクエリ文字列を認識してそれに基づいて動作するべきではない理由はありません。var_dump($ _ GET)を実行するスクリプトを記述し、上記のように要求することで、自分を説得できます。出力にクエリ引数が表示されている場合は、スクリプトをデバッグして、セッションIDが指定されたときにスクリプトが期待どおりに動作しない理由を確認する必要があります。

注:アプリケーションと同じドメインからファイルをリクエストすることを想定しています。そうでない場合、リモートサイトのセッションIDを使用してもあまり意味がありません

于 2009-02-25T16:37:04.190 に答える
2

スクリプトがスーパーグローバル変数を変更しない場合は、次のように含めることができます。

ob_start();
include $_SERVER['DOCUMENT_ROOT'].'/EmplDir/AdminMenu.php';
return ob_get_clean();
于 2009-02-25T18:04:17.240 に答える
0

session_name現在のスクリプト セッションが表示されsession_idます。削除サーバーではありません。http を理解できるものを使用する必要があります。Curl を使用するか、ブラウザを完全にエミュレートするSimpleBrowserのようなものを使用できます。

于 2009-02-25T17:13:46.147 に答える