CURL - USERAGENT

Тема в разделе "PHP", создана пользователем bikuri, 25 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Ребята, такой вопрос:

    в чем бок не пойму...
    если задавать юзерагент явно:

    curl_setopt($ch,CURLOPT_USERAGENT,'Какой-то User-Agent');

    все работает прекрасно...

    если задвать юзерагент переменной:
    curl_setopt($ch,CURLOPT_USERAGENT,$useragent);
    curl_setopt($ch,CURLOPT_USERAGENT,'$useragent');

    - жопа...

    ошибок не выдаёт, но коннекта не происходит. Проверял по ТДСке.

    Хелп! Где туплю?:bc:
     
  2. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    735
    Симпатии:
    423
    Так баловаться нельзя:
    есть определенный синтаксис!!!

    Этот код точно работает:
    PHP:
    $url 'http://www.mysite.ru';
    $user_agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"

    $ch curl_init();
    curl_setopt ($chCURLOPT_URL$url);
    curl_setopt ($chCURLOPT_USERAGENT$user_agent);
    curl_setopt ($chCURLOPT_HEADER0);
    curl_setopt ($chCURLOPT_RETURNTRANSFER1);
    $result curl_exec ($ch);
    curl_close ($ch);
    для вывода ошибок используйте
    PHP:
    error_reporting(7);
     
  3. BЕNNY

    BЕNNY Постоялец

    Регистр.:
    17 окт 2009
    Сообщения:
    73
    Симпатии:
    3
    Рекомендую любые скрипты писать с максимальным уровнем вывода ошибок:
    Код:
    error_reporting(E_ALL);
    // или
    error_reporting(7); 
    
    Что до данного примера, то мне тоже кажется, что дело в синтаксисе. Как указывается параметр функции - в виде констант или переменных здесь не играет роли.
     
  4. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    За ответ спасибо...
    Но, у меня юзерагент выбираеться рандомно функцией... че делать?
    кстати error_reporting(E_ALL);
    error_reporting(7);
    ничего не выводит
     
  5. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    735
    Симпатии:
    423
    проверить массив $user_agent на валидность и невалидные заменить или выкинуть вообще!
     
  6. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    Перед строкой

    PHP:
    curl_setopt($ch,CURLOPT_USERAGENT,$useragent);
    поставь

    PHP:
    echo "Debug UA: {$useragent}";
    Сразу все будет понятно.
     
  7. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Прошу прощения, может вопрос ломаковидный... но, на валидность, имеется ввиду на правильность агентов? Если да, то абракадабра вполне работает...
    или я чего-то не понял?

    я уточню:

    скрипт работает если явно указать в курле: curl_setopt($ch,CURLOPT_USERAGENT, 'Useragent');

    скрипт работает если указать явно переменную:
    $uagent='Useragent';
    curl_setopt($ch,CURLOPT_USERAGENT, $user_agent);

    скрипт НЕ работает если переменная приходит из функции:
    $uagent=GET_UAGENT();
    curl_setopt($ch,CURLOPT_USERAGENT, $uagent);

    PS:
    Ошибок не выдает, но переход не выполняеться... сам в акуе, но ничего не понимаю

    echo "Debug UA: {$useragent}"; не спасает, ехом уже выводил, все показывает нормально, но не коннектится
     
  8. BЕNNY

    BЕNNY Постоялец

    Регистр.:
    17 окт 2009
    Сообщения:
    73
    Симпатии:
    3
    Выложи, пожалуйста, код функции GET_UAGENT()
     
  9. bikuri

    bikuri Создатель

    Регистр.:
    18 май 2009
    Сообщения:
    36
    Симпатии:
    0
    Вот:
    PHP:
    function ua_gen()
    {
    mt_srand(time());
    $ual=file('agent.txt');
    $uac=count($ual);
    $cua=mt_rand(0,$uac);
    return 
    $ual[$cua];
     }

    PS:
    На мой взгляд, самое странное то, что результат функции - Рандомный юзерагент, но курлом, не кушаеться переменная, которой присваиваю результат функции...
     
  10. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    735
    Симпатии:
    423
    У вас происходит чтение из файла. А строку не проверяете (пробелы, конец строки и т.д.)! Синтакис нужно соблюдать!
     
    bikuri нравится это.
Статус темы:
Закрыта.