Есть такой код для фильтрации URL. Но при каждом вводе данных срабатывает последный вариант.Подскажите ошибку. Заранне спасибо.
trait CheckEngine
{
public function checkUrl($data)
{
$string = array(
"home" , "about" , "freetemplate" , "contact" , "?" ,
"auto" , "beauty" , "cleaning" , "education" , "auto",
"cat", "=" , "$");
foreach ($string as $key)
{
if ($data = strpos($key, $data))
{
if ($data === false)
{
unset($data);
}
else
{
return $data;
}
}
}
}
}
class TemplateController
{
use CheckEngine;
public function actionIndex()
{
require_once("view/free-template.php");
return true;
}
public function actionCategory()
{
if (isset($_GET["cat"]))
{
$cat = $this->checkUrl($_GET["cat"]);
switch ($cat)
{
case 'auto':
print("auto");
break;
case 'beauty':
print("beauty");
break;
case 'cleaning':
print("cleaning");
break;
case 'education':
print("education");
break;
case 'other':
print("other");
break;
default:
print("something");
break;
}
}
require_once("view/free-template.php");
return true;
}
}
$template = new TemplateController();
$template->actionIndex();
$template->actionCategory();
Срабатывает только
default:
print("something");
break;
В документации по функции strpos сказано:
обратите внимание на то, что позиция строки отсчитывается от 0, а не от 1
Исходя из этого можно сделать вывод, что в блок if ($data = strpos($key, $data))
метод никогда не входит, даже если соответствие было найдено strpos
возвращает 0
, который в операторе if
приводится к false
.
Вследствие этого checkUrl
ничего не возвращает и $cat = $this->checkUrl($_GET["cat"]);
равно null
.
Поэтому switch
и попадает в блок default
.
public function checkUrl($data)
{
$data = trim($data);
$data = strip_tags($data);
$data = stripcslashes($data);
$data = htmlspecialchars($data);
$stri = array(0,1,2,3,4,5,6,7,8,9,"+","-","(",")","[","]","|","^",";",".","@");
$repl = array("","","","","","","","","","","","","","","","","","","","","");
$data = str_replace($stri, $repl, $data);
return $data;
}
strpos
поменял на str_replace
думаю что не взломают
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Название моего файла indexphp, мне надо сделать index
Я только что начал изучать Yii2 и сразу столкнулся с недопониманием того, как выводить результат запроса к базе во viewСоздал таблицу post и пытаюсь...
У нас в проекте установлен композер и подключен autoload по psr-4