0

ホイ!

送信したいフォームがありますが、PHPSESSID を追加する必要があります。これは、一部のクライアントが Cookie を許可しないためです。

私のページには、ユーザーのリストを表示する JavaScript 関数 (検索、並べ替え、詳細を開く) がいくつかあります。ページは PHP によって生成されます。

現在、フォームのすべての送信に PHPSESSID を含めるエレガントな方法を探しています。これは複数のページで行う必要があるため、簡単な解決策を期待しています。PHPSESSID をアクションまたは非表示フィールドに追加すると、正しく機能しません。

それとも、この問題は別の場所にありますか? クライアントが制限が厳しすぎるファイアウォールの背後にある可能性があります。その方向のアイデア(特に解決策;-))も大歓迎です!

コード例 (非常に簡略化):

<form name="userlist" method="POST" action="./myuserlist.php">
[...some formfields and stuff..]
</form>

<script>
//one example function, there are several on my page
function next_page()
{
  //set some hidden field to get the next page
  document.forms[0].submit();
}
</script>

前もって感謝します!

さようなら、バスティ

[編集] session.use_trans_sid が true に設定されています

4

2 に答える 2

2

非表示フィールドの使用は機能するはずです-機能しない場合は、php.iniでsession.use_trans_sidがオフになっている可能性があります

それを隠しフィールドに追加してから言うことができます

if (!empty($_POST['PHPSESSID']))
   session_start($_POST['PHPSESSID']);
else
    session_start();
于 2008-10-13T15:21:47.653 に答える
2

隠しフィールドに入れるとうまくいかないとおっしゃるのですが、何がうまくいかないのか詳しく教えていただけますか?

すべての (または多数の) フォーム送信で何らかの状態情報を渡す必要がある状況に直面した場合、input type=hidden フィールドが標準的な方法です。

ここで暗闇の中で推測するだけです。style="display:none" などで入力するようなことをしていますか?その場合は、本物の <input type="hidden"> タグに変更してください。多くのブラウザーは、display:none で非表示になっているフォーム フィールドを送信しません。

もう 1 つの闇の刺し傷: javascript を介して非表示のフォームをページに追加していますか? foo.innerHTML 呼び出しのように? 繰り返しになりますが、一部のブラウザーは、ページに追加されたフォーム フィールドを適切に処理しません。最初からセッション ID を含めるか、サーバーから返されたデータを処理する ajax メソッドを書き直して、innerHTML ではなく dom 操作を介して入力フィールドを挿入する必要があります。

于 2008-10-13T15:30:41.707 に答える