Web-based proxy ч.2

Первая часть доступна по ссылке

В прошлой части указано, что webproxy не умел обрабатывать формы. Теперь умеет 🙂

Алгоритм довольно простой:

  1. Находим форму.
  2. Смотрим ее атрибут «type».
  3. В форму добавляем скрытое поле, где сохраняет исходный type формы.
  4. Меняем type на post.
  5. Во view.php делаем обработку post-запросов.

Про последний пункт подробнее.

if ($_POST) {
    $url = $pf->post_page($url);
    if ($_POST) {
        $page = $pf->get_page($url, $_POST);
    }
    else {
        header('Location: view.php?url='.url::encode($url->assembly()));
        die();
    }
}
else {
    $page = $pf->get_page($url);
}

Смотрим, не пустой ли пришел $_POST (то есть, была ли заполнена какая-то форма). Если в нем ничего нет, то идет обычная обработка страницы. А вот если в нем что-то есть, то выполняет $pf->post_page($url). Если исходный type формы был get, то после выполнения post_page массив $_POST будет очищен. Потому и выполняется вторая проверка if ($_POST).

$page = $pf->get_page($url, $_POST);

Если в метод get_page передается второй параметр (массив), то выполняется post-запрос к указанному $url.

P.S.

Берем какой-нибудь голландский шелл, ставим проксю туда и смотрим то, что может попасть в «мы приносим свои извинения но доступ к запрашиваемому ресурсу ограничен».

, ,

Оставить комментарий

Top ↑ | Main page | Back