0

テキスト付きの「div」タグとタイトル付きの「p」タグがあります。これらの要素を、ユーザーに属するデータベース内のタグを含むコンテンツとともに保存したいと考えています。

PHPとMySQLを使用して、「div」とそのコンテンツ、および「p」とそのタイトルを保存する最良の方法は何ですか?

これは、ユーザーのコメントをタイトルとともに保存する方法と非常によく似ています。

例:

HTML

<p name="myTitle">This is my title</p>

<div name="myContent">
    This is a paragraph This is a paragraph 
    This is a paragraph This is a paragraph
</div>

助けてください。

4

1 に答える 1

4

ステップ 1、データベースに接続し、使用している文字セットを指定します。

try {
    $db = new PDO('mysql:host=HOSTNAME', 'USERNAME', 'PASSWORD', array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    ));
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

ステップ 2、テーブルに挿入します。

$sql = 'INSERT INTO table_name(p_column, div_column) VALUES(:p, :div)';
try {
    $sh = $db->prepare($sql);
    $sh->execute(array(
        ':p' => $VARIABLE_CONTAINING_P,
        ':div' => $VARIABLE_CONTAINING_DIV,
    ));
} catch (PDOException $e) {
    echo 'Insert failed: ' . $e->getMessage();
}

これで、データベースに値を挿入する方法がわかりました。ここでは、明示的にエスケープされたものは何もないことに注意してください。2 つの理由があります。

  1. プリペアド ステートメントを作成し、実行時にパラメーターをバインドすることで、HTML 内の厄介な部分がSQL インジェクション攻撃を作成するのを自動的に防ぎます。
  2. HTML を保存しています。ここに保存している HTML をエンコードしたり、その他の方法で変更したりする必要はありません。HTMLです。HTMLとして表示されることを意図しているのに、なぜそれを破棄するのですか? ただし、それが安全なHTMLであることを意味するわけではありません。ユーザーが入力した HTML である場合、悪意がある可能性があります。HTML Purifierなどの HTML フィルターを使用して、明示的に必要なコンテンツのみを許可する必要があります。

うまくいけば、この曲がりくねった行き過ぎた答えが、あいまいで指定されていない質問の解決策に近づくでしょう. あなたが達成しようとしていることについてより詳細な情報を提供できれば ( The XY Problemを参照)、より有用な詳細を提供できるかもしれません。

于 2012-12-08T04:03:49.187 に答える