2011-01-08 15 views
0

こんにちはみんな、 は、PHPのドキュメントを見て周りにグーグル、しかし喜びはありません。これは私のコードスニペットですが、htmlspecialcharsはうまくいきません。htmlspecialcharsが間違って使用されていますか?

$query="SELECT * FROM likes"; 
$result=mysql_query($query); 

$num=mysql_numrows($result); 
$liked=htmlspecialchars($liked, ENT_QUOTES); 
$liked=$_POST['liked']; 

$query = "INSERT INTO likes VALUES ('','$name','$liked')"; 

おかげでみんな、 ジェームズ

答えて

4

あなたはすぐに、次の行に$_POST['liked']で上書きされます。 2つの行を切り替えます。それとも、単に直接関数にPOSTのVARを渡す:

$liked=htmlspecialchars($_POST['liked'], ENT_QUOTES); 

はとにかくあなたのSQLクエリのparamsをエスケープするmysql_real_escape_string()を使用する必要があります。 HTMLエスケープは、データを表示しようとしているときにのみ保存します。

+0

BoltClockさん、ありがとうございました! :)あなたが気にしないなら、mysql注射をエスケープするために何を追加すればよいですか? (PHPとMySQLで本当に新しい)!ありがとうございました – DexCurl

+0

またはSQLインジェクション攻撃からあなたを守る、パラメータ化されたクエリを使用してください。 – cdhowie

+0

@James Whelton: 'mysql_real_escape_string()'関数を渡して各値をエスケープする(mysql_real_escape_string()は、接続にいくつかの文字セットを使用すると脆弱です。 。 SQLクエリを作成する前にこれを行います。 – BoltClock

関連する問題