Не могу аторизуватися на сайте clubtone.net, окно авторизации вызывается js. Адрес форми авторизации выглядит так: http://clubtone.net/index/40?_tp_=xml&_wi=4 Оснифив что данные отправляются на: http://clubtone.net/index/sub/ но не авторизует, я з курл работаю первий раз, так что возможно есть неточности, подскажите пожалуйста что не так, или куда копать. Вот код: PHP: $user = 'user'; $pass = 'pass'; // Страница реестрции $login_page = 'http://clubtone.net/index/sub/'; // POST запрос $post = 'user='.$user.'&password='.$pass.'&rem=1&a=2&ajax=2&_tp_=xml'; function post_content($url, $postdata) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_ENCODING, ""); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_REFERER, 'http://clubtone.net/index/40?_tp_=xml&_wi=4'); curl_setopt($ch, CURLOPT_COOKIEJAR, "/var/www/music/cookie.txt"); curl_setopt($ch, CURLOPT_COOKIEFILE,"/var/www/music/cookie.txt"); return curl_exec( $ch ); curl_close( $ch ); } $res = post_content ($login_page, $post); //echo $res; ~Код обработчика на сайте: Code: sendFrm555=function(){ $('#msgL555').html('<div class="myWinLoadS"></div>'); _uPostForm('frmLg555',{type:'POST',url:'/index/sub/',error:function(){ _uButtonEn('frmLg555',1); $('#msgL555').html('<div class="myWinLoadSF" title="Невозможно выполнить запрос, попробуйте позже"></div>'); _uWnd.alert('<div class="myWinError">Невозможно выполнить запрос, попробуйте позже</div>','',{w:250,h:90,tm:3000,pad:'15px'}); } }); }
Попробуй с кукисы выдрать из хедера! curl_setopt($ch, CURLOPT_HEADER, 1); На реферера можешь наложить он и так работает. Я бы сделал что-то типа PHP: curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); ....... $content = curl_exec( $ch ); ну и дальше pregmatch
Шото нихрина у меня не получається Вот куки: Code: [0] => 8clubtoneuCoz=; path=/; expires=Sat, 15-Aug-2009 06:39:33 GMT; domain=.clubtone.net; [1] => 8clubtoneuzll=1313390373; path=/; expires=Tue, 14-Aug-2012 06:39:33 GMT; domain=.clubtone.net; [2] => ucvid=ezzPO1Vra7; domain=clubtone.net; path=/; expires=Tue, 14-Aug-2012 06:39:33 GMT Формат правильний?? Сам код: PHP: <?php $user = 'user'; $pass = 'pass'; // Страница реестрции $login_page = 'http://clubtone.net/index/40?_tp_=xml&_wi=4'; $page = 'http://clubtone.net/'; // POST запрос $post = 'user='.$user.'&password='.$pass.'&rem=1&a=2&ajax=2&_tp_=xml'; function get_cookie($url) { $curl = curl_init($url); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_REFERER, 'http://clubtone.net/'); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $data = curl_exec($curl); // Добиваем куки $header = substr($data, 0, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); preg_match_all('#Set-Cookie:(.*);*\s*#i', $header, $cookie); $str_cookie = ''; foreach($cookie[1] as $value) { $str_cookie .= $value; } return $str_cookie; curl_close($curl); } function post_content($url, $postdata, $cookie=null) { $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($curl, CURLOPT_REFERER, 'http://clubtone.net/'); curl_setopt($curl, CURLOPT_TIMEOUT, 120); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); curl_setopt($curl, CURLOPT_COOKIE, $cookie); //curl_setopt($curl, CURLOPT_COOKIEFILE,"/var/www/music/coo.txt"); //curl_setopt($curl, CURLOPT_COOKIEJAR, "/var/www/music/coo.txt"); return curl_exec($curl); curl_close($curl); } $res = post_content($login_page, $post, get_cookie('http://clubtone.net')); echo '<pre>'; print_r($res); echo '</pre>'; ?> етот код видает: 400 Bad Request если закрментировать строчку с куками: //curl_setopt($curl, CURLOPT_COOKIE, $cookie); То загружает страницу без ошибки. curl_setopt($curl, CURLOPT_COOKIEFILE,"/var/www/music/coo.txt"); curl_setopt($curl, CURLOPT_COOKIEJAR, "/var/www/music/coo.txt"); Не работает для первого запроса?? Чуствую що подход реализации не правильни, я как в туманє, даже толком не ясно куда слать денние. Извиняюсь за свой русский, постарайтесь не обращать на ошибки внимание
держи , студент PHP: <?php set_time_limit(0); function curl($url,$post) { $cfile = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt'; $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 WebMoney Advisor"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_REFERER, 'http://clubtone.net/index/1'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cfile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cfile); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); $result = curl_exec($ch); return $result; } $login ='';//сюда свой логин пихай $pass ='';// ну а здесь- незабудь пароль всобачить $result = curl("http://clubtone.net/index/1",'user='.$login.'&password='.$pass.'&rem=1&a=2&ajax=1&rnd=673&_tp_=xml'); //echo $result; $result = iconv( "UTF-8", "windows-1251",$result); echo $result; ?>
у меня работает P.S. Надеюсь ты заполнил строчки $login и $pass ???? Авторизацию скрипт проходит, без проверки я бы его сюда не выложил
Канешна ввожу, но авторизации нет, просто перебрасивает на страницу. Когда пользиватель авторизирован то пункти меню - "регистрация", "вход" должни изчезнуть. Исчо що странно когда я просматриваю заголовки через firebug, httpfox, которие шльот скрипт к сайту нету POST-запроса, ета нормально?? Пробивал исчо так: PHP: function curl_c00ki($url='http://clubtone.net/') { $cfile = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt'; $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 WebMoney Advisor"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_REFERER, 'http://clubtone.net/'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cfile); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_exec($ch); } curl_c00ki(); function curl($url,$post) { $cfile = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt'; $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 WebMoney Advisor"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_REFERER, 'http://clubtone.net/index/1'); curl_setopt($ch, CURLOPT_COOKIEFILE, $cfile); curl_setopt($ch, CURLOPT_COOKIEJAR, $cfile); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); $result = curl_exec($ch); return $result; } $login =''; $pass =''; $result = curl("http://clubtone.net/index/1", 'user='.$login.'&password='.$pass.'&rem=1&a=2&ajax=1&rnd=673&_tp_=xml'); echo $result; Достать первой функцией(curl_c00ki) cookie и передать в вторую функцию(через файл) там уже прочитать и после авторизации записать новие, но тоже не помогло.
проверьте кто нибудь мой скрипт, у кого денвер под рукой , логин a1111122222 пароль 2222222222 , мож я идиот , и отпишите плиз результат у меня все нормально работает в самом верху пишет "Привет, a1111122222 Группа "Пользователи"" у тебя косяк не со скриптом а с денвером, либо хостингом, либо невалидный логин и пасс P.s. права файлу выставил? создается ли у тебя текстовик с куками? Где проверяеш скрипт на денвере или хостинге, если на хосте то на каком, поддерживает ли он курл, если неа денвере то подготовил ли ты денвер для работы с curl, какие ошибки пишет при попытке запуска скрипта? вобщем вариантов куча- единственное что могу сказать- косяк не в скрипте P.S.S убери свою функцию куки- это лишнее- используй мой скрипт- как он есть (куки там принимаются и отдаются- скрипт создает текстовик с куками)
Дествительно гуд, у меня линукс и авторизиции нет. curl - стоит текстовик з куками создает права тож гуд Щас на хостинг заллю, попробую
>>>P.S.S убери свою функцию куки- это лишнее- используй мой скрипт- как он есть (куки там принимаются и отдаются- скрипт создает текстовик с куками) Так и делаю, пробую именно Ваш скрипт, авторизации нет
возьми пожалуйста любой скрипт из рубрики "полезные скрипты" который содержит CURL авторизацию, загрузи себе на денвер или хостинг, и проверь- работает ли он у тебя? Фришные хостинги в основной своей массе CURL не поддерживают, и еще- какие ошибки у тебя пишет? P.s. сегодня наверное уже все- завтра будем разбираться что за шайтан поселился у тебя в компе
разобрался я с твоей проблеммой- форум в строчку выполнения curl всобачил лишний пробел, вроде его убрал- скопировал себе на дедик- вроде работает (копируй как есть скрипт и проверяй)
Извеняюсь що долго не отписувал, целей день на стройка вкаливал. Как ни странно не работает, проверел ищо друг у нево тоже линукс и тоже нет авторезации. CURL у себя переуставил, результату не дало. Пробувал ищо вчера скрипт на двох безплатних хостингах, не авторизировало, правда результат невзя считать актуальним, поскольку там запрещино CURLOPT_FOLLOWLOCATION. Ну и исчо раз спасибо Kusto и остальним учасникам теми за помощь.
Скорее всего не по делу, так как ТСу, наверно, принципиально сделать это через curl, но я больше люблю сокеты: PHP: <?php $login = ""; $password = ""; $fp = fsockopen('clubtone.net', 80, $errno, $errstr); if (!$fp) { echo "$errstr ($errno)<br>\n"; } else { $postdata = "user=".$login."&password=".$password."&rem=1&a=2&ajax=1&rnd=673&_tp_=xml"; $out = "POST /index/sub/ HTTP/1.1\r\n"; $out .= "Host: clubtone.net\r\n"; $out .= "Content-Length: ".strlen($postdata)."\r\n"; $out .= "Referer: http://clubtone.net/index/1\r\n"; $out .= "Cache-Control: max-age=0\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out .= "Accept: application/xml, text/xml, */*; q=0.01\r\n"; $out .= "User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n"; $out .= "Accept-Encoding: gzip, deflate\r\n"; $out .= "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n"; $out .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\r\n"; $out .= "X-Requested-With: XMLHttpRequest\r\n"; $out .= "Content-Transfer-Encoding: binary\r\n"; $out .= "Cookie: income=1\r\n"; $out .= "Connection: close\r\n\r\n"; $out .= $postdata; fwrite($fp, $out); $page = ''; while (!feof($fp)) { $page .= fgets($fp, 128); } fclose($fp); preg_match_all("#(Set-Cookie: )(.*?;)#", $page, $cookie); $cookie = implode(" ", $cookie[2]); } $fp = fsockopen('clubtone.net', 80, $errno, $errstr); if (!$fp) { echo "$errstr ($errno)<br>\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: clubtone.net\r\n"; $out .= "User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n"; $out .= "Cookie: ".$cookie."\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $get = ""; while (!feof($fp)) { $get .= fgets($fp); } fclose($fp); echo $get; } ?>
Skofield, обошол проблему с флангу , авторезация пройдена. Спасибо Если розберусь що там за проблема била з CURL то обизательно отпишусь.