HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 08.01.2010, 21:41
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
С нами: 11278406

Репутация: 818


По умолчанию

Цитата:
Есть у когонить пример авторизации на Yandex.ru ?
Когда-то писал, сейчас незнаю работает или нет, проверь.

PHP код:
function login($login,$pass)
{

$ch curl_init('https://passport.yandex.ru/passport?mode=auth');
curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3');
curl_setopt($chCURLOPT_REFERER'https://passport.yandex.ru/passport?mode=auth');
curl_setopt($chCURLOPT_COOKIEJAR$_SERVER['DOCUMENT_ROOT'].'cook.txt');
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS"login=$login&passwd=$pass");
curl_setopt($chCURLOPT_TIMEOUT10);
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
$res curl_exec($ch);
if(
preg_match('#https:\/\/passport\.yandex.ru\/passport\?mode=logout#',$res))
return 
true;    

 
Ответить с цитированием

  #2  
Старый 08.01.2010, 22:16
Maxxxtri23
Познающий
Регистрация: 20.12.2008
Сообщений: 76
С нами: 9152717

Репутация: 6
По умолчанию

PHP код:
<?php

    $port 
10001;
    
    
// create a streaming socket, of type TCP/IP
    
$sock socket_create(AF_INETSOCK_STREAMSOL_TCP);
    
    
// set the option to reuse the port
    
socket_set_option($sockSOL_SOCKETSO_REUSEADDR1);
    
    
// "bind" the socket to the address to "localhost", on port $port
    // so this means that all connections on this port are now our resposibility to send/recv data, disconnect, etc..
    
socket_bind($sock0$port);
    
    
// start listen for connections
    
socket_listen($sock);

    
// create a list of all the clients that will be connected to us..
    // add the listening socket to this list
    
