• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:textareaでのデータ受け渡し)

テキストエリアでのデータ受け渡しに関する問題

このQ&Aのポイント
  • テキストエリアでのデータ受け渡しに関する問題が発生しています。
  • 質問文章の入力画面でテキストエリアにデータを入力し、参照ボタンをクリックすると参照画面が表示されます。
  • しかし、参照画面から入力画面に戻った際には、テキストエリアには一部のデータしか表示されず、問題が解決しません。

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

  • ベストアンサー
回答No.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> とするべきところです。

morizoukun
質問者

お礼

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

その他の回答 (1)

回答No.1

HTMLの書き方の問題ですね。 <input type=hidden name=srinaiyou value=テスト 備考> と書いてもダメです。 <input type=hidden name=srinaiyou value="テスト 備考"> のように、ダブルクォートで括る必要があります。 この部分以外も全て同じで、属性値はダブルクォートで括りましょう。 きちんと括らないと、上記のように動作がおかしくなるだけでなく、セキュリティ上の問題になります。ダブルクォートで括るのと、<>"&などのHTML上の特殊文字をHTMLエスケープすることをお忘れなく。

morizoukun
質問者

補足

初歩的なことで申し訳ございませんが 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> ダブルクォートのつけかたをどのようにしていいのか解りません 簡単かもしれませんが教えていただけないでしょうか 宜しくお願いします