1

私はクライアントのために取り組んでいる cms を持っています。彼はコード テキストボックスを追加して、ページごとにページの特別なコードを貼り付けることができるようにしたいと考えています。そのため、ユーザーが編集中のページに JavaScript タグを入力できるようにする必要があります。そのページが読み込まれると、Java コードが表示されて実行されます。

たとえば、Facebook コード - このコード テキストエリアに貼り付けられ、mysql データベースに保存されます。

注 - サイトはまだ mysql_query を使用しており、変換されていません。クライアントは通知されましたが、更新に関心がないため、mysql_query で実行された例が必要です。

 <script type="text/javascript">(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
    fjs.parentNode.insertBefore(js, fjs);
 }(document, 'script', 'facebook-jssdk'));</script>

JavaScriptを壊さずにこれをデータベースに安全に保存するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

1

使用しないでくださいmysql_real_escape_string

これは正しい方向への一歩ですが、完璧ではありませんパラメータ化されたクエリを使用する必要があります

例えば...

$stmt = $dbh->prepare("INSERT INTO snippets (url, snippet) VALUES (:url, :snippet)");
$stmt->bindParam(':url', $url);
$stmt->bindParam(':snippet', $snippet);

// insert one row
$url = '/path/to/page';

$snippet = "<script type=\"text/javascript\">/*Your Javascript goes here*/</script>";
// OR
$snippet = $_REQUEST['Snippet'];

$stmt->execute();
于 2013-04-25T22:22:20.770 に答える
1

使用mysql_real_escape_stringすると、クエリを台無しにする文字をエスケープできるはずです。

$jsData = $_POST['jsData'];
"Insert into yourTable (someColumn) VAlUES('" . mysql_real_escape_string($jsData) . "')";

@Basic と少しおしゃべりした後、mysqliまたはpdoに切り替えること強くお勧めします。これらの 2 つのクラスは、データベースをクエリするためのより安全な方法を提供し、場合によってはさらに高速になるからです。そうする方法。

于 2013-04-25T22:17:10.460 に答える