PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (4): [1] 2 3 4 »

> Найдено сообщений: 53
ASHOOT-x86 Отправлено: 06 Сентября, 2008 - 00:13:48 • Тема: PHP + ICQ • Форум: Программирование на PHP

Ответов: 3
Просмотров: 426
Всем привет! Скачал я клас для работы с icq и решил написать простого бота, который бы сам пробывал еще и еще раз подключаться к icq. Вот код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include 'icq.php';
  3. $icq = new BasICQ();
  4. $uin = "9871923";
  5. $pass = "--ПАРОЛЬ--";
  6. if (@$icq->connect($uin, $pass))
  7. {
  8.         sleep(5);
  9. }
  10. while(TRUE)
  11. {
  12.         if (!$icq->is_connected())
  13.         {
  14.                 if (@$icq->connect($uin, $pass))
  15.                 {
  16.                         sleep(5);
  17.                 }
  18.         }
  19.         flush();
  20. }
  21. ?>
Все бы ничего, бот пашет если запустить скрипт при наличии или отсутствии подключения к интернету. Бот висит,тоесть работает как мне хотелось бы. Но если не закрывать программу и выполнить переподключение к инету, то бот заново не пробует подключиться, так как метод is_connected() продолжает возващать true (даже при отсутствии подключения к интернету). Что делать? Может в классе какая-то ошибка или я что-то не понимаю? // Заранее благодарен за помощь!
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class BasICQ {
  3. function BasICQ() {
  4. $this->method=false;
  5. $this->sequence=rand(1,30000);
  6. }
  7. function sockets($method) {
  8. $this->method=$method;
  9. }
  10. function connect($uin,$pass) {
  11. if ($this->method) {
  12. $this->socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
  13. if ($this->socket<0||$this->socket===false) return false;
  14. $result=socket_connect($this->socket,"login.icq.com",80);
  15. if ($result<0||$result===false) return false;
  16. } else {
  17. $this->socket=fsockopen("login.icq.com",80,$errno);
  18. if ($errno!==0) return false;
  19. }
  20. $this->getpacket();
  21. $this->uin=$uin;
  22. $this->body.=$this->setoption('UIN',$uin);
  23. $ar=array(0xF3,0x26,0x81,0xC4,0x39,0x86,0xDB,0x92,0x71,0xA3,0xB9,0xE6,0x53,0x7A,0x95,0x7c);
  24. $hash="";
  25. for ($i=0;$i<strlen($pass);$i++) $hash.=chr($ar[$i]^ord($pass[$i]));
  26. $this->body.=$this->setoption('DATA',$hash);
  27. $this->body.=$this->setoption('CLIENT','HFICQ');
  28. $this->body.=$this->setoption('CLIENT_ID',266,2);
  29. $this->body.=$this->setoption('CLI_MAJOR_VER',20,2);
  30. $this->body.=$this->setoption('CLI_MINOR_VER',34,2);
  31. $this->body.=$this->setoption('CLI_LESSER_VER',0,2);
  32. $this->body.=$this->setoption('CLI_BUILD_NUMBER',2321,2);
  33. $this->body.=$this->setoption('DISTRIB_NUMBER',1085,4);
  34. $this->body.=$this->setoption('CLIENT_LNG','ru');
  35. $this->body.=$this->setoption('CLIENT_COUNTRY','ru');
  36. $this->channel=1;
  37. $pack=$this->prepare();
  38. if ($this->method) socket_write($this->socket,$pack,strlen($pack)); else fwrite($this->socket,$pack);
  39. $this->getpacket();
  40. $this->info=array();
  41. while($this->body!='') {
  42. $arr=unpack('n2',substr($this->body,0,4));
  43. $this->type=$arr[1];
  44. $this->size=$arr[2];
  45. $info=substr($this->body,4,$this->size);
  46. $key=array_search($this->type,$this->types);
  47. if($key) $this->info[$key]=$info;
  48. $this->body=substr($this->body,($this->size+4));
  49. }
  50. $this->body=0x0000;
  51. $pack=$this->prepare();
  52. if ($this->method) socket_write($this->socket,$pack,strlen($pack)); else fwrite($this->socket,$pack);
  53. if ($this->method) socket_close($this->socket); else fclose($this->socket);
  54. $this->socket=false;
  55. if (isset($this->info['RECONECT_HERE'])) {
  56. $url=explode(':',$this->info['RECONECT_HERE']);
  57. if ($this->method) {
  58. $this->socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
  59. if ($this->socket<0||$this->socket===false) $res=false;
  60. $result=socket_connect($this->socket,$url[0],$url[1]);
  61. if ($result<0||$result===false) $res=false; else $res=true;
  62. } else {
  63. $this->socket=fsockopen($url[0],$url[1],$errno);
  64. if ($errno!==0) $res=false; else $res=true;
  65. }
  66. if (!$res) {
  67. $this->error=isset($this->info['DISCONECT_REASON'])?$this->info['DISCONECT_REASON']:'Невозможно сменить север';
  68. return false;
  69. }
  70. } else {
  71. $this->error=isset($this->info['DISCONECT_REASON'])?$this->info['DISCONECT_REASON']:'Превышен лимит подключений';
  72. return false;
  73. }
  74. $this->getpacket();
  75. $this->body.=$this->setoption('COOKIE',$this->info['COOKIE']);
  76. $pack=$this->prepare();
  77. if ($this->method) $wr=socket_write($this->socket,$pack,strlen($pack)); else $wr=fwrite($this->socket,$pack);
  78. if (!$wr) {
  79. $this->error='Соединение закрыто';
  80. return false;
  81. }
  82. $this->getpacket();
  83. $this->request_id++;
  84. $this->body=pack('nnnN',1,2,0,$this->request_id);
  85. $this->body.=pack('n*',1,3,272,650);
  86. $this->body.=pack('n*',2,1,272,650);
  87. $this->body.=pack('n*',3,1,272,650);
  88. $this->body.=pack('n*',21,1,272,650);
  89. $this->body.=pack('n*',4,1,272,650);
  90. $this->body.=pack('n*',6,1,272,650);
  91. $this->body.=pack('n*',9,1,272,650);
  92. $this->body.=pack('n*',10,1,272,650);
  93. $pack=$this->prepare();
  94. if ($this->method) $wr=socket_write($this->socket,$pack,strlen($pack)); else $wr=fwrite($this->socket,$pack);
  95. if (!$wr) {
  96. $this->error='Соединение закрыто';
  97. return false;
  98. }
  99. return true;
  100. }
  101. function is_connected() {
  102. if ($this->socket) return true; else return false;
  103. }
  104. function send_message($uin,$message) {
  105. $this->request_id++;
  106. $cookie=microtime();
  107. $this->body=pack('nnnNdnca*',4,6,0,$this->request_id,$cookie,2,strlen($uin),$uin);
  108. $capabilities=pack('H*','094613494C7F11D18222444553540000');
  109. $data=pack('nd',0,$cookie).$capabilities;
  110. $data.=pack('nnn',10,2,1);
  111. $data.=pack('nn', 15, 0);
  112. $data.=pack('nnvvddnVn',10001,strlen($message)+62,27,8,0,0,0,3,$this->request_id);
  113. $data.=pack('nndnn',14,$this->request_id,0,0,0);
  114. $data.=pack('ncvnva*',1,0,0,1,(strlen($message)+1),$message);
  115. $data.=pack('H*', '0000000000FFFFFF00');
  116. $this->body.=$this->setoption('RECONECT_HERE',$data);
  117. $this->body.=$this->setoption('CLIENT','');
  118. $pack=$this->prepare();
  119. if ($this->method) $wr=socket_write($this->socket,$pack,strlen($pack)); else $wr=fwrite($this->socket,$pack);
  120. if (!$wr) {
  121. $this->error='Не могу отправить сообщение, сервер закрыл соединение';
  122. return false;
  123. }
  124. if (!$this->makeinfo()) {
  125. $this->request_id++;
  126. $cookie=microtime();
  127. $this->body=pack('nnnNdnca*',4,6,0,$this->request_id,$cookie,1,strlen($uin),$uin);
  128. $data=pack('ccnc',5,1,1,1);
  129. $data.=pack('ccnnna*',1,1,strlen($message)+4,3,0,$message);
  130. $this->body.=$this->setoption('DATA', $data);
  131. $this->body.=$this->setoption('CLIENT','');
  132. $this->body.=$this->setoption('COOKIE','');
  133. $pack=$this->prepare();
  134. if ($this->method) $wr=socket_write($this->socket,$pack,strlen($pack)); else $wr=fwrite($this->socket,$pack);
  135. if (!$wr) {
  136. $this->error='Соединение закрыто';
  137. return false;
  138. }
  139. $this->makeinfo();
  140. return false;
  141. }
  142. return true;
  143. }
  144. function read_message() {
  145. while($this->getpacket()) {
  146. $body=$this->body;
  147. if (strlen($body)) {
  148. $msg=unpack('nfamily/nsubtype/nflags/Nrequestid/N2msgid/nchannel/cnamesize',$body);
  149. if ($msg['family']==4&&$msg['subtype']==7) {
  150. $body=substr($body,21);
  151. $from=substr($body,0,$msg['namesize']);
  152. $channel=$msg['channel'];
  153. $body=substr($body,$msg['namesize']);
  154. $msg=unpack('nwarnlevel/nTLVnumber',$body);
  155. $body=substr($body,4);
  156. for ($i=0;$i<=$msg['TLVnumber'];$i++) {
  157. $arr=unpack('n2',substr($body,0,4));
  158. $this->type=$arr[1];
  159. $this->size=$arr[2];
  160. $part=substr($body,4,$this->size);
  161. $body=substr($body,4+$this->size);
  162. if ($channel==1&&$this->type==2) {
  163. while (strlen($part)) {
  164. $frg=unpack('cid/cversion/nsize',substr($part,0,4));
  165. $frg['data']=substr($part,4,$frg['size']);
  166. if ($frg['id']==1&&$frg['version']==1) {
  167. return array('from'=>$from,'text'=>substr($frg['data'],4));
  168. }
  169. $part=substr($part,4+$frg['size']);
  170. }
  171. $message=false;
  172. }
  173. }
  174. }
  175. } else $message=false;
  176. }
  177. return false;
  178. }
  179. function disconnect() {
  180. if ($this->method) socket_close($this->socket); else fclose($this->socket);
  181. $this->socket=false;
  182. }
  183. var $types=array('UIN'=>1,'DATA'=>2,'CLIENT'=>3,'ERROR_URL'=>4,'RECONECT_HERE'=>5,'COOKIE'=>6,'SNAC_VERSION'=>7,'ERROR_SUBCODE'=>8,'DISCONECT_REASON'=>9,'RECONECT_HOST'=>10,'URL'=>11,'DEBUG_DATA'=>12,'SERVICE'=>13,'CLIENT_COUNTRY'=>14,'CLIENT_LNG'=>15,'SCRIPT'=>16,'USER_EMAIL'=>17,'OLD_PASSWORD'=>18,'REG_STATUS'=>19,'DISTRIB_NUMBER'=>20,'PERSONAL_TEXT'=>21,'CLIENT_ID'=>22,'CLI_MAJOR_VER'=>23,'CLI_MINOR_VER'=>24,'CLI_LESSER_VER'=>25,'CLI_BUILD_NUMBER'=>26);
  184. var $socet,$channel,$sequence,$body,$uin,$type,$size,$error;
  185. function getpacket() {
  186. if ($this->method) {
  187. if($this->socket&&!socket_last_error($this->socket)) {
  188. $header=socket_read($this->socket, 6);
  189. if ($header) {
  190. $header=unpack('c2channel/n2size',$header);
  191. $this->channel=$header['channel2'];
  192. $this->body=socket_read($this->socket,$header['size2']);
  193. return true;
  194. } else return false;
  195. }
  196. } else {
  197. if($this->socket) {
  198. $header=fread($this->socket,6);
  199. if ($header) {
  200. $header=unpack('c2channel/n2size',$header);
  201. $this->channel=$header['channel2'];
  202. $this->body=fread($this->socket,$header['size2']);
  203. return true;
  204. } else return false;
  205. }
  206. }
  207. }
  208. function makeinfo() {
  209. $this->getpacket();
  210. $array=unpack('n3int/Nint',$this->body);
  211. while ($array['int']!=$this->request_id) {
  212. $this->getpacket();
  213. $array=unpack('n3int/Nint',$this->body);
  214. }
  215. $this->error='Неизвестный ответ сервера';
  216. if ($array['int1']==4) {
  217. switch ($array['int2']) {
  218. case 1:  $this->error='Error to sent message'; return false; break;
  219. case 12: return true; break;
  220. }
  221. }
  222. $this->error='Неизвестный ответ сервера';
  223. return false;
  224. }
  225. function setoption($type,$val,$len=false) {
  226. switch ($len) {
  227. case 1: $format='c'; break;
  228. case 2: $format='n'; break;
  229. case 4: $format='N'; break;
  230. default: $format='a*'; break;
  231. }
  232. if ($len===false) $len=strlen($val);
  233. return pack('nn'.$format,$this->types[$type],$len,$val);
  234. }
  235. function prepare() {
  236. $this->sequence++;
  237. $out=pack('ccnn',0x2A,$this->channel,$this->sequence,strlen($this->body)).$this->body;
  238. return $out;
  239. }
  240. }
  241. ?>
