スレッド表示 | フラット表示〕 全トピック 920 件中 98 番目 次≫ ≪前

自身にPOSTした時に入力データを消さない

created: 2007-08-09 19:30 | modified: 2007-08-10 17:30 | reply: 2

[3856] 自身にPOSTした時に入力データを消さない

user: eguchi ホームページ | created: 2007-08-09 19:30
こんにちは。
2週間位の初心者です。
会社のHP用の買い物カゴフォームを仕事の合間にローカル環境で作成中ですが、
最初から行き詰まっています。
ご指導頂ければ助かります。
(apache2.048 / php4.4.7.7 / xp)

出来るかどうか又、最適かどうかも自分でもまだ解っていないのですが、とりあえずやってみようということで考えているのが、フレームページで下に商品選択画面(test.php)、上に選択結果画面という風にレイアウトして、商品選択画面には商品が20品位あり、それぞれにチェックボックスを付けて、欲しい製品の数量を入力し、チェクすると、JavaScriptで自身にPOSTして商品選択画面で単価標示させる(数量ランクの為、数量によって単価が変わります。)という風にしたいのですがPOSTすると入力した数量の値が消えてしまいます。これを消さないようにしたいのですが解りません。
尚、以下を試してみました。
(チェックボックスに入力は出来ないような気もしますが・・)

<form ACTION="test.php" name="test" METHOD="POST">
<input type="text" name="num1" value="<?=$num1 ?>" size="9">
<input type="checkbox" name="buy1" value="<?=$buy1 ?>" onclick="document.test.submit();">
</form>

又、echo($_POST["num1"])で受信の確認はしています。

javascriptでは出来ると思いますが、
phpを憶えたいので知りたいと思っています。

以上、よろしくお願い致します。
reply: 3857 返信 編集 削除

[3857] フォームの初期値?

user: ゆうじ | created: 2007-08-10 00:05
こんばんわ。

フレームやjavascriptなどいろんな要素が出てきますが、
要は、フォームで送信した値を、同じフォームの
初期値にしたいということでしょうか。

それならば、このフォームを表示させる前に、

$num1 = $_POST["num1"];

とすれば、フォームから得た値で$num1が初期化できます。


#本題とは離れますが、
実用に絶えるアプリケーションにするなら、

$num1 = $_POST["num1"]; の前に、
$_POST["num1"] が想定内の値(この場合は正の整数字)か確認し、
そうでない場合の処理も必要になります。

また、フォームを表示する際も、
$num1 をそのまま表示するのではなく、以下のように
エスケープしてから表示しましょう。

<input type="text" name="num1" value="<?php echo htmlspecialchars($num1); ?>" size="9">


いずれもセキュリティ上の理由によるものです。
お時間があれば、以下をご覧下さい。
http://www.sound-uz.jp/php/tips/security.html
Parent: 3856  reply: 3858 返信 編集 削除

[3858] Re.フォームの初期値?

user: eguchi ホームページ | created: 2007-08-10 17:30
こんにちは
早速のご回答、ありがとうございます。

> $num1 = $_POST["num1"];
> とすれば、フォームから得た値で$num1が初期化できます。
なるほどです。
もちろん、ご指摘の方法で出来ました。
ありがとうございます。
自分では色々検索して頭をヒネッたつもりでしたが、
足りなかった様です。


> #本題とは離れますが、
> 実用に絶えるアプリケーションにするなら、
> $num1 = $_POST["num1"]; の前に、
> $_POST["num1"] が想定内の値(この場合は正の整数字)か確認し、
> そうでない場合の処理も必要になります。
ごもっともです。
もちろん、考えないといけません。

> また、フォームを表示する際も、
> $num1 をそのまま表示するのではなく、以下のように
> エスケープしてから表示しましょう。
> <input type="text" name="num1" value="<?php echo htmlspecialchars($num1); ?>" size="9">
> いずれもセキュリティ上の理由によるものです。
> お時間があれば、以下をご覧下さい。
> http://www.sound-uz.jp/php/tips/security.html
最初はhtmlspecialcharsを何故?
と思ったのですが、
教えて頂いたページを読んで、
理解(恐らく70%位)しました。
それらを盛り込んでとなると、
上司に言った完成まで2ヶ月待って下さいを訂正します。
途中で音を上げなければ、再度、お世話になるかも知れません。
おかしな質問をするかも知れませんが、
そのときは又、宜しくお願い致します。
ありがとうございました。
Parent: 3857  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 98 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