2011-09-09 12 views
-1

フィールドチェック(PHP + HTMLで書かれています)を行ったアンケートがあります。だから私はhttpsを介してデータを送信します。PHPセッションの動作

ユーザーがクリックは、すべてのデータが$ _SESSION [「paramsは」]に移動され、その後、このデータがチェックされている場所のヘルパークラスに渡されるボタンを提出した後には、この

<form id="frm_order" method="post" action="https://site/service_for_businesses" autocomplete="off"> 
<input name="username" id="username" size="40" maxlength="500" type="text" value=""> 
<button name="Submit" id="Submit" value="Отправить" type="submit" onclick="return final_check();"></button> 
</form> 

のように動作します。すべてがOKならば、ユーザは "SUCCESS PAGE"にリダイレクトされます(この部分は正常です)。しかし、フォームフィールドからUSERのデータに間違いがあると、$ _SESSION [..]がVIEW-controllerに渡され、ページエラーが発生したフォームフィールドの近くに警告が表示されます。私はそこにある)たとえば、私は、「ミ%^ XS」
2)
3を提出押されたユーザ名を書いた、いくつかのデータを書いた)

1: 問題は、このような奇妙な行動があるということですユーザーが特別な記号を使用することができないため、リダイレクトがあります
4)間違ったユーザー名と警告が表示されました
5)私は何もしていませんでした - リダイレクト
6)警告のない空のフィールドがあります
7)SUBMIT - >リダイレクトを押しました
8)私はステップ4と同じものを持っていましたが、警告のあるユーザ名
など

私はその理由を理解できません。

私のウェブサイトはバランサを備えた2台のWebサーバー(DdoSを避ける​​ため)に配備されています。 両方のサーバーで同じIDを持つ2つのセッションがあるようです。

+0

最後に私はこの問題を解決しました。プロキシとして動作するnginxを持つ2台の余分なサーバーがあるようです。だから私は設定ファイルを編集し、問題を解決しました。 –

答えて

1

は、PHPは、セッションIDを生成し、あなたが存在しないセッションクッキーをPHPに送信する場合、PHPで作成する、

またphp.iniでsession.save_pathはで定義されたディレクトリに格納します対応するセッション。

したがって、サーバー1でセッションを作成する要求を行うと、そのセッションのCookieが作成されます。サーバー2に切り替えると、セッションクッキーが認識されます。セッションがすでに存在する場合は、セッションCookieが使用されます(あなたのケースは明らかです)。その場合、それぞれに異なるデータを持つ2つのサーバーに同じセッションIDが割り当てられます。

この問題の解決策は、2つのサーバー(データベースなど)に共通の場所にセッションを格納することです。参照:http://fr.php.net/manual/en/function.session-set-save-handler.php

1

Apacheのセッションは、通常、ローカルディスクに保存されます。 (場所のPHP設定を参照してください)

PHPセッション保存パスを共有リソース(NFS経由のネットワークディスクなど)に設定した場合、実際にはセッション情報を共有して、両方のサーバーで同じセッションを持つことができます。

少なくとも、両方のPHP + Apacheインスタンスが実際に同じセッション記憶域を持たない限り、彼らは同じ(または他の)SIDに対して異なるセッションを持つでしょう。デフォルトで

1

デフォルトでは、PHPはセッションファイルを/ tmpディレクトリに保存します。 2つのwebserversディレクトリでWebサイトを実行している場合は、保存されている場所に両方からアクセスできる必要があります。そうでない場合は、各Webサーバーが自分のセッションファイルを保存します。

ディレクトリを変更するには、php.iniのsession.save_pathを設定します。詳細はこちら:http://www.php.net/manual/en/session.configuration.php

データベースにセッションを保存することもできます。

関連する問題