• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Mod_rewrite преобразование когда переменная является массивом

  • Автор темы itwork
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

itwork

можно ли как с помощью mod_rewrite преобразовать
из cсылки
Код:
domain/index.php?cat[0]=a&cat[1]=b&cat[2]=c&cat[...]=...
вот в такую ЧПУ, когда индекс cat может быть неограничен
Код:
doamin/a/b/c/...
 
V

vital

Код:
RewriteEngine On
RewriteRule ^(.*)$ index.php [L,QSA]
PHP:
?php
/* Функция для очистки массива от пустых строк */
function Clear_array($array)
{
$c=sizeof($array);
$tmp_array=array();
for($i=0; $i<$c; $i++)
{
if (!(trim($array[$i])==""))
{
$tmp_array[]=$array[$i];
}
}
return $tmp_array;
}

$param=$_SERVER['REQUEST_URI'];
$params=explode("/",$param);
$params=Clear_array($params);
?>
И в результате выполнения скрипта мы получим все параметры, полученные при разбиении запроса. Например, запрос:



после обработки скриптом в массиве $params будет содержаться следующее:

Array
(
[0] => articles
[1] => category1
[2] => 12.htm
)

т.е. суть в том, что если колв-во параметров неограничено, то их надо обрабатывать самому скриптом.
 
I

itwork

вроде стало кабы понятно,
но появился другой вопрос, хотел проанализировать поледний слэш
т.е хотел написать, если у ссылки есть последний слэш то срабатывает 1-ое правило, иначе 2-е
Код:
RewriteRule ^(.*)[/]$ a.php?path=$1 [qsa]
RewriteRule ^(.+[^/])$ a.php?file=$1 [qsa]

но ни как не могу понять где ошибку допутил, если в ссылке есть последний сэш то срабатывают оба правила
 
V

vital

Просто как вариант.
А про слеш.. Так уберите его вообще из условия.
RewriteRule ^(.*)+[/]$ a.php?path=$1 [qsa]
RewriteRule ^(.*)$ a.php?file=$1 [qsa]
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!