私は小さなプロジェクトに取り組んでいて、脳死状態になったので、ここの誰かが私のコーダーブロックを打ち負かすのを手伝ってくれることを願っています.
ページに渡される値 (存在する場合) に応じてコンテンツ表示を変更する php を使用してページを作成しようとしています (Locations)。さまざまな場所を保存したセーフリスト配列を作成しました。まず、渡された値をセーフ リストと照合してチェックし、一致する場合は 1 セットのコンテンツを表示します。
一致しない場合は、類似性テストを実行して、単純なタイプミスがあり、人々が望んでいたと思われるページに移動できるかどうかを確認していますが、ここで行き詰まっています。
誰かが入力できることを願っています
www.example.co.uk/location.php <---- 一般的な場所のページを読み込む
www.example.co.uk/location.php?loc=Bishops-Stortford <---- ターゲット ロケーション ページを読み込む
www.example.co.uk/location.php?loc=Bishop-Stortford <---- 90% 以上の一致を提供するスペルミスにもかかわらず、対象の場所のページを読み込む
www.example.co.uk/location.php?loc=?php echo "あなたのサイトをハッキングしました"; ?> ---- 私のシステムが厄介なコード インジェクションを無効にしてくれることを願っています
私が持っているものを見ることができるように、以下にコードを投稿します。
<?php
$loc = "";
$safelist = array("Bishops Stortford", "Braintree", "Chelmsford", "Dunmow", "Harlow", "Hertford", "Saffron Walden", "Sawbridgeworth", "Stansted", "Ware",
"Essex", "Hertfordshire");
if(isset($_GET["loc"])) {
/* Gets the value of loc if set, replaces hyphens with spaces and capitalises first letters of words converting the rest to lowercase. */
$loc = ucwords(strtolower(str_replace("-", " ", $_GET["loc"])));
}
/* Is word in safelist */
if (in_array($loc, $safelist)) {
/* Yes */
if (($loc == "Essex") or ($loc == "Hertfordshire")) {
$county = True;
} else {
$county = False;
}
if ($county == False) {
echo "\"" . $loc . "\" is not a county";
}else{
echo "\"" . $loc . "\" is a county";
}
} else {
/* No, Is string 90% similar to any entry within the safelist? */
foreach ($safelist as $safeword) {
similar_text($safeword, $loc, $percent);
echo $safeword . " " . $loc . " " . $percent . "<br />";
if ($percent >= 90) {
}
}
?>
if ($percent >=90) に対して何をすべきかわかりません。ループを終了して、最初に見つけた 90% 以上の一致から結果を取得したいことはわかっていますが、これを行う方法が 100% 確実ではありません。
また、www.example.co.uk/location.php?loc=?php のようなコード インジェクションに対処する最善の方法は何ですか? echo "I hacked your site"; ?>