アプリ版:「スタンプのみでお礼する」機能のリリースについて

入力画面と参照画面を作成しています
入力画面にtextareaと参照ボタンがあります
両画面ともPHPとテンプレートファイルを使用しています
下記のようにテンプレートファイルに記入しています
<tr>
<td>内容</td>
<td>
<textarea name=srinaiyou rows=5 cols=42></textarea>
</td>
</tr>
<tr>
<td>仕入先</td>
<td>
<input type=text name=sritokcd value="" size=10 maxlength=8>
<input type=submit name=sub_refer value=参  照>
</td>
</tr>
参照画面は下記のようにPHP内で記入しています
得意先のデータが複数行になるためPHPに記入しています
<table width=50% border=1 cellspacing=0 cellpadding=0>
<tr bgcolor=#ccccff>
<th width=15% nowrap>得意先コード</th>
<th width=42% nowrap>得意先名</th>
</tr>
<tr>
<td align=center>12354879</td>
<td align=center><table border=0 cellspacing=0 cellpadding=0><form name=frm12354879 method=post action=/beta/index.php><tr><td><input type=hidden name=page value=T_SyuuriEntry>
<input type=hidden name=srinaiyou value=テスト
備考>
<input type=hidden name=sritokcd value=12354879>
<a href=JavaScript:document.frm12354879.submit()>ABC工務店建設会社</a></td></tr></form></table></td>
</tr>
入力画面のtextareaに
テスト
備考
と入力して参照ボタンを押して参照画面を表示します
参照画面から得意先名を選択したら入力画面に戻るようにしていますが
入力画面が表示されるとtextareaには"テスト"しか表示されません。"備考"が消えてしまいます
うまくデータが受け渡しできません
参照画面を表示した時にはデータが渡っているみたいですが...
同じような質問を見て自分なりにいろいろと試しましたが解決できません

何卒よろしくお願いします

A 回答 (2件)

return("<input type=hidden name=$nam value=$val>\n");


については、
return("<input type=\"hidden\" name=\"$nam\" value=\"$val\">\n");
とすることで、ダブルクォートで括れます。
ただ、クロスサイトスクリプティング攻撃(XSS)を避けるために、
$name = htmlspecialchars($nam);
$val = htmlspecialchars($val);
return("<input type=\"hidden\" name=\"$nam\" value=\"$val\">\n");
とした方が良いです。

<textarea name=srinaiyou rows=5 cols=42>{$srinaiyou}</textarea>
の$srinaiyouは、属性値に値を入れているわけではないので、ダブルクォートで値を括る必要はありません。
ただ、これもhiddenと同じ理由で(XSSを防ぐため)、
<textarea name="srinaiyou" rows="5" cols="42">{$srinaiyou|escape}</textarea>
とするべきところです。
    • good
    • 0
この回答へのお礼

返事が遅くなりました。
正常に動作させる事ができました。
解りやすい解説、いろいろと勉強になりました。
本当に有難うございました。

お礼日時:2006/12/11 16:12

HTMLの書き方の問題ですね。



<input type=hidden name=srinaiyou value=テスト
備考>
と書いてもダメです。
<input type=hidden name=srinaiyou value="テスト
備考">
のように、ダブルクォートで括る必要があります。
この部分以外も全て同じで、属性値はダブルクォートで括りましょう。

きちんと括らないと、上記のように動作がおかしくなるだけでなく、セキュリティ上の問題になります。ダブルクォートで括るのと、<>"&などのHTML上の特殊文字をHTMLエスケープすることをお忘れなく。

この回答への補足

初歩的なことで申し訳ございませんが
hidden文をPHP内で関数を作って設定しているためか
ダブルクォートをうまくつけることが出来ません
ソースは下記のようにしています
function hidden_tg($nam, $val) {
return("<input type=hidden name=$nam value=$val>\n");
}
それとSmartyのtplファイルにダブルクォートをつけようとしましたが
できませんでした
<textarea name=srinaiyou rows=5 cols=42>{$srinaiyou}</textarea>
ダブルクォートのつけかたをどのようにしていいのか解りません
簡単かもしれませんが教えていただけないでしょうか
宜しくお願いします

補足日時:2006/12/08 18:03
    • good
    • 0

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