Подскажите по curl_setopt():

SF
На сайте с 07.09.2004
Offline
167
SAF
683

Программист попросил исправить ошибку в настройках сервера:

(PHP)

curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set

Сисадмин говорит, что это создаст угрозу безопасности.

Кто прав?

C
На сайте с 26.10.2013
Offline
54
#1

Сисадмин прав

Я создал функцию _curl($url), где выполняю примерно следующее

function _curl($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$html = curl_exec($ch);
// Поймаем редирект
$response = curl_getinfo($ch);
if ($response['http_code'] == 301 || $response['http_code'] == 302) {
if ($headers = get_headers($response['url'])) {
foreach($headers as $value) {
if (substr(strtolower($value), 0, 9) == "location:")
return _curl(trim(substr( $value, 9, strlen($value))));
}
}
}
curl_close($ch);
return $html;
}

То есть, если в заголовках мы видим редирект 301/302, то ловим урл, куда нас отправляют и рекурсивно запускаем себя еще раз по новому урлу

Услуги по парсингу данных (/ru/forum/939826), единоразовый и регулярный сбор данных. Любые объемы. Скрипты на PHP, создание и доработка, решение проблем с сайтами Пишите в личные сообщения или скайп
pupseg
На сайте с 14.05.2010
Offline
364
#2

сисадмин прав.

это очередной программист, который не хочет приседать.

Качественная помощь в обслуживании серверов. (/ru/forum/661100) Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы (http://linux.org.ru) и полезные сайты (http://www.opennet.ru/).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий