Повторюсь. Прошу помощи по как исправить ошибку авторизации вконтакте? заранее спасибо.. PHP: <?php class Vkontakte{ public $cookies; //Конструктор класса //Для начала работы с контактом необходимо авторизоваться function __construct($login,$pass){ //Проверяем наличие установленной библиотеки курл if(!function_exists('curl_init')){ die("Для работы необходимо установить lib_curl"); } //Устанавливаем язык интерфейса $remixlang='0'; //Отправляем логин и пароль $url = 'http://login.vk.com/?act=login'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_USERAGENT,"Opera/9.20 (Windows NT 5.1; U; ru)"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "email=".$login."&pass=".$pass."&expire=&vk="); curl_setopt($ch, CURLOPT_REFERER, "http://vkontakte.com/index.php"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); ////////////////////////////////////////// //Получаем необходимый результат $result = curl_exec($ch); $str = new MyStr(); //Вырезаем кукис $cookies = $str->StGetCookiesFromHeader($result,";"); //?act=login после получения логина и пароля отдает страницу с формой, //которая содержит сессию в скрытом поле, и редиректит на login.php. Он устанавливает //Куку remixsid. Вырежем куку $pattern = "#name='s'.*value='(.*)'#U"; preg_match($pattern,$result,$arr); $remixsid = @$arr[1]; //И таскать будем все куки в переменной cookies $this->cookies .=$cookies."remixsid=".$remixsid.";remixlang=".$remixlang; } function CheckAuth(){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://vkontakte.ru/profile.php"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIE,$this->cookies); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_USERAGENT,"Opera/9.20 (Windows NT 5.1; U; ru)"); $result = curl_exec($ch); if(substr_count($result,"Моя Страница")>0){ return $result; }else{ return $result; } } function ViewGroupPage($url){ global $cookies; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIE,$this->cookies); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $result = curl_exec($ch); $patern = "#Обсуждения\: <span>\((.*)\)<\/span>#i"; if(preg_match($patern,$result,$arr)){ echo "В этой группе <b>".$arr[1]."</b> тем обсуждений<br>"; }else{ echo "В данной группе нет обсуждений, либо вы не можете их просматривать"; die(); } } function ParseDialogs($url,$msg_count,$offset = "",$timeout=0){ //echo $url; //echo $cookies; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIE,$this->cookies); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $result = curl_exec($ch); $pattern_topic_title = '#id="topic_title">(.*)<\/a>#U'; preg_match($pattern_topic_title,$result,$arr_topic_title); $out['topic_title'] = $arr_topic_title[1]; $patern = '#<a href="topic-.*?offset=(.*)" onclick="return getPage\((.*)\)">»<\/a>#i'; preg_match($patern,$result,$arr); //echo "Всего сообщений <b>".$arr[2]."</b><br>"; $last_page = $offset/20; for($i=0;$i<=$last_page;$i++){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url."?offset=".$i*20); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIE,$this->cookies); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $result = curl_exec($ch); $patern_post = '#<div class="postMessage" id=".*" style=".*">(.*)<\/div>#U'; preg_match_all($patern_post,$result,$arr_post); $patern_ts = '#<span class="postAuthor"><a href="(.*)">(.*)<\/a><\/span>#i'; preg_match_all($patern_ts,$result,$arr_ts); $patern_image_url = '#<a href="id[0-9]+"> <img src="(.*)" alt=""\/> </a>#i'; $patern_timestamp = '#<span class="timestamp">(.*)<\/span>#i'; preg_match_all($patern_timestamp,$result,$arr_timestamp); preg_match_all($patern_image_url,$result,$arr_image_url); //print_r($arr[1]); $out['timestamp'][$i] = $arr_timestamp[1]; $out['posts'][$i] = $arr_post[1]; $out['author_nickname'][$i] = $arr_ts[2]; $out['author_id'][$i] = $arr_ts[1]; $out['image_url'][$i] = $arr_image_url[1]; if($timeout){ sleep($timeout); } } return $out; /*else{ }*/ } function VkSendPostFields($url,$post_fields,$refer = 'http://vkontakte.com/index.php'){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_USERAGENT,"Opera/9.20 (Windows NT 5.1; U; ru)"); curl_setopt($ch, CURLOPT_COOKIE,$this->cookies); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); $result = curl_exec($ch); return $result; } function GetThemes($url,$themes_count){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIE,$this->cookies); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $result = curl_exec($ch); $pattern = '#<a href=".*\/board([0-9]*)">(.*)<\/a>#U'; preg_match($pattern,$result,$arr); $board_link = 'http://vkontakte.ru/board'.$arr[1]; $group_id = $arr[1]; //$themes_count = intval($arr[2]); $loop_count = floatval($themes_count/50); if($loop_count%50>0){ $loop_count= intval($loop_count)+1; } for($i=0;$i<$loop_count;$i++){ $offset = $i*50; $post_fields ='offset='.$offset.'&order=0'; $url = 'http://vkontakte.ru/board.php?act=a_get_topics_page&gid='.$group_id; $result = $this->VkSendPostFields($url,$post_fields); //<h3 class=\"topicTitle\"><a href=\"topic-1622_11811924\">Nokia N76<\/a> $pattern = '#<h3.*><a href=[\\\]"(.*)[\\\]">(.*)<[\\\]\/h3>#U'; preg_match_all($pattern,$result,$arr); $out[] = $arr[1]; } for($i=0;$i<count($out);$i++){ for($a=0;$a<count($out[$i]);$a++){ $newout[]=$out[$i][$a]; } } return $newout; } } ?> причем по всей видимости ошибка в авторизации. ранее работало. после коммента// //Отправляем логин и пароль
PHP: $title = 'Востановления пароля пользователю для сайта Site.ru!'; $header ="Content-type: text/plain; charset=\"utf-8\""; $header.="From: [email protected]"; $header.="Subject: $title"; $header ="Content-type: text/plain; charset=\"utf-8\""; $letter = 'Вы запросили восстановление пароля для аккаунта на сайте Site.ru \r\nВаш новый пароль: '.$roo.' уважением админестрация сайта Site.ru'; if (mail($err, $title, $letter ,$header)) { echo "Пароль отправлен"; } else { echo "Пароль не отправлен, такова емейла не существует или вы ошиблись при вводе"; } } } не пишет в письме от кого и тему письма, почему?
PHP: $title = 'Востановления пароля пользователю для сайта Site.ru!'; $header ="Content-type: text/plain; charset=\"utf-8\""; $header.="From: [email protected]"; $header.="Subject: $title"; $header .="Content-type: text/plain; charset=\"utf-8\""; $letter = 'Вы запросили восстановление пароля для аккаунта на сайте Site.ru \r\nВаш новый пароль: '.$roo.' уважением админестрация сайта Site.ru'; if (mail($err, $title, $letter ,$header)) { echo "Пароль отправлен"; } else { echo "Пароль не отправлен, такова емейла не существует или вы ошиблись при вводе"; } } } ты забыл в последнем $header добавить точку и потому все что ты раньше прописывал - заменялось на последнюю строчку.
$headers = 'From: [email protected]' . "\r\n" . 'Reply-To: [email protected]' . "\r\n"; Вот правильная постановка запроса
Подскажите, где ошибка: PHP: if(isset($_POST['butsubmit'])){ include("conf.php"); $new_arr = array(); $text = explode("\n", $_POST['urls']); for($i=0; $i<count($text); $i++){ array_push($new_arr, $text[$i]); } for($i2=0; $i2 < count($new_arr); $i2++){ $result = mysql_query("SELECT * FROM `base` WHERE `url`='".$new_arr[$i2]."'"); $num_result = mysql_num_rows($result); if($num_result!=0){ for ($i3 = 0; $i3 < $num_result; $i3++) { $row = mysql_fetch_array($result); $res.='<tr><td>'.($i3+1).'</td> <td>'.$new_arr[$i2].'</td> <td>'.$row["url"].'</td> <td><a href="../channel.php?ch='.$row["id"].'" target="_blank">'.$row["channel"].'</a></td></tr>'; } } if($num_result==0){ $res2.=$new_arr[$i2]."\n"; } } } почему то 1 раз находит в базе и всё. если забить 10 одинаковых строк, которые есть в базе, то $res показывает всё равно 1 строку, последнюю Помогите разобраться что к чему. Парсил массив $new_arr - там всё ок, разбивает по переносу строки. В цикле всё ок, авот с запросом что тоне то, как будто он один раз посылает запрос и всё HELP!!!!!!!!!!!! $
mff в коде много ненужного + sql инъекция. Скорее всего ошибка тут: $text = explode("\n", $_POST['urls']); Возможно перенос строки у вас в виде \r\n. Следовательно все кроме последней строки будут с лишним символом
извините, что влезаю, но хотелось бы спросить: у вас с кодировкой utf-8 все нормально показывает? если да то извиняюсь, если проблемы все еще есть попробуйте вот так: изменена кодировка + пара незначительных поправок PHP: $title = "Тема письма"; $header ="Content-type: text/html; charset=windows-1251 \r\n"; $header.="From: [email protected]" . "\r\n"; $letter ='Вы запросили восстановление пароля для аккаунта на сайте Site.ru<br> Ваш новый пароль: '.$roo.' с уважением администрация сайта Site.ru'; if (mail($err, $title, $letter ,$header)) { echo "Пароль отправлен"; } else { echo "Пароль не отправлен, такова емейла не существует или вы ошиблись при вводе"; }
Moriarty, в вашем примере темы письма серовно нету, Ifrit, в вашем примере кодировеа превращяется в непонятные символы
а что у вас за почтовый клиент? в моем случае заголовок выходит? что именно в непонятной кодировке? Заголовок? Текст? или и то и другое?
и то и другое. я на майле.ру Moriarty, всё проверил, всё правильно PHP: $header ="Content-type: text/plain; charset=\"utf-8\"" . "\r\n"; $header.="From: [email protected]" . "\r\n"; $letter = 'Вы запросили восстановление пароля для аккаунта на сайте Site.ru Ваш новый пароль: '.$roo.' уважением админестрация сайта Site.ru'; $title = 'Тема письма'; if (mail($err,$title , $letter ,$header)) { echo "Пароль отправлен"; } else { echo "Пароль не отправлен, такого емейла не существует или вы ошиблись при вводе"; }
а вот так? PHP: $title = "Тема письма"; $header ="Content-type: text/html; charset=utf-8 \r\n"; $header.="From: [email protected]" . "\r\n"; $letter ='Вы запросили восстановление пароля для аккаунта на сайте Site.ru<br> Ваш новый пароль: '.$roo.' с уважением администрация сайта Site.ru'; $title= '=?koi8-r?B?'.base64_encode(convert_cyr_string($title, "w","k")).'?='; if (mail($err, $title, $letter ,$header)) { echo "Пароль отправлен"; } else { echo "Пароль не отправлен, такого емейла не существует или вы ошиблись при вводе"; } начинается перебор всех вариантов =)
Добрый вечер. Задача: надо получить данные из подгружаемой ajax'ом страницы. Если более конкретно,то надо получить данные из "http://vkontakte.ru/groups.php?act=people&gid=***#section=3" понятно что обычное не подойдёт -получим базовую страницу. Как я понимаю надо загрузить базовую страницу и отправить серверу необходимость подгрузить #section=3, тем самым получить необходимые данные. вопрос как это реализовать с помощью php? зы. ни где толковой информации об этом пока не нашёл.