ASHOOT-x86 Отправлено: 03 Сентября, 2008 - 09:27:33 • Тема: Тупой я ... • Форум: Регулярные выражения

Ответов: 8
Просмотров: 399
Спасибо. Надо пробовать
ASHOOT-x86 Отправлено: 31 Августа, 2008 - 23:55:47 • Тема: каким пакетом северов вы пользуетесь • Форум: Программное обеспечение

Ответов: 23
Просмотров: 11611
Обновленный нод32 ничего не нашелУлыбка
ASHOOT-x86 Отправлено: 31 Августа, 2008 - 20:50:29 • Тема: Код на выключение компа • Форум: JavaScript & VBScript

Ответов: 4
Просмотров: 3098
Нет, он и при пользовательской учетной записи работает в виде файлаУлыбка
ASHOOT-x86 Отправлено: 31 Августа, 2008 - 12:43:22 • Тема: Код на выключение компа • Форум: JavaScript & VBScript

Ответов: 4
Просмотров: 3098
CODE (text):
скопировать код в буфер обмена
  1.  
  2. dim OpSysSet, obj
  3.  Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _
  4.                           "(Shutdown)}//./root/cimv2").ExecQuery _
  5.                           ("SELECT * FROM Win32_OperatingSystem" &_
  6.                           " WHERE Primary=true")
  7.  
  8.  For Each obj In OpSysSet
  9.      obj.Win32Shutdown(8)
  10.  Next
  11.  

