ホームページ  >  記事  >  バックエンド開発  >  PHPで値を取得した後にその値をフォーマットする方法

PHPで値を取得した後にその値をフォーマットする方法

WBOY
WBOYオリジナル
2016-06-13 12:18:511021ブラウズ

PHP で値を取得した後にその値をフォーマットする方法
データベースには 2 つのフィールドを持つテーブルがあります

id int (5)

content text

その後、フォームは次のようなものです

$content=$_POST['content'];<br />$sql="insert into dbname (`id`,``) values(null,'$content')":<br /><br /><br /><form action="" method="post"><br /><textarea name="content"><br /><br /></textarea><br /><br /></form>


問題は、このフォームに単一引用符、二重引用符、または !@#$$% などの類似した記号を多数記述すると、 、SQL を出力すると、挿入は失敗します。値を挿入するときに一重引用符を使用したため、競合が発生するはずです。送信された値にも一重引用符が含まれている場合、それは不明であるはずです。 >


-----解決策----------------------挿入する前にエスケープしてください
転送は一度だけ必要です
$content = mysql_escape_string($_POST['content']);
$sql = "insert into dbname (`id`,`content`) names(null,'$content') ":

参考: http://php.net/manual/zh/function.mysql-escape-string.php


-----ソリューションのアイデア-- --- ------------------答えは上の階で答えられています
ここで一般的な紹介をします:
Mysql_real_escape_string は主にデータベース用ですインジェクションの防止とステートメントの正確性 必要に応じて、読み取りステートメントと書き込みステートメントの文字が変換されます。
ただし、最終的にデータベースに書き込まれる内容は、エスケープされる前の内容のままです。エスケープ前の元の内容
たとえば、文字列 aaaa"aaaa をデータベースに挿入する場合、insert into table names("aaaa"aaaa"); とすると、ステートメントは間違っています。 mysql_real_escape_string を使用して aaaa"aaaa; にエスケープします。最終的に、ステートメントは insert into table names("aaaa"aaaa") になります。
ただし、selecting * from table によって得られる最終的な内容は、依然として aaaa"aaaa

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。