• ベストアンサー

PHPでフォームからデータを受け取る

PHPでwebページのフォームからデータを受け取り、データをtxtに書き込みするものを作っているのですが、その際にhtmlタグを受け取ると荒らされる可能性があると聞く事があるのですがどういった場合なのでしょうか。 一応htmlspecialcharsを施してはいるのですが、何のためかがよくわからなくて質問しました。 よろしくお願いします。

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

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 htmlspecialcharsに関してはこちらを参照してみてください。 http://fol.axisz.jp/php/man/php/function.htmlspecialchars.html htmlタグを受け取って問題が発生するのは、掲示板等に受け取ったデータ を表示する場合です。 txtファイルに保存したログの中にタグが入っていればそれを読み込んで 表示する際にブラウザはタグを解釈して表示します。 例えば、<span style="font-size:100pt;">あ</span>とか入力されていると とても大きい文字が表示されてしまいます。 また、JavaScript等、ローカルPCの動作がかかわってしまうものだと嫌ですね。 その保存したファイルをブラウザで表示するものに使用しなければ大きい問題は無いと思います。

ataunagi
質問者

お礼

URLとても参考になりました。ありがとうございました。 単にtxtに追書き込みするだけなのでhtmlspecialchars必要ないみたいですね。

関連するQ&A

  • フォームから受け取ったデータを変数に/PHP

    入力フォームからデータを送信し、受け取ります。 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> この時に受けったデータが、「りんご」だとして この「りんご」を変数にしたいです。 ↓ <?php $keyword = "りんご"; ?> このようにするには、 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> の後にどのような処理をすればよいでしょうか? または初めから「$keyword」としてフォームからデータを送ることはできるのでしょうか? 何卒ご指導の程よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのメールフォームについて

    PHPの無料で使えるメールフォームを探しています^^ いろいろ探したんですが、見つかりません。 もし、ご存知でしたら、ヒントでもかまいません。教えてもられると、助かります。 ・メールアドレスを記入する際、再入力フォームに異なるメールアドレスを入れると、注意を出す。 ・必須項目設定が記入されていない場合、注意を出す。 この2つができる、PHPのメールフォームを探しています。 どうぞ、よろしくお願いします^ ^) kent-webさんのPost mailのPHP版のようなものがあると、助かります。 http://www.kent-web.com/data/postmail.html

    • ベストアンサー
    • PHP
  • PHPによる問い合わせフォームのデーターの受け渡し

    Webサイトを作成しており、現在は問い合わせフォームに取り組んでおります。 そこで、問い合わせフォームで入力したデータを送信した後の、確認画面が上手くできません。 PHPのファイルには以下のように記載しました。 しかし、実際のブラウザの問い合わせフォームのページから送信ボタンを押しても、全く何も表示されておりません。真っ白のままです。 そういえば、問い合わせフォームのページ全体のデザインのまま、データを引き継ぐにはどうしたら良いのでしょうか? PHPファイルに何か特別なコードを記載する必要があるのでしょうか? ちなみに、htmlファイルとphpファイルのhead情報は同じです。 何かアドバイスをして下さる方、お願いします!! <?php $name=$_POST['name']; if($name=='') { print'入力されておりません。'; } else { print $name; } ?>

    • ベストアンサー
    • PHP
  • PHP入力フォームについて

    現在入力フォームを作っています。 流れとしてはDBに入っている会員情報をフォーム上に呼び出して(各inputにはDB内の会員の情報が表示される)各会員が自分の情報を編集できるというフォームです。 ここで質問なのですが、会員の人が自分の入力内容を変更した際に入力漏れがあるとフォーム画面に戻るのですがその際に入力した内容が表示されるのではなくDB内のデータが表示されてしまいます。 これをDB内のデータではなく入力した内容にしたいのですが、どうしたらよろしいでしょうか? ソースは下記になります。 form.php <?php DB呼び出し・・・ $_SESSION['name'] = $row['name']; ・・・ ?> <?php echo $_SESSION['err_name']; ?> <input type="text" name="name" value="<?php echo $_SESSION['name']; ?>" /> confirm.php <?php $name = htmlspecialchars($_REQUEST['name']); if(!strlen($name)) { $_SESSION['err_name'] = '氏名を入力してください。'; $errFlag = true; } else { unset($_SESSION['err_name']); } エラーの時はform.phpに戻る ?> <?php echo $name; ?> としています。 とても省略していますが、お分かりの方がいらっしゃいましたら教えていただけると助かります。

    • 締切済み
    • PHP
  • PHPによる問い合わせフォームの作り方

    現在、Webサイトを作成しており、もうそろそろで完成します。 しかし、問い合わせフォームの作り方がわかりません。 一応、「いきなりはじめるPHP ワクワクドキドキの入門教室」という書籍を読んで練習しましたが、この書籍ではXAMPPというフリーのサーバーを使用してPHPを動かしていました。 私は、実際に独自ドメインを取得し、minibredというレンサバも借りているのですが、この場合のPHPの動かし方がわかりません。 ちなみに、問い合わせフォームにはデータベースやMySQLは必要なのでしょうか? 今のところ、問い合わせフォームから送られてきたデータを蓄積し、分析をしようという考えはありまえん。 問い合わせフォームから送られてきた内容(氏名、住所、市年月日、フリーワードなど)を、好きな時に確認できれば良いです。 また、問い合わせフォームから送られてきな内容は、どこで確認できるのでしょうか? メールソフト(Outlook Express、GMailなど)で確認はできるのでしょうか? 何かアドバイスを頂ければ幸いで御座います。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPで「®」や特殊文字のエスケープ

    PHPでフォームから送られてきたデータを、MySQLに登録する際に、 「®」や特殊文字をエスケープして登録したいのですが、 どのようにしたらいいのでしょうか。 「<」や「&」などはhtmlspecialcharsでエスケープできているのですが、 「®」や特殊文字(~やm2など)がエスケープできず、 文字化けを起こして困っています。

    • ベストアンサー
    • PHP
  • フリーのphpフォームを探しています

    phpで出来た商用可能でフリーのフォームを探しています。 お勧めのフォームがあれば教えてください! セキュリティ対策もされているものであれば、ありがたいのです。 ※PHPはあまり詳しくないのですが、色々と聞いたことがあるので… また、CGIではKENT-WEBを使っている人を良く見かけますが PHPで人気のフォームはどれになるのでしょう? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ★PHP★フォーム登録時にタグを読み込まない方法

    PHPで登録フォーム作成してます。 テキストエリアにタグを入力すると、データが壊れてしまいました。 タグを入力できないようにする方法はありますでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • php 送信されたフォームについて

    送信されたフォームの受け取る側のソースを書いたのですが、 <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> を付け加えるとエラーが表示されます。エラーの対象になっているのは print('正解数'.$i./4'です');らしいのですが、なぜエラーになるのかわかりません 回答お願いします。 以下ソースです。 <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> </body> </html>

    • 締切済み
    • PHP
  • PHPのメールフォームから別ページに飛ばしたい

    困ってます。 PHPは初心者です。htmlは大丈夫です。 自分のステータスがこんななので、メールフォームは テンプレートを使ってました。 そのテンプレートはメール送信後、「送信ありがとうございました」の画面が 設定のされているPHPファイルに飛ぶというものです。 しかし、今後はトラフィックの計上のために、既存のトラフィックタグが埋め込まれている 自分のデザインHTMLファイルに飛ばしたいです。 PHPファイルにトラフィックタグを埋め込むとエラー画面、入力確認画面の表示の際にも トラフィックされてしまう為です。 PHPのファイルは下記のようなものになります。 http://shirasutaxi.watabi.com/lp2/config.txt http://shirasutaxi.watabi.com/lp2/confirm.txt http://shirasutaxi.watabi.com/lp2/sendmail.txt 要約すると、今まではconfirm.phpがサンキューページだったのですが、 それを既存のトラフィックタグが貼り付けられているhtmlファイルのサンキューページ に飛ばしたく思ってます。 よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう