Вроде бы есть класс для работы с mrim на php, у меня нет сейчас времени смотреть, как конкретно отсылаются пакеты. Возможно, легче реализовать получение контакт-листа не через веб-агент (описание протокола есть тут: http://agent.mail.ru/ru/developers/protocol.html).
Например, можно тут (http://gibs0n.name/mainpage/view/article/Описание+протокола+Mail.Ru+агента) почитать
Все-таки сделал PHP: <?php $login='мыло'; $pass='пасс'; $pr='';$pp=''; //адрес прокси и порт, если надо $res=socket_do('win.mail.ru','/cgi-bin/loginagent','','GET','','',0,$pr,$pp); preg_match_all('/Set-Cookie: (.+);/iUs',$res,$cook); foreach($cook[1] as $ck) { $cookies[]=$ck; } $tmpcookie=implode('; ',array_unique($cookies)); $res=socket_do('koi.mail.ru','/cgi-bin/auth',"page=http%3A%2F%2Fwmrim.mail.ru%2Fwin%2Fcontactlist.html&FailPage=http%3A%2F%2Fwin.mail.ru%2Fcgi-bin%2Floginagent&post=&login_from=&Login=$login&Domain=$domain&Password=$pass&level=1&x=11&y=12",'POST',$tmpcookie,'http://win.mail.ru/cgi-bin/loginagent',0,$pr,$pp); preg_match_all('/Set-Cookie: (.+);/iUs',$res,$cook); foreach($cook[1] as $ck) { $cookies[]=$ck; } $cookies=implode('; ',array_unique($cookies)); preg_match("/Location: http:\/\/koi\.mail\.ru\/cgi\-bin\/checkcookie\?(.+)\r\n/iUs",$res,$m); if(!isset($m[1])) die("Ошибка при входе."); $res=socket_do('koi.mail.ru','/cgi-bin/checkcookie?'.$m[1],'','GET',$cookies,'http://win.mail.ru/cgi-bin/loginagent',0,$pr,$pp); preg_match("/Location: (.+)\r\n/iUs",$res,$m); if(!isset($m[1])) die("Ошибка при входе."); $tmp=explode('/',$m[1],4); $res=socket_do('wmrim.mail.ru','/'.$tmp[3],'','GET',$cookies,'http://win.mail.ru/cgi-bin/loginagent',0,$pr,$pp); $sock=@socket_create(AF_INET,SOCK_STREAM,SOL_TCP); if(!$sock) die("Ошибка при создании сокета."); if($pr) { @socket_connect($sock,$pr,$pp) or die("Ошибка при работе с сокетами."); $request = "POST http://wmrim.mail.ru/connect HTTP/1.0\r\n"; } else { $mip=@gethostbyname('wmrim.mail.ru'); @socket_connect($sock,$mip,"80") or die("Ошибка при работе с сокетами."); $request = "POST /connect HTTP/1.0\r\n"; } @socket_set_nonblock($sock) or die("Ошибка при работе с сокетами."); if(@socket_select($r = null, $w = array($sock), $f = null, 5)!=1) die("Ошибка при работе с сокетами."); $request.= "Host: wmrim.mail.ru\r\n"; $request.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n"; $request.= "Referer: {$m[1]}\r\n"; $request.= "Content-Type: application/xml\r\n"; $request.= "Content-Length: ".strlen('status=1')."\r\n"; $request.= "Connection: keep-alive\r\n"; $request.= "Keep-alive: 300\r\n"; $request.= "Cookie: $cookies\r\n"; $request.= "\r\n"; @socket_write($sock,$request.'status=1') or die("Ошибка при работе с сокетами."); if(@socket_select($r = array($sock), $w = null, $f = null, 5)!=1) die("Ошибка при работе с сокетами."); $ret=@socket_read($sock,1000) or die("Ошибка при работе с сокетами."); if(strpos($ret,"MRIM_CS_LOGIN_REJ, {reason:\"Invalid session\"}")!==false) { @socket_close($sock); die("Ошибка авторизации в mail-агенте."); } if(@socket_select($r = array($sock), $w = null, $f = null, 5)!=1) die("Ошибка при работе с сокетами."); $ret=@socket_read($sock,100000) or die("Ошибка при работе с сокетами."); print htmlspecialchars($ret); //вот отсюда брать контакт-лист @socket_close($sock); usleep($wt*1000); function socket_do($page,$suri,$data,$method,$cook,$ref,$close=0,$pr='',$pp=0) { if($pr) { $request="$method http://$page$suri HTTP/1.0\r\n"; $fp=fsockopen("tcp://".$pr,$pp,$errno,$errstr,30); } else { $request = "$method $suri HTTP/1.0\r\n"; $fp=fsockopen('tcp://'.$page,80,$errorNumber,$errorString,30); } if(!$fp) die("Ошибка при работе с сокетами."); @stream_set_timeout($fp,30); $request.= "Host: $page\r\n"; $request.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n"; if($ref) $request.= "Referer: $ref\r\n"; if($method=='POST') { $request.= "Content-Type: application/x-www-form-urlencoded\r\n"; $request.= "Content-Length: ".strlen($data)."\r\n"; } $request.= "Connection: close\r\n"; if($cook) $request.="Cookie: $cook\r\n"; $request.="\r\n"; $request.=$data; fputs($fp,$request); $res=""; while(!feof($fp)) { $res.=fgets($fp,128); if($close) break; } fclose($fp); return $res; } ?> Из того, что в конце получает скрипт, несложно получить и контакт-лист. PS. На денвере работать не будет.
У меня слишком много результатов вывода из Mysql Я хотел бы их по страницам разбить (выводы) Как это сделать?
PHP: <?php $min = 0; $max = 25; for ($i = 1; $i < 12; $i++) { for($j = $min; $j < $max; $j++) { $e .= "num: ".$j."\n"; } $min += $max; $max += $max; } echo $e."\n"; ?> В чем трабла, цыкл доходит до 99, и начинается с 175, в идеале должен дойти 299, прибавляя за итерацию 25.
Доброго времени суток. подскажите есть ли какая то фуркция для того чтоб перевернуть строку в пхп тоесть данная к примеру строка 1234567 а надо получить 7654321.
<html> <body> <?php $i = 1; if ($i == 1){ echo "Пыщь"; die(); } echo "Пыщь2222"; ?> <br> <br> <?php echo "ы"; ?> </body> </html> Собственно "ы" должно еще высветиться Но как сделать чтобы оно высветилось когда до него есть die() (в if'е) ? die() нельзя убирать
Зачем это делать? После die скрипт не выполняется в любом случае. Перед самым выходом неявно можно так, но это все равно не после die ) PHP: <?php class test { function __destruct() { print "ы"; } } $a=new test; die(); ?>
m0Hze так не идет... "Ы" должно после "пыщь2222" выводиться 159932 что мне тогда делать? в таблице у меня основной код а я хотел бы еще снизу поставить текст который вызывается из настроек (-> из php файла)
Возможно я не правильно вырозился, мне нужно чтоб за интерацию первого цыкла, второй цыкл проганял 25 интераций и так 12 раз. должно получится 1-299 по 25 за интерацию первого цыкла.
PHP: <?php $min = 0; $max = 25; $step = 25; for ($i = 0; $i < 12; $i++){ for($j = $min; $j < $max; $j++){ echo $j."\n"; } $min += $step; $max += $step; } ?>
Или покороче: PHP: <?php $max = 25; $step = 25; for ($i = 0; $i < 12; $i++,$min+=$step,$max+=$step){ for($j = $min; $j < $max; $j++){ echo "num: ".$j."\n"; } } ?>