• ベストアンサー

PHPのhtmlspecialcharsについて

PHPのhtmlspecialchars関数は、フォームがある箇所に使う関数ですか?htmlspecialchars関数を使う場面を教えていただけると幸いです。

  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
回答No.1

例えば、、ファイルに -- hoge.txt -- <html> <body> わあ </body> </html> これをfreadで読みだして ただ、echoで表示してみてください。 「わあ」しか画面には出ませんので。 しかし、元々は"txt"=テキストファイルであって、 HTML=ハイパーテキストではない。 しかし、PHPはそれがただのテキストだと思っていても、 クライアントはそれがわからないのですよ!。 じゃあどうしますか?って話。 同じように、フォームパーツで、textareaなどに <font color=red>あいうえお</font> なんて書かれたら、次の確認画面では、赤で出てしまうでしょうね。 もしそれが、例えばですが・・・ "<style>body {display:none;}</style>" これが投稿物とする。 何かを投稿されていたのをそのまま、表示したらどうなるか? 恐ろしや~ってことで。

関連するQ&A

  • htmlspecialcharsについて

    フォームから送られてきたデータの中に「<」や「>」が含まれていたら htmlspecialcharsを使用してを変換したいのですが、変換されず その原因もわからない状態でおります。 $text=$_POST['text']; $text= htmlspecialchars($text); print"text=$text"; としています。 フォームから「"」を入力すると「\"」と変換されます。 PHPマニュアルなど見ますと「<」は「&lt;」に変換され表示される のでは思っているのですが。 また、preg_replace も試しましたが変換されませんでした。 PHP Version 4.3.10です。 どなたかご教授いただけないでしょうか。お願いします。

    • ベストアンサー
    • PHP
  • htmlspecialcharsの使い時

    phpでhtmlspecialcharsを使ってタグの無効化をするとセキュリティーが向上するとあったのですが、フォームからのデータを読み込んで保存する時に使うのが良いのでしょうか? それとも保存時は何もせずに表示する時にこの関数を通すのが良いのでしょうか? 自分は保存時にこの関数を通すと思っていたのですが、翔泳社のPHP入門教室10日で覚えるシリーズのサンプルではDBからデータを読み込んで表示する時にこの関数を通していました。 こちらのほうが正解なのでしょうか。 よろしくお答えください。

    • ベストアンサー
    • PHP
  • pg_escape_stringとhtmlspecialcharsの記述の仕方について

    お世話になります。フォームで入力した値をpostでPHPに送ってます。 その際にセキュリティを考えてpg_escape_stringとhtmlspecialchars関数を使用したいのですが、簡単な記述方法が分かりません。 今現在は下記のようにしてます。 $tesuto=pg_escape_string(@$_POST["tesuto"]); $tesuto="'" .htmlspecialchars($tesuto) ."'"; フォームで入力する項目が20箇所あるので、これをスマートに 記述する方法は無いでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • htmlspecialcharsを使ったエスケープ処理

    APIを使ってPHPでWEBサイトを構築しているのですが htmlspecialcharsを使ったエスケープ処理はいつ行うべきなのでしょうか? フォームから入力された値だけでよいのでしょうか?? いまいち理解していないのでアドバイスお願いします。

    • ベストアンサー
    • PHP
  • 「addslashes」と「htmlspecialchars」について

    「addslashes」と「htmlspecialchars」について、いくつか分からない点があるので、教えてください。 ■質問1. http://kezy.org/2009/10/04/php-get-post 関数化している例が掲載されているのですが、このやり方を真似してもよいものでしょうか? http://kmaebashi.com/zakki/zakki0042.html ここでは、それぞれの処理の直前に行うべきと書かれていて、 また別のサイトでも、用途に沿った処理方法で、と書かれているのですが、 「addslashes」と「htmlspecialchars」を一つの関数にまとめることは、次のどれに当たるでしょうか? ・別に問題ない ・奨励はしないけど、間違いではない ・止めたほうがよい ※二つを関数化すると、便利だと思うのですが、必要ないところにもサニタイズ処理等がかかるのかな、と思い、そこら辺が問題ないかよく分からなかったので、質問しました。 ■質問2.MySQLを利用する場合は、「addslashes」より、「mysql_real_escape_string」を利用したほうがよいのでしょうか? 両者の違いは何でしょうか? ■質問3.プリペアド・ステートメントを使うのであれば、該当フォーム部分については、別にSQLインジェクション対策をしなくてもよいのでしょうか? あるいは、プリペアド・ステートメントを利用しても、あくまでも攻撃を受ける可能性が下がるだけ(?)なので、「addslashes」をしとくべきなのでしょうか? ※なんでもかんでもやればいいってものでもないのかな? と思い、質問しました。

    • ベストアンサー
    • PHP
  • 初心者の質問「htmlspecialchars」

    高校生で、最近phpをやり始めた者です。 http://www.phppro.jp/school/phpschool/vol7/1 このページに書いてあるスクリプトの下から五行目の「htmlspecialchars関数」が何をしているのかよくわかりません。 関数の意味も調べ、何故必要なのか頭をひねりつつ考えてみたのですが、今ひとつ理解できませんでした。 大変未熟者ですみませんが、回答をいただけるとありがたいです。

    • ベストアンサー
    • PHP
  • htmlspecialcharsの正しいタイミング

    htmlspecialcharsを使うタイミングがいまいちわかりません。 調べてみると、html出力時だということがわかりました。 mysqlを使った場合は以下の手順、 、 (1)フォームの内容をmysql_real_escape_stringしてデータベースに保存 (2)データベースから取り出すとき、htmlspecialcharsして出力する。 だとわかりましたが、ここで疑問点があります。 これまで掲示板などをデータベースを使わずファイル保存で作る場合、 (1)フォームの内容をhtmlspecialcharsしてファイルに保存 (2)foreachですべて表示 というやり方をしていましたが、正しくは、 (1)htmlspecialcharsせず、そのままファイルに保存 (2)foreachで表示するとき、htmlspecialcharsする という順序なのでしょうか?? わかりにくくて申し訳ないのですが、ご教授ください。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHP メール送信時のエスケープについて

    当方素人です。 PHPで作るメール送信フォームについてです。 フォームから受け取った値はクロスサイトスクリプティングやスクリプト挿入防止のため、出力直前でhtmlspecialcharsでエスケープすべし! と書いてあるところが多く、echoするときはhtmlspecialcharsしてから出力する、というのは大体分かりました。 メール送信フォームのサンプルでも、無条件でhtmlspecialcharsしているものが多いようなのですが、 それだと送られたメール(プレーンテキスト)が “YOU&amp;I” みたいになってしまいますよね? そういうものなのでしょうか? そもそもHTML用関数なのに、メールを送るとき(mb_send_mail)にも使用するものなのかな?と・・・ データベースのSQLをエスケープするときにはそれ専用の関数などを使うようですが、メール送信の場合はどうなんでしょうか? Webサイトなどを読んでいろいろ調べているのですが、なんだかこんがらがってしまいまして・・・ 詳しい方、ご教示いただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • htmlspecialchars()について

    htmlspecialchars()関数で、クエリー文字列をHTMLエンティティーに変換してるはずなのですが、中身をダンプしたり、ジャンプしたページのクエリーを見ても、変換されておらず、生の 引数が表示されています。どうすれば、%2ケタなどの文字列で表示されるのか、ご指導お願い致します。スクリプトは下記のようなものです。なお、encoder.php, decoder.php は、両方UTF-8でエンコードしたスクリプトです。 --------------------------------------------------------------------------------------------------------- ジャンプ元:[encoder.php] <!doctype html> <html> <head><title>URLエンコード</title> <meta charset="UTF-8"> </head> <body> <br><br> <center> <?php $input = "空条"; $from = 1; $input2 = urlencode($input); $from2 = urlencode($from); $query_string = 'name='.$input2.'&from='.$from2; echo '<a href="decoder.php?'.htmlspecialchars($query_string, ENT_QUOTES, 'UTF-8').'">エンコード</a>'; ?> </center> </body> </html> -------------------------------------------------------------------------------------------- ジャンプ先「decoder.php」 <?php $name1 = $_GET['name']; $from1 = $_GET['from']; $name2 = urldecode($_GET['name']); $from2 = urldecode($_GET['from']); echo 'デコード前 '; echo '名前:'.$name1.' フロム:'.$from1.'<br>'; echo 'デコード後 '; echo '名前:'.$name2.' フロム:'.$from2; ?>

    • 締切済み
    • PHP
  • Cookieとhtmlspecialchars

    前回setcookieについて質問したのですが、どうしても出来ないのでまた質問させてください。 前回の質問↓↓ http://okwave.jp/qa/q7319771.html htmlspecialcharsを使い、form2.phpで「&」の表示は出来ましたが、form.phpではどのようにやっても出来ませんでした。 記憶されたCookieの値にhtmlspecialcharsを適用するにはどのようにすれば良いのでしょうか。 setcookie(htmlspecialchars("city", "・・・ にしてもダメでした。 また、前回教えてもらった「自分で$_COOKIEも書き替えるか、($_COOKIEでなく)$_SESSIONを使うとかの工夫が必要です。」の方は全然手付かず状態です。 出来ましたらこちらも含め、簡単でよろしいですのでソースでお願いしたいです。 お願いします。

    • 締切済み
    • PHP

専門家に質問してみよう