質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

10572閲覧

POSTで受け取ったデータをHTMLとして表示させたい

Takuma_Tanaka

総合スコア128

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/07/29 07:44

###前提・実現したいこと
HTMLファイルのformメソッドを使用して別ページに入力した値をPOSTし、受け取った値をHTMLソースとして表示させたいです。

例)
test.htmlにformメソッドを定義して、test_o.phpに反映させる。
<b>test</b>をPOSTした時に、test_o.phpでtestの太文字が表示される。

###発生している問題・エラーメッセージ
echoを使えば表示できるのは分かるのですが、HTMLソースに変換して表示させる方法が分かりません。

###該当のソースコード
test.html

<form action="../test_o.php" method="post"> <textarea name="TEST" rows="4" cols="40">ここにソースを入力してください</textarea> <br> <input type="submit" value="送信"><input type="reset" value="リセット"> </form>

test_o.php

<?php $test = htmlspecialchars($_POST['TEST']); echo $test; ?>

###試したこと
PHP・HTMLとも知識が少なく、HTML側でformを使って送る時にHTMLソースとして送る方法があるのか、テキストとして受け取ったデータをPHPでHTMLソースに変換する方法があるのかも分からない状態です。
どちらの方法を調べてみても参考になる情報を見つけられませんでした。

非常に初歩的な質問かもしれませんが、参考になるURLの記載だけでも結構ですので、ご教示よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

じつは、$_POSTにはHTMLタグがそのままで来ていて、htmlspecialcharsでエスケープしているので、そのままechoすればタグもそのまま出ます。

ローカルで動かす試験程度ならそれでいいのですが、実用システムに組み込む場合には、XSSを防ぐ必要があります。「HTMLタグを自由に書ける」となると、当然<script>も書けてしまうので、意図しないJavaSciptを動かされてしまいます。ということで、ユーザーから書式付きテキストを受け取る場合、

  • 信頼できるライブラリで、受け入れるタグ・属性を限定してそれ以外のものをすべて取り除く。
  • Markdownなど、HTMLより自由度の低い形式で受け取る。
  • 管理側など、信頼できるユーザーだけが登録できるようにする。

など、何らかの対策が必要になります。

投稿2016/07/29 07:58

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takuma_Tanaka

2016/07/29 08:03

ご回答ありがとうございます。 解説までして頂いて勉強になりました。 セキュリティについては 実際にはID・PASSを入力してログインする管理画面にtest.htmlのようなページを設置して、公開画面にtest_o.phpのようなページを設置するので、大丈夫だと思います。 色々とご考慮頂いてありがとうございます。
mpyw

2016/07/29 11:57 編集

↑なぜこれで安全と判断できるのか少し疑問です… パスワードの管理とかも大丈夫ですかね?もし平文で記録していたらその時点でアウトですし,https:// ではない通信であれば「本サイトの通信には暗号化は使用されませんので,重要なパスワードは本サイトに使わないでください」という明記はあったほうがいいと思います.
guest

0

たんにhtmlspecialchars()をつけるかつけないかの話?

PHP

1<form method="post"> 2<textarea name="test" rows="4" cols="40"> 3<div style="background-color:red;">hoge</div> 4</textarea> 5<input type="submit" value="go"> 6</form> 7 8<?PHP 9$test=filter_input(INPUT_POST,"test"); 10print $test; 11print htmlspecialchars($test); 12?>

投稿2016/07/29 07:51

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takuma_Tanaka

2016/07/29 07:54

はい。 その通りでした。 勉強不足と調査力不足で恥ずかしいです。 ご回答ありがとうございました。
guest

0

自己解決

すみません。
質問してすぐに思いつきました・・・
htmlspecialcharsを使用すると<>などを文字列とみなしてしまうのですね。

<?php echo $_POST['TEST']; ?>

これだけで良かったんですね。
お騒がせしました。

投稿2016/07/29 07:53

Takuma_Tanaka

総合スコア128

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問