2017-02-17 3 views
0

私が間違っていることを理解できません - 入力をサニタイズする必要があります。私は一重引用符やアポストロフィを削除するために見つけることができるすべてを入れました。これは他の状況では機能しますが、ここでは機能しません。一重引用符またはアポストロフィがバックスラッシュに置き換えられた文字列を返します。 (?? !!)私のPHP str_replace関数が1つのPOSTフォームでのみ動作していません

機能は次のとおりです。

function sanitize($data) 
{ 

    return strtolower(str_replace(['’',';',"'",':',"'","’",''','"',' ','`','delete','update','drop','create'], '', htmlspecialchars($data))); 

} 

それでは、私は「ジョーのダイナー」と言う一つの形に提出した場合、私は「ジョーの\ sdiner」を取得返さ。私は "joesdiner"が必要です。

私は本当にプログラマーではないので、これが明らかであれば謝罪します。

編集:

多分それはページにありますか?

<form action="/test-breeding/" method="post"> 
First: <input type="text" name="first"> 
Second: <input type="text" name="second"> 
<input type="submit" name="submit" value="submit"/> 

</form> 
<br><br> 

<?php 

if(isset($_POST['submit'])) 
{ 
$first  = sanitize($_POST['first']);  
$second  = sanitize($_POST['second']); 
} 
+1

(https://3v4l.org/o1K3b) –

+0

しようとするメタ文字セットを追加します文書 '' – Cyclonecode

+0

あなたはSQLの挿入をサニタイズしようとしていますか?もしそうなら、これを行うより良い方法があります。準備されたステートメントについては、MySQLのマニュアルを参照してください:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php – garrettmurray

答えて

0

多分それは魔法の引用符で何か、このように、stripslashesを追加してください:[私の作品]

$first = sanitize(stripslashes($_POST['first'])); 
+0

ありがとうございます。私はそれをsanitize()の後に加えました。簡単な修正。しかし、私はすぐに準備された声明を使用することを約束します!みんなあなたの助けをありがとう。 – ngtess

関連する問題