プロが教える店舗&オフィスのセキュリティ対策術

同じフォームでデータを送信させたいと考えています。
サーバ環境変数の $_SERVER['PHP_SELF'] を使用すれば
出来そうなところまではたどり着いたのですが、具体的な
記載方法が分かりません。

やりたい事としましては、まず最初の画面で1行ずつ何かデータを
表示させて、チェックボックスで複数選択可能な状態にします。
書式方法が分からないところですが、チェックボックスで選択した
データのみを、input type='submit'を使って同じフォームでデータ
を送信させて、チェックボックスにて選択したデータのみを画面に
表示させたいと考えています。

どなたかお分かりになる方がいらっしゃいましたら、簡単な具体例
として記載方法を教えて頂けないでしょうか。

gooドクター

A 回答 (3件)

>> 結果画面には、チェックボックスで選択したデータのみを表示させたいと考えています。



以下参照
<?php
print "<html><body>";
if (isset($_POST['cbox'])){
foreach($_POST['cbox'] as $val){
$val=htmlspecialchars($val);
print "チェック${val}が選択されました<br>\n";
}
} else {
print <<<_FORM_
<form action="" method="post">
<input type="checkbox" name="cbox[]" value="1">チェック1<br>
<input type="checkbox" name="cbox[]" value="2">チェック2<br>
<input type="checkbox" name="cbox[]" value="3">チェック3<br>
<input type="submit">
</form>
_FORM_;
}
print "</body></html>";
?>
    • good
    • 0
この回答へのお礼

ご丁寧に返答を有難う御座いました。
助かりました。

お礼日時:2009/04/06 06:29

>> 簡単な具体例として記載方法を教えて頂けないでしょうか。


例を示します
<?php
print <<<_FORM_
<html><body>
<form action="" method="post">
<input type="checkbox" name="cbox[]" value="1">チェック1<br>
<input type="checkbox" name="cbox[]" value="2">チェック2<br>
<input type="checkbox" name="cbox[]" value="3">チェック3<br>
<input type="submit">
</form>
_FORM_;
if (isset($_POST['cbox'])){
print "<hr>";
foreach($_POST['cbox'] as $val){
$val=htmlspecialchars($val);
print "チェック${val}が選択されました<br>\n";
}
}
print "</body></html>";
?>

>> サーバ環境変数の $_SERVER['PHP_SELF'] を使用すれば出来そうなところまではたどり着いたのですが・・・
$_SERVER['PHP_SELF'] をFormのactionに使うと脆弱性の問題があります。空欄にするか $_SERVER['SCRIPT_NAME']を使いましょう
上記サンプルでは、formの行を下記に変更してもOKです
<form action="${_SERVER['SCRIPT_NAME']}" method="post">

この回答への補足

返答有難う御座います。
教えて頂いた内容でほぼ希望は満たせているのですが、
結果画面には、チェックボックスで選択したデータのみを
表示させたいと考えています。
最初の画面で表示するチェックボックスの選択画面は
結果画面には表示させない方法をご存知でしたら教えて
頂けますでしょうか。

補足日時:2009/04/05 17:38
    • good
    • 0

inputタグにname属性を入れればできますよ。


<input type="submit" name="check">に変更して、あとはPHPの仕事です。
そのプログラムの書き方はこんな感じです。
<?php
(中略)
if ($_POST['name']=="check") {
print $_POST['hoge']."<BR>";
(中略)
}

なお、同様の質問が過去に投稿されており、if ($_POST['name']=="check")のところは「if ($_POST['Submit'])」としても大丈夫なようです。

この回答への補足

返信有難う御座います。
申し訳御座いません。PHPの知識が乏しいため、
おっしゃって頂いている事は何となくは分かるのですが、
具体的にスクリプトに起こすことが出来ず、困っています。
大変申し訳御座いませんが、何か簡単なチェックボックスの
画面部分を加えたスクリプトを教えて頂けると助かります。

補足日時:2009/04/05 17:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング