私が間違っていることを理解できません - 入力をサニタイズする必要があります。私は一重引用符やアポストロフィを削除するために見つけることができるすべてを入れました。これは他の状況では機能しますが、ここでは機能しません。一重引用符またはアポストロフィがバックスラッシュに置き換えられた文字列を返します。 (?? !!)私の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']);
}
(https://3v4l.org/o1K3b) –
しようとするメタ文字セットを追加します文書 '' – Cyclonecode
あなたはSQLの挿入をサニタイズしようとしていますか?もしそうなら、これを行うより良い方法があります。準備されたステートメントについては、MySQLのマニュアルを参照してください:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php – garrettmurray