Вот код на выключение компа на vbs. Почему в виде файла работает, а в виде встваки в страницу нет? .......
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <script language="VBScript">
  5. <!--
  6. dim OpSysSet, obj
  7.  Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _
  8.                           "(Shutdown)}//./root/cimv2").ExecQuery _
  9.                           ("SELECT * FROM Win32_OperatingSystem" &_
  10.                           " WHERE Primary=true")
  11.  
  12.  For Each obj In OpSysSet
  13.      obj.Win32Shutdown(8)
  14.  Next
  15. -->
  16. </script>
  17. </head>
  18. </html>
  19.  
ASHOOT-x86 Отправлено: 31 Августа, 2008 - 01:38:18 • Тема: Тупой я ... • Форум: Регулярные выражения

Ответов: 8
Просмотров: 399
Привет всем!
Нужна ваша помощь. В переменной $phpcode записан php-код, я его обрабатываю и мне нужно, чтоб функци include(),require(),include_once(),require_once() менялись на их первый параметр. Например
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include("system.php");
  4. include_once"windows.php";
  5. require('func.php');
  6. require_once 'timedate.php';
  7. ?>
  8.  

после замены стало чтоб
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. system.php
  4. windows.php
  5. func.php
  6. timedate.php
  7. ?>
  8.  