$clients = array($sock);
    
    while (
true) {
        
// create a copy, so $clients doesn't get modified by socket_select()
        
$read $clients;
        
        
// get a list of all the clients that have data to be read from
        // if there are no clients with data, go to next iteration
        
if (socket_select($read$write NULL$except NULL0) < 1)
            continue;
        
        
// check if there is a client trying to connect
        
if (in_array($sock$read)) {
            
// accept the client, and add him to the $clients array
            
$clients[] = $newsock socket_accept($sock);
            
            
// send the client a welcome message
            
socket_write($newsock"Hello, this is welcome message\n".
            
"There are ".(count($clients) - 1)." client(s) connected to the server\n");
            
            
socket_getpeername($newsock$ip);
            echo 
"New client connected: {$ip}\n";
            
            
// remove the listening socket from the clients-with-data array
            
$key array_search($sock$read);
            unset(
$read[$key]);
        }
        
        
// loop through all the clients that have data to read from
        
foreach ($read as $read_sock) {
            
// read until newline or 1024 bytes
            // socket_read while show errors when the client is disconnected, so silence the error messages
            
$data = @socket_read($read_sock1024PHP_NORMAL_READ);
            
            
// check if the client is disconnected
            
if ($data === false) {
                
// remove client for $clients array
                
$key array_search($read_sock$clients);
                unset(
$clients[$key]);
                echo 
"client disconnected.\n";
                
// continue to the next client to read from, if any
                
continue;
            }
            
            
// trim off the trailing/beginning white spaces
            
$data trim($data);
            
            
// check if there is any data after trimming off the spaces
            
if (!empty($data)) {
            
                
// send this to all the clients in the $clients array (except the first one, which is a listening socket)
                
foreach ($clients as $send_sock) {
                
                    
// if its the listening sock or the client that we got the message from, go to the next one in the list
                    
if ($send_sock == $sock || $send_sock == $read_sock){
                        
//continue;
                        
if ($data == 'shutdown') {             
                        
socket_write($send_sock"Ololo"."\n");
                        }
                    
                    }
                    
// write the message to the client -- add a newline character to the end of the message
                    //socket_write($send_sock, $data."\n");
                    //echo($data."\n");
                    
                
// end of broadcast foreach
              
echo($data."\n");  
             
// if ($data == 'shutdown') {             
             // socket_write($send_sock, "Ololo"."\n");
              //}
            
}
            
        } 
// end of reading foreach
    
}

    
// close the listening socket
    
socket_close($sock);
?>
Почему если я с какого либо клиента отсылаю shutdown, то пишет:
Код:
Warning: socket_write(): unable to write to socket [0]: ╟ряЁюё эр юЄяЁртъє шыш я
юыєўхэшх фрээ√ї  (when sending on a datagram socket using a sendto call) no addr
ess was supplied.
 in D:\xampp\htdocs\test2.php on line 77
Однако сообщение Ololo приходит. Мне надо чтобы я с 1 клиента отсылал например сообщение shutdown, а скрипт мне в ответ слал Ololo, т.е. чтобы Ololo приходило тому клиенту кто отсылает скрипту shutdown и только ему.
P.S. выручайте новичка, с меня +
Если надо, то вот оригинальный скрипт:
PHP код:
<?php

    $port 
9050;
    
    
// create a streaming socket, of type TCP/IP
    
$sock socket_create(AF_INETSOCK_STREAMSOL_TCP);
    
    
// set the option to reuse the port
    
socket_set_option($sockSOL_SOCKETSO_REUSEADDR1);
    
    
// "bind" the socket to the address to "localhost", on port $port
    // so this means that all connections on this port are now our resposibility to send/recv data, disconnect, etc..
    
socket_bind($sock0$port);
    
    
// start listen for connections
    
socket_listen($sock);

    
// create a list of all the clients that will be connected to us..
    // add the listening socket to this list
    
$clients = array($sock);
    
    while (
true) {
        
// create a copy, so $clients doesn't get modified by socket_select()
        
$read $clients;
        
        
// get a list of all the clients that have data to be read from
        // if there are no clients with data, go to next iteration
        
if (socket_select($read$write NULL$except NULL0) < 1)
            continue;
        
        
// check if there is a client trying to connect
        
if (in_array($sock$read)) {
            
// accept the client, and add him to the $clients array
            
$clients[] = $newsock socket_accept($sock);
            
            
// send the client a welcome message
            
socket_write($newsock"no noobs, but ill make an exception :)\n".
            
"There are ".(count($clients) - 1)." client(s) connected to the server\n");
            
            
socket_getpeername($newsock$ip);
            echo 
"New client connected: {$ip}\n";
            
            
// remove the listening socket from the clients-with-data array
            
$key array_search($sock$read);
            unset(
$read[$key]);
        }
        
        
// loop through all the clients that have data to read from
        
foreach ($read as $read_sock) {
            
// read until newline or 1024 bytes
            // socket_read while show errors when the client is disconnected, so silence the error messages
            
$data = @socket_read($read_sock1024PHP_NORMAL_READ);
            
            
// check if the client is disconnected
            
if ($data === false) {
                
// remove client for $clients array
                
$key array_search($read_sock$clients);
                unset(
$clients[$key]);
                echo 
"client disconnected.\n";
                
// continue to the next client to read from, if any
                
continue;
            }
            
            
// trim off the trailing/beginning white spaces
            
$data trim($data);
            
            
// check if there is any data after trimming off the spaces
            
if (!empty($data)) {
            
                
// send this to all the clients in the $clients array (except the first one, which is a listening socket)
                
foreach ($clients as $send_sock) {
                
                    
// if its the listening sock or the client that we got the message from, go to the next one in the list
                    
if ($send_sock == $sock || $send_sock == $read_sock)
                        continue;
                    
                    
// write the message to the client -- add a newline character to the end of the message
                    
socket_write($send_sock$data."\n");
                    
                } 
// end of broadcast foreach
                
            
}
            
        } 
// end of reading foreach
    
}

    
// close the listening socket
    
socket_close($sock);
?>
 
Ответить с цитированием

  #3  
Старый 08.01.2010, 23:06
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 1304


По умолчанию

Maxxxtri23 Все ж подписано и каждая строчка прокомментирована >.<

Проблема тут: if ($send_sock == $sock || $send_sock == $read_sock) Скрипт просматривает все сокеты из массива и ищет два: сокет, который принимает новых пользователей и собственно отправителя текущего сообщения. Условия следует разделить - сокет для принятия всегда пропускать. А отправителю слать соответствующее сообщение
PHP код:
if ($send_sock $sock) continue;
if (
$send_sock $read_socksocket_write($send_sock"olololo\n"); 
Kusto Накладные расходы (памяти/процессора) на подсчет количества элементов в массиве - меньше (естественно, если не загонять подсчет в условие окончания цикла), чем использование foreach

admink1 Либо вы несете чушь и сами не понимаете чего хотите, либо не формулируете до конца задачу. Зачем использовать вложенные циклы, если можно последовательно считывать и обращаться к соответствующим страницам? В чем принципиальная важность второго цикла?
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm

Последний раз редактировалось Gifts; 08.01.2010 в 23:20..
 
Ответить с цитированием

  #4  
Старый 09.01.2010, 01:08
admink1
Участник форума
Регистрация: 12.06.2009
Сообщений: 108
С нами: 8902826

Репутация: 54
По умолчанию

Цитата:
Сообщение от Gifts  
admink1 Либо вы несете чушь и сами не понимаете чего хотите, либо не формулируете до конца задачу. Зачем использовать вложенные циклы, если можно последовательно считывать и обращаться к соответствующим страницам? В чем принципиальная важность второго цикла?

полная задача такова:
1. нужно выдернуть акк из файла.
2. залогиниться.
3. выдернуть из другого текстовика три первые ссылки(1,2,3 строчки)
4. по очереди пройтись по этим трем ссылкам и написать текст.
5. поменять акк
6. залогинится
7. и вновь выдернть из текстовика три последующие ссылки(4,5,6 строчки) и написать текст.

//сделал все , кроме 7ого пункта, получается что всегда по всему файлу проходится, а как хотелось бы не получается
 
Ответить с цитированием

  #5  
Старый 09.01.2010, 01:24
Kusto
Moderator - Level 7
Регистрация: 04.02.2007
Сообщений: 554
С нами: 10139306

Репутация: 1089


По умолчанию

Цитата:
Сообщение от admink1  
полная задача такова:
1. нужно выдернуть акк из файла.
2. залогиниться.
3. выдернуть из другого текстовика три первые ссылки(1,2,3 строчки)
4. по очереди пройтись по этим трем ссылкам и написать текст.
5. поменять акк
6. залогинится
7. и вновь выдернть из текстовика три последующие ссылки(4,5,6 строчки) и написать текст.

//сделал все , кроме 7ого пункта, получается что всегда по всему файлу проходится, а как хотелось бы не получается
сразу говорю этот скрипт я не проверял- но в таком виде должно пахать (как я понял у тя два текста в одном логины и пароли в другом айди)
PHP код:
<?php  
$k 
file('id.txt'); 
$xfile('name.txt'); 
$a=array_chunk($k,3);  
foreach (
$a as $c => $d){ 
echo 
" </br> $x[$c] дернули первый акк и залогинились</br></br>";  
foreach (
$d as $f) echo "  суперссылкавконтакта и id=$f   </br>  ";  
   
}
?>
там где строчка
PHP код:
echo " </br> $x дернули первый акк и залогинились</br></br>"
можеш вставлять людые действия (логиниться, и т д)
а в этой строчке
PHP код:
foreach ($d as $f) echo "  суперссылкавконтакта и id=$f   </br>  "
отправляй сообщения и т д)
И дай ответ работает или нет? (и пускай тебя foreach несмущает- внутри него тоже можно производить любые операции как в любом- другом цикле)

Я непойму что тебя смущало в предыдущих вариантах- практически они все были рабочие просто я по мере твоих обьяснений добавлял все новое и новое, лично я как бы сделал
- составил функцию и внутри циклов бы ее вызывал, я вообще невижу никаких проблемм (непойму что тебя смущает в предложенныхвариантах)

Последний раз редактировалось Kusto; 09.01.2010 в 03:34..
 
Ответить с цитированием

  #6  
Старый 09.01.2010, 01:41
admink1
Участник форума
Регистрация: 12.06.2009
Сообщений: 108
С нами: 8902826

Репутация: 54
По умолчанию

Цитата:
Сообщение от Kusto  
И дай ответ работает или нет?
не я так пробовал уже
если имеется текстовик со следующим содержанием:
Код:
1
2
3
4
5
6
..
что он делает,
1) он логинится все норм,
2) потом выдергивает 3 строчку, заходит по ссылки, потом выдергивает 6 строчку, 9, 12 и так далее, до конца файла.
3) до кончца файла доходит, меняет акк, потом с другим акком проходит, тоже самое делает, то есть проходится по 3 строчке, 6, 9, и так пока конец файла не найдет.

