За последние 24 часа нас посетили 63163 программиста и 1742 робота. Сейчас ищут 1092 программиста ...

cUrl: реализовать http авторизацию

Тема в разделе "Прочие вопросы по PHP", создана пользователем tolyan.com, 3 янв 2007.

  1. tolyan.com

    tolyan.com Активный пользователь

    С нами с:
    3 янв 2007
    Сообщения:
    3
    Симпатии:
    0
    Добрый день!

    Полдня шерстю гугля по поводу http авторизации с использованием cUrl

    на страничке http://file.raid.ru//tmp/ есть
    форма авторизации
    <form enctype="multipart/form-data" action="http://file.raid.ru/tmp/" method="POST">

    Вот что сваял, но оно не работает =(

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "http://file.raid.ru/tmp/");
    curl_setopt($ch, CURLOPT_REFERER, "http://file.raid.ru//tmp/");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER,0); //Не выводить заголовки
    curl_setopt($ch, CURLOPT_NOBODY,0); //Выводить получаемый Content
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_USERPWD, "charlie.walker@bk.ru:196032320");

    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.5))");

    $params = "email=charlie.walker@bk.ru& =196032320";
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    //curl_setopt($ch, CURLOPT_HTTPAUTH, 1);

    $my_load_page = curl_exec($ch);
    curl_close($ch);

    echo $my_load_page;


    Единственное, что вызывает смутное сомненье, это имя поля пароля. На форме оно имеет имя

    <input name=" " type="password" value="" size="14" maxlength="11" style="height:16px; width:150px;"/>

    имя здесь - это знак табуляции. Оно же прописано в моем скрипте.

    Но в любом случае результат работы скрипта - это то, что лежит на http://file.raid.ru//tmp/ то есть авторизация не проходит.

    В целом задача такая: нужно авторизоваться, и затем аплоадить файл пхп скриптом. За ранее очень благодарен за помощь.

    PS: логин и пароль в скрипте - рабочие, на тот случай, если вдруг у кого что путевого получится...
     
  2. Anonymous

    Anonymous Guest

    не знаю, как у вас, а у меня видно
     
  3. Mavir

    Mavir Guest

    Нужно делать за два захода - сначала посылается логин и пароль и узнаются куки. Потом используя эти куки делаем то, что надо.
    Это не правильное применение логина и пароля. Эта опция используется для HTTP-аутентификация.
     
  4. tolyan.com

    tolyan.com Активный пользователь

    С нами с:
    3 янв 2007
    Сообщения:
    3
    Симпатии:
    0
    Действительно. Но к сожалению это не помогло. Да и пробовал я input name = password, не помогло. Видимо потом в текстовом файле при прсмотре кода страницы блокнотом случайно изменил это дело...

    ... и без нее тоже пробовал. Она тут потому, что когда ничего не работает, то хороши все средства ;) Убрал эту строку - так же не помогло.
     
  5. Mavir

    Mavir Guest

    А когда при простуде аспирин не помогает Вы пьете пурген? Он помогает избавиться от кашля - просто будете бояться кашлянуть.
     
  6. Anonymous

    Anonymous Guest

    Ну, так можно на время забыть о простуде... ;)
     
  7. Anonymous

    Anonymous Guest

  8. tolyan.com

    tolyan.com Активный пользователь

    С нами с:
    3 янв 2007
    Сообщения:
    3
    Симпатии:
    0
    Не, ну смех смехом конечно, но то, что использовано неверно - убрал.

    Спасибо, прочел, только не понял, какие параметры cUrl надо выставить/заюзать, чтобы решить требуемую задачу.

    Вот, немного еще поправил скриптик, но отца Советской демократии это не спасло ;(

    PHP:
    1. <?php
    2.     $ch = curl_init();
    3.    
    4.     curl_setopt($ch, CURLOPT_URL, "http://file.raid.ru//tmp/index.php");
    5.     curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
    6.     curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
    7.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    8.     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    9.     curl_setopt($ch, CURLOPT_VERBOSE, 1);
    10.    
    11.     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.5))");
    12.    
    13.     $my_load_page = curl_exec($ch);
    14.    
    15.     echo $my_load_page;
    16.    
    17.     curl_setopt($ch, CURLOPT_URL, "http://file.raid.ru//tmp/files.php");
    18.     curl_setopt($ch, CURLOPT_REFERER, "http://file.raid.ru//tmp/index.php?f=");
    19.     curl_setopt($ch, CURLOPT_POST,  1);
    20.    
    21.     $params = "email=charlie.walker@bk.ru&password=196032320";
    22.     curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    23.    
    24.     $my_load_page = curl_exec($ch);
    25.     curl_close($ch);
    26.    
    27.     echo $my_load_page;
    28. ?>