6

Web サイトにテキストボックスがあり、ユーザーが入力したものをすべてデータベースに保存し、後で取得する必要があります。特殊文字、改行などを含め、ユーザーが入力したとおりに正確に保存する必要があります。

これをデータベース フィールド (「テキスト」フィールド) に格納するには、PHP でどのプロセスを使用する必要がありますか? PHP の html_encode などを使用する必要がありますか?

ありがとうございました。

編集:タブと複数のスペースなど、正しいフォーマットも保存する必要があります。

4

5 に答える 5

5

mysql_real_escape_string()を使用します:

$safetext = mysql_real_escape_string($_POST['text']);
$query = "INSERT INTO my_table (`my_field`) VALUES ('$safetext')";
mysql_query($query);

それはうまくいくはずです。

于 2009-04-04T06:52:43.943 に答える
4

データをデータ ストレージに書き込むときに、データを html エンコードしないでください。そうすれば、データを他の目的 (電子メール、PDF ドキュメントなど) にも使用できます。Assafが既に述べたように、入力をエスケープするか、パラメーター化された挿入クエリを使用して、SQL インジェクションを回避することが必須です。

いいえ、そうではありませんが、HTML ページにデータを表示するときは、データを html エンコードする必要があります。これにより、データ内に存在する HTML タグがブラウザーによって HTML タグとして認識されなくなるため、危険な HTML または Javascript コードが役に立たなくなります。

ユーザーが内部に HTML タグを含むデータを投稿できるようにする場合、プロセスはもう少し複雑になります。次に、必要に応じて任意の複雑な入力サニタイズを優先して、出力エンコーディングをスキップする必要があります(許可されたタグなど)。

于 2009-04-04T07:02:03.907 に答える
3

mysql に保存するためにエンコードする必要はありません

SQL インジェクションを回避するために、必ずパラメーター化された挿入コマンドを使用してください。

于 2009-04-04T06:48:33.783 に答える
3

以下が機能するはずです。

if (get_magic_quotes_gpc()) {
  $content = stripslashes($content);
}
$content = mysql_real_escape_string($content);

列が utf8 の場合、特殊文字に問題はありません。コンテンツを正しくフォーマットしたら、標準の挿入メソッドを使用して mysql にフィードできます。

于 2009-04-04T06:50:58.067 に答える
1

フォーマットに加えてユーザーテキストを正しく保存するには、を使用してすべての改行を改行に変換するだけですnl2br($inputtext)。入力をフィルタリングした後にこれを行います。

于 2010-04-01T15:36:02.137 に答える