а нужно, чтоб первый акк прошелся по первым трем ссылкам, второй акк по 4-6 ссылке, и так далее
 
Ответить с цитированием

  #7  
Старый 09.01.2010, 01:45
Kusto
Moderator - Level 7
Регистрация: 04.02.2007
Сообщений: 554
С нами: 10139306

Репутация: 1089


По умолчанию

Цитата:
Сообщение от admink1  
не я так пробовал уже
если имеется текстовик со следующим содержанием:
Код:
1
2
3
4
5
6
..
что он делает,
1) он логинится все норм,
2) потом выдергивает 3 строчку, заходит по ссылки, потом выдергивает 6 строчку, 9, 12 и так далее, до конца файла.
3) до кончца файла доходит, меняет акк, потом с другим акком проходит, тоже самое делает, то есть проходится по 3 строчке, 6, 9, и так пока конец файла не найдет.

а нужно, чтоб первый акк прошелся по первым трем ссылкам, второй акк по 4-6 ссылке, и так далее
как он может использовать один ак если
PHP код:
$x 
вызывает из списка совершенно другой акк (с которым и проходит по 3 ссылкам)- 3 ссылки прошло- дергает другой акк и т д (или те не такое надо?)

вот именно= первый акк проходит по первым трем- второй по 4,5,6 (см скрипт выше)
 
