みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

チェックボックスのvalueに変数を使った場合の取り出し方

どうしても、方法が分からず投稿しました。
会員にメール送信するプログラムですが、一部のチェックを入れた会員だけ
に送信するプログラムを作ろうとしています。

チェックボックスのvalueに$col[email]という変数を用いてデータベース
にあるメールアドレスを一度ループをかけてチェックボックスに表示します。

チェックボックス表示されたメールアドレスの中で、チェックの入っている
アドレスだけにメールを送りたいのです。そこで、配列にして破線下のように
してcheckboxのvalue値がどうなっているのか確かめてみると、$col[email]の
ように表示されます。なんとか、$col[email]に代入された内部のメールアドレス
を取り出したいのですが、詳しい方宜しくご指導お願いいたします。


$sql="SELECT simei,email FROM ********";
$res=mysql_query($sql);
print '<font size="1">';
print '<form method="post" action="<?=SEVER[PHP_SELF]?>" name="address">';
print '<center><input type="button" onClick="submit()" name="sousin" value="チェック""></center><br>';
$i=0;
while($col=mysql_fetch_array($res)){
$simei=mb_convert_encoding($col[simei],"SJIS","EUC");
print '<input type="checkbox"checked name="chek[]" value="$col[email]">';
print $col[email]."[".$simei."]<br>";

}

---------------------------------------------------------------------------


$checkbox=$_REQUEST["chek"];

for($i=0;$i<sizeof($checkbox);$i++){
print $checkbox[$i];
print "<br>";
}

投稿日時 - 2008-12-12 19:54:29

QNo.4550485

困ってます

質問者が選んだベストアンサー

>> print '<input type="checkbox"checked name="chek[]" value="$col[email]">';

上記を
print '<input type="checkbox"checked name="chek[]" value="'.$col[email].'">';
に変更すれば中身が見えるようなりますが、
メールアドレスを公開しても問題無いのですか?

また、下記の部分はクロスサイトスクリプトの餌食ですが問題ありませんか?
>> action="<?=SEVER[PHP_SELF]?>"

投稿日時 - 2008-12-12 20:43:52

お礼

出ました~~!ありがとうございます^^。非常にうれしいです。
まだ、PHP勉強して日も浅いので良く分からないのですが、
クロスサイトスクリプトの餌食とありますが、どういう意味なのでしょうか。もしよければ教えていただければありがたいです。
action="<?=SEVER[PHP_SELF]?>"のところは、action="****.php"と
しかり書いたほうが良いのでしょうか?

投稿日時 - 2008-12-13 00:18:12

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

mpx

>> クロスサイトスクリプトの餌食とありますが、どういう意味なのでしょうか。

初心者が陥りやすい 昔から有名な脆弱性の一つです。
Cookie情報の盗み取りやフィッシングサイトへの誘導などに利用されます。
対策方法などは、下記ページなどを参照してください
http://www.phppro.jp/phptips/archives/vol5/3
「PHP_SELF XSS」でWEB検索すれば他にも説明は見つかると思います。

投稿日時 - 2008-12-14 08:54:00

お礼

ありがとうございます。調べてみます。

投稿日時 - 2008-12-14 14:55:13

ANo.2

$_SERVERはユーザー入力とは無関係だからクロスサイトスクリプティング脆弱性にはなりません。
まあ、そんな判断をせず、「原則すべての画面出力は事前にHTMLエスケープをすべき」なのですが。

氏名とメールアドレスを画面に出力する部分のほうは問題です。
氏名に「<font size="10">田中山田田吾作乃進</font>」と打ち込まれる可能性は考慮していますか?
メールアドレスに「">でもそんなの関係ねえ!<"」とか書かれたら文字列が表示されたりしませんか?
登録側で別途処理を行なっているならば安全なのですが。

投稿日時 - 2008-12-13 12:09:00

お礼

そうですね。まずいですね。
何を入力してくるか分からないですから、対応策をとらないといけないですね。ありがとうございました。

投稿日時 - 2008-12-14 14:58:28

あなたにオススメの質問