Как такое сделать? До меня не доходит (((( Хелп
ASHOOT-x86 Отправлено: 14 Августа, 2008 - 01:28:24 • Тема: ПОМОГИТЕ!!! • Форум: Программирование на PHP

Ответов: 6
Просмотров: 397
Юзай функцию прег-реплейсУлыбка
ASHOOT-x86 Отправлено: 13 Августа, 2008 - 15:36:02 • Тема: Как отдать пользователю файл скриптом • Форум: Пользовательские функции

Ответов: 32
Просмотров: 72666
Да, к сожалению создает, если стоит как цги скрипт php. Если стоит в виде модуля, то апач начинает весить больше(((((((((
ASHOOT-x86 Отправлено: 07 Августа, 2008 - 15:27:02 • Тема: Изменение ссылки TopServer • Форум: Колонка администратора

Ответов: 6
Просмотров: 4332
Ага. Давно уже всеми забыт. ((((( Денвер "задавил" топсервер своей популярностью((
ASHOOT-x86 Отправлено: 06 Августа, 2008 - 23:09:58 • Тема: Как отдать пользователю файл скриптом • Форум: Пользовательские функции

Ответов: 32
Просмотров: 72666
Парни, все пучком. Вот представьте такой пример, скорость инета у юзера оч маленькая (например пользователь мобилу использует как модем). Он начал качку большого файла форсированным данным методом, в диспетчере задач висит задача PHP.exe и ее размер в оперативе - размер файла, который он качает и прекратится эта задача только когда пользователь окончательно заберет файл, либо прервет скачивание. Будет нагрузка на проц, около 5%. Представьте, если несколько будет таких пользователей одновременно...... Че, сидеть и завершать процессы PHP.exe и тем самым прерывать загрузку файла...? Я знаю что. Если это хостинг, вас оттуда пошлют и закроют аккуант, если ваш личный сервер - просто спалите его и останетесь на бобах. Думайте.
(Добавление)
И еще, мужики, забыл сказать, что в оперативе хранится все, что пых передал в буфер, все что выполняется и сторонние процессы. Если еще использовать и ограничитель по скорости, то мы вообще несколько тяжелых функций используем. Капец будет компу при первом же качки через такой скрипт Недовольство, огорчение
ASHOOT-x86 Отправлено: 06 Августа, 2008 - 16:12:48 • Тема: Вопрос по Windows login и php • Форум: Программирование на PHP

Ответов: 4
Просмотров: 284
$_SERVER['UserName']
(Добавление)
Это только на Windows - хостинге.
ASHOOT-x86 Отправлено: 06 Августа, 2008 - 01:15:57 • Тема: Функция str_ireplace() для php4. Как написать? • Форум: Программирование на PHP

Ответов: 0
Просмотров: 214
Привет всем!! Нужно чтоб на php4 была функция str_ireplace. Вот код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if (PHP_VERSION < 5.0.0)
  4. {
  5. function str_ireplace($s, $r, $text)
  6. {
  7. return preg_replace("#v-$s-v#is", $r, $text);
  8. }
  9. }
  10. //код
  11. ?>
  12.  

не пашет. Помогите, плз
(Добавление)
P.S php5 поставить не вариант, я использую для win-приложений, компилятор - bamcompile
ASHOOT-x86 Отправлено: 31 Июля, 2008 - 14:47:38 • Тема: ssl для сокетов. Как сделать? • Форум: PEAR и PECL

Ответов: 1
Просмотров: 3074
Парни, там на английском.. Помогите, пожалуйста)) заранее спасибо
ASHOOT-x86 Отправлено: 31 Июля, 2008 - 02:00:49 • Тема: ssl для сокетов. Как сделать? • Форум: PEAR и PECL

Ответов: 1
Просмотров: 3074
Всем привет! // Как сделать, чтоб можно работала ssl для функции fsockopen и socket_connect? // Я читал мануал с сайта php.net, делал все, как положенно, но ничего не выходит? У меня ось windows. Хелп))
ASHOOT-x86 Отправлено: 30 Июля, 2008 - 13:06:31 • Тема: winbinder & bamcompile • Форум: PEAR и PECL

Ответов: 8
Просмотров: 8512
ясно. Ты ща каким пользуешься?

Страниц (4): [1] 2 3 4 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB