Проверка пришедших в post данных

166
04 июля 2017, 23:48

Написал скрипт, есть необходимость проверить пришедший на него post запрос на наличие домена в блек листе. Т.е. создаю блек лист (к примеру, файл) с доменами: ya.ru,google.com и т.д.

В момент обработки скрипта, нужно выполнить проверку пришедшего в post - url, если домен в блек листе - вывести сообщение и не исполнять скрипт ниже, если домена нет в блек листе - выполнить весь скрипт (глобальный блек лист). Можно это осуществить?

И еще, день вожусь и не могу без ошибок сделать проверку на тег внутри <head>...</head>, т.е. в <head>...</head> есть тег noindex, нужно как и в первом варианте остановить обработку скрипта ниже и выполнить редирект на пришедший в post - url адрес, если noindex нет - выполнить весь скрипт. Кучу вариантов перепробовал, получается частями и ошибок куча.

Answer 1

Полный ответ не дам - сам не шарю.

script.php

<?php
$blackList = array(
    'ya.ru',
    'google.com',
);
if (isset($_POST['url'])) {
    // Очень упрощенный вариант
    $domain = kak_to_tam_vstroennoy_php_funkciey_poluchit_domen($_POST['url']);
    if (in_array($domain, $blackList)) {
        echo 'Сайт в черном списке';
        return;
    }
}
echo 'Скрипт выполняется дальше';

По второму, навена подойдет phpQuery. Довольно просто с запросом примерного вида html > head > meta[value="noindex"] для проверки такого тега на странице. Код не смогу предоставить.

Для самобытного варианта по усложненней переиничать $blackList в

$blackList = array(
    '#^https?\://ya\.ru#i',
    '#^https?\://google\.com#i'
);

и дальше вместо

if (in_array($domain, $blackList)) {
        echo 'Сайт в черном списке';
        return;
}

писать

$blackListed = false;
foreach($blackList as $item) {
    if (preg_match($item, $domain)) {
        $blackListed = true;
        break;
    }
}
if ($blackListed) {
        echo 'Сайт в черном списке';
        return;
}
READ ALSO
Не корректно выводится дата

Не корректно выводится дата

У меня нарисовалась мелкая, но неприятная помарка при выводе датыНа странице меток пункты списка должны выглядеть так:

204
Как изменить кодировку отчета об ошибке в PHP?

Как изменить кодировку отчета об ошибке в PHP?

При выполнении скрипта запроса

198
Чем отличается define() от const?

Чем отличается define() от const?

Объясните пожалуйста чем отличается строка

176