[PHP-users 8073] Re: $_POST変数を初期化するには
しょうなり [ml]
php-users@php.gr.jp
Sun, 16 Jun 2002 15:18:22 +0900
しょうなりです。
ishihara さんは書きました:
>こんにちは。
>石原と申します。
>
>【質問】
>$_POST["xxx"]グローバル変数(連想配列)を初期化することはできるのでしょうか
>?
>
>要するに、同じページにPOSTしてデータをDBに登録はしたいのですが、
>$_POST["xxx"]グローバル変数(連想配列)のデータがそのまま残ってしまう
>(キャッシュ?)。
>その影響か、一度正常に登録後、ブラウザの更新ボタンをクリックすると、
>isset($_POST["xxx"])にて、テキストボックスに入力されているか判別しているが、
>初期化されていない$_POST["xxx"]グローバル変数(連想配列)のデータの為、入力
>されていると判断され、DBに登録されてしまうんです。
>そこで、正常にデータ登録後、$_POST["xxx"]を初期化またはクリアできれば、更新
>されても、データ登録はされないだろうと考えたわけですが・・・
POSTデータをキャッシュしているのは PHP ではなく、
お使いのブラウザのほうです。
PHPに限らず、Perl等でも同じ動作をします。
例えば MacOSX のIE5.1などは POSTデータをキャッシュしませんので、
リロードしても再投稿にはなりません。
(それで動作チェック時にはまた1からデータを作らなくてはいけなくて、
めんどくさかったりしますが)
僕の場合は switch case文で登録と表示を切り分けて、
面倒でも header() で再表示させています。
switch ($_POST["action"]) {
case "regist" :
include("regist.inc");
header("Location: http://domain/script.php?action=39mes");
break;
case "39mes" :
include("39mes.ihtml");
break;
}
という感じです。
ご参考までに…。
--
しょうなり@信州 肥田昌也
Email: shounari@webappli.jp
HomePage: http://www.webappli.jp/
=> JSlayout プレビュー版(見〜る〜だ〜け〜)