Ответить с цитированием

  #8  
Старый 09.01.2010, 10:55
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
С нами: 10018169

Репутация: 1680


По умолчанию

Какие функции кроме как fsockopen и cURL могут послать сайту POST запрос?

Да, и ещё из конфига phpinfo:
cURL support enabled
cURL Information libcurl/7.18.1 OpenSSL/0.9.7d zlib/1.1.4

Вроде бы cURL включён, но при попытке отправить пакет с данными, выдаёт ошибку 28
Ну вот пример например:
Код:
<?php 
$ch = curl_init('http://ya.ru'); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 3); 
$res = curl_exec($ch); 
$errno = curl_errno($ch); 
$error = curl_error($ch); 
curl_close($ch); 
if($errno > 0) 
echo $errno.':'.$error; 
else echo $res; 
?>
Ответ сервера:
28:connect() timed out!

Последний раз редактировалось Nightmarе; 09.01.2010 в 10:59..
 
Ответить с цитированием

  #9  
Старый 09.01.2010, 15:35
Kusto
Moderator - Level 7
Регистрация: 04.02.2007
Сообщений: 554
С нами: 10139306

Репутация: 1089


По умолчанию

Цитата:
Сообщение от Nightmarе  
Какие функции кроме как fsockopen и cURL могут послать сайту POST запрос?

Да, и ещё из конфига phpinfo:
cURL support enabled
cURL Information libcurl/7.18.1 OpenSSL/0.9.7d zlib/1.1.4

Вроде бы cURL включён, но при попытке отправить пакет с данными, выдаёт ошибку 28
Ну вот пример например:
Код:
<?php 
$ch = curl_init('http://ya.ru'); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 3); 
$res = curl_exec($ch); 
$errno = curl_errno($ch); 
$error = curl_error($ch); 
curl_close($ch); 
if($errno > 0) 
echo $errno.':'.$error; 
else echo $res; 
?>
Ответ сервера:
28:connect() timed out!
обрати внимание на эту страницу и сравни со своим курлом (там два варианта для яндекса) походу дела в курле недостаточно данных- вот и ждет ответ и время ожидания заканчиваеться (так вроде в ошибке написанно у тебя)
http://forum.antichat.ru/threadnav40896-1422-10.html
 
Ответить с цитированием

  #10  
Старый 09.01.2010, 15:43
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
С нами: 11278406

Репутация: 818


По умолчанию

Цитата:
Сообщение от Nightmarе  
Какие функции кроме как fsockopen и cURL могут послать сайту POST запрос?

Да, и ещё из конфига phpinfo:
cURL support enabled
cURL Information libcurl/7.18.1 OpenSSL/0.9.7d zlib/1.1.4

Вроде бы cURL включён, но при попытке отправить пакет с данными, выдаёт ошибку 28
Ну вот пример например:
Код:
<?php 
$ch = curl_init('http://ya.ru'); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 3); 
$res = curl_exec($ch); 
$errno = curl_errno($ch); 
$error = curl_error($ch); 
curl_close($ch); 
if($errno > 0) 
echo $errno.':'.$error; 
else echo $res; 
?>
Ответ сервера:
28:connect() timed out!
curl_setopt($ch, CURLOPT_TIMEOUT, 3); Выставь больше, у тебя видимо слабый канал, поставь 10.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.