2017-11-09 10 views
0

で同じことを表示します。挿入コードスニペットとどのようにデータベースに<strong>コードスニペット</strong>を挿入することができ、その後、<strong>テキストエリア内のその<strong>コード</strong>同一の</strong>私はそれを挿入したときに</strong><strong>を表示していましたtextarea

&のコードを比較すると、決して同じではありません。何らかの理由でそれを動作させることはできません。

$db = new sqlite3('test.db'); 
$r = $db->query("select * from test where id='1'"); 
$f = $r->fetchArray(); 

echo "<textarea rows='10' style='width:500px;'>$f[data]</textarea>"; 
$db->close(); 

これは私がどのように私はテキストエリア内の同一のデータを表示するために、正しくデータベースに挿入することができますか?

't apple \n\r 

♦ &diams; &#9830; black (solid) diamond suit 

<textarea></textarea> 
$£%^&*()[email protected]">RWH{{@£})"":?' 
<form>dfddf 
<input type="button"> 
</form> 

をテストしていたコードですか

+0

であるあなたは、出力をHTMLに挿入する前にデータをエンコードする必要があり、これはそうでないと壊れますいくつかの文字とXSSのセキュリティリスクです。 – eckes

+0

こんにちは、お返事ありがとうございました、どのようにエンコードするのですか?、それをデータベースに挿入する前に、どのようにデコードして同一にするのですか?質問のようにコードを実行したり変更したりすることなく、コードを挿入したときにそれを実現したいのです。 – Kire

+0

htmlentities() - http://php.net/manual/en/function.htmlentity.php – Airerr

答えて

0

データベースにコードを格納しないことを強く推奨しますが、セキュリティ上の欠陥がかなり深刻化する可能性がありますが、コードをデータベースに追加するときはhtmlentities()を使用できます。

これは完全に安全にするつもりはありませんが、少なくともタグをシンボルに変更することに注意してください。

にhtmlentities - これは、あなたのデータベースに結果を格納するために行われるために必要なものでしょう

HTMLエンティティに適用可能なすべての文字を変換します

$string = '<h1>This is a Heading 1</h1>'; 

あなたsqlを実行していますクエリには、文字列にhtmlentities関数を追加します。

htmlentities($string); 

あなたが表示されることを印刷する場合:

<h1>This is a Heading 1</h1> 

の代わりに:

をこれは、見出し1

+0

こんにちはSamuel、あなたが言っていることは、グーグルエンコードで見ると、** base64_encode * *データベースに渡す前に、** htmlentities(base64_decode($ f [data]))**を使用して表示します。 – Kire

+0

さまざまなリスクが懸念されています。データベースからデータを引き出すことは、通常危険ではありません。データベースにデータを格納するときに最大の問題が発生します。詳しくは、http://php.netを参照してください。 /manual/en/security.database.sql-injection.php – Samuel

+0

プリペアドステートメントを使用する場合、DBに書き込むデータをbase64エンコードする必要はありません。私は、DBにエンコードされていない、エスケープされていないデータを保存して、データをポータブルに保ちます。 – eckes

関連する問題

 関連する問題