Редактирование профайла Livejournal. Не отправляется POST - запрос Авторизация удается, но дальше при редактировании профиля форма не отсылается. Пробовал заполнять поля и строкой и массивом. PHP: <?php $curl = curl_init(); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4"); curl_setopt($curl, CURLOPT_URL, 'http://www.livejournal.com/login.bml'); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, 'user=0captain_memo&password=201826'); curl_setopt($curl, CURLOPT_REFERER, 'http://www.livejournal.com'); curl_setopt($curl, CURLOPT_COOKIEJAR, "./cook1"); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); $data = array('name' => '0captain_memo', 'gender' => 'M', 'month' => '6', 'day' => '02', 'year' => '1988', 'opt_sharebday' => 'A', 'opt_showbday' => 'D', 'opt_showschools' => 'F', 'interests' => 'music', 'bio' => '', 'url' => 'http://google.com', 'urlname' => 'google.com', 'opt_showlocation' => 'Y', 'Widget%5BLocation%5D_country' => 'RU', 'Widget%5BLocation%5D_statedrop' => '58', 'Widget%5BLocation%5D_stateother' => '', 'Widget%5BLocation%5D_city' => '', 'Widget%5BLocation%5D_minimal_display' => '0', 'allow_contactshow' => 'Y', 'opt_whatemailshow' => 'N', 'LJ__Setting__FindByEmail_opt_findbyemail' => 'H', 'LJ__Setting__UserMessaging_opt_usermsg' => 'Y', 'opt_showonlinestatus' => 'F', 'aolim' => '', 'icq' =>'' , 'yahoo' => '', 'msn' => '', 'jabber' => '' , 'google_talk' => '', 'skype' => '', 'gizmo' =>'' , 'last_fm_user' => '', 'txtmsg_security' => 'N', 'txtmsg_provider' => '', 'txtmsg_number' => '', 'opt_hidefriendofs' => 'on', 'opt_disable_vgifts' => 'none', 'lj_form_auth => '.$lj_form_auth[1]); $data2 = 'lj_form_auth='.$lj_form_auth[1].'&name=cap007&gender=M&month=6&day=02&year=1978&opt_sharebday=A&opt_showbday=D&opt_showschools=F&interests=music&bio=&url=http://google.com&urlname=google.com&opt_showlocation=Y&Widget%5BLocation%5D_country=RU&Widget%5BLocation%5D_statedrop=58&Widget%5BLocation%5D_stateother=&Widget%5BLocation%5D_city=&Widget%5BLocation%5D_minimal_display=0&allow_contactshow=Y&opt_whatemailshow=N&LJ__Setting__FindByEmail_opt_findbyemail=H&LJ__Setting__UserMessaging_opt_usermsg=Y&opt_showonlinestatus=F&aolim=&icq=&yahoo=&msn=&jabber=&google_talk=&skype=&gizmo=&last_fm_user=&txtmsg_security=N&txtmsg_provider=&txtmsg_number=&opt_hidefriendofs=on&opt_disable_vgifts=none'; curl_setopt($curl, CURLOPT_REFERER, 'http://www.livejournal.com/'); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_URL, 'http://www.livejournal.com/manage/profile'); $result= curl_exec($curl); echo $result; curl_close ($curl); ?> Помогите найти ошибку
Возвращается страница редактирования профиля под моим логином и все! Ни сообщения об ошибке в заполнении формы, ни соотв сообщения об успехе - просто форма с полями. Но в жж эту страницу может видеть только уже авторизированный юзер, так што типа половину пути правильно прошли
Держи полностью готовая функция авторизации: PHP: function login( $login, $password ) { $result = post( 'http://www.livejournal.com/login.bml', null, 'http://www.livejournal.com/' ); preg_match( '#th" value="(.*?)"#i', $result, $lj_form_auth ); preg_match( '#l\' value=\'(.*?)\'#i', $result, $chal ); $result = post( 'http://www.livejournal.com/login.bml?ret=1', 'lj_form_auth=' . urlencode( $lj_form_auth[1] ) . '&chal=' . urlencode( $chal[1] ) . '&response=' . MD5( $chal[1] . MD5( $password ) ) . '&user=' . $login . '&password=' . $password . '&remember_me=1&action%3Alogin=%D0%92%D1%85%D0%BE%D0%B4+%D0%B2+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83...', 'http://www.livejournal.com/login.bml' ); if ( preg_match( '#logout(.*?)form#i', $result ) ) { return true; } else { return false; } } 1/ $post - пиши в строку; 2/ urlencode( $lj_form_auth[1] ); 3/urlencode( $chal[1] ); и т.д. Странно, если это весь код, то как он у тебя вообще авторизуется? Там параметры для авторизации формируются ява скриптом в начале страницы(Я намучился когда писал цикл для "добавления друзей")
Спасибо, но зачем так сложно? Авторизироваться вполне можно и так: PHP: <?php $curl = curl_init(); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4"); curl_setopt($curl, CURLOPT_URL, 'http://www.livejournal.com/login.bml'); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, 'user=0captain_memo&password=201826'); curl_setopt($curl, CURLOPT_REFERER, 'http://www.livejournal.com'); curl_setopt($curl, CURLOPT_COOKIEJAR, "./cook1"); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result= curl_exec($curl); echo $result; curl_close ($curl); ?> Вопрос то в другом: как дальше пройти на страницу http://www.livejournal.com/manage/profile и отредактировать профиль ?
Так тебе и дали готовую функцию. В дальнейшем там любое действие требует получения этих параметров. Меняй урлы в этой функции под свои нужды. Это $lj_form_auth- нужно везде. Я сначала тоже не мог ничего изменить... Какой размер кода получится в итоге? Авторизация->Переход->Получение параметров->Отправка->....
В той функции тебе надо было подгружать куки с авторизации. curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file); curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);