私は何時間もこの場所にいました。PHPで入力が有効でないことを確認しました
私はApache 2.0
ためXAMPP
、PHP 5.5
、Chrome
を使用して、私のエディタのNetbeans
を使用しています。
MYSQL
データベースを検索する前に、検証する入力テキストボックスがあります。私は入力を得るためにPOSTを使います。
私が使用している入力された "X/65 !!!" どのように
$searchtext = $_POST['searchbox'];
echo "<br />" . htmlspecialchars($searchtext);
echo "<br />htmlentitites: " . $searchtext;
echo "<br />strip slashes : " . stripslashes($searchtext);
echo "<br />internal encoding is: " . mb_internal_encoding();
と私の結果は次のとおりです。
for htmlspecialchars -> "x/65!!!"how to<b> //why isn't the <b> removed?
for htmlentities -> "x/65!!!"how to //shouldn't the forward slash be stripped out?
for stripslashes -> "x/65!!!"how to //shouldn't the '/' be stripped out?
for mb_internal_encoding-> ISO-8859-1 //My php.ini has UTF-8 as the default, I have meta content-type charset="UTF=8" and I though php 5.5 defaulted to UTF8
私はPHPのマニュアルからのコピーが、私よ彼らの結果は得られません。私はそれがcharset関連の疑いがありますが、私はもうどこを見るか分からない。
****コメント********
ジェフ、
I changed the spelling of entities and used this string: <b>"'This \!'": /I
これは私がはhtmlspecialcharsを得るものです: " 'これ!'":/ I とはいすべてが大胆です。私の出力のすべてが大胆であると私は$ _POST [「検索ボックスを」]エコーとき、私は
the escape chars showing: ""<>
のいずれかの
おかしい事は、しかしですされません。それは大胆にもかかわらず現れます。
私のmb_internal_encoding()はページの始めにメタ文をUTF-8に設定していますが、PHPではセミコロンを削除してデフォルトのUTF-8を作成しましたが、mb_internal_encoding()はISO-8859-1です。
PHPインタープリタが壊れていると思っています。彼らの最近のバージョンが何であるかを見るにはXAMPPを見なければならないでしょう。
正確な質問は何ですか?質問が「これを安全にクエリに入れる方法」である場合、答えは準備することによって、または例えば、 [mysqli_real_escape_string](http://php.net/mysqli_real_escape_string)。 – Rick
あなたは実際にこの行に 'htmlentities'関数を使用していないことに注意してください。' echo "
htmlentitites:"。 $ searchtext; 'あなたはechoステートメントでそれを間違って記述しました。 –