Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: POST запрос через сокеты

Сообщения:  [1-10]   [11-11] 

 
 автор: ZooM (ССС)   (18.08.2006 в 23:42)   письмо автору
 
   для: ZooM (ССС)   (18.08.2006 в 13:14)
 

помогите ктонибудь доделать!!!!

   
 
 автор: ZooM (ССС)   (18.08.2006 в 13:14)   письмо автору
 
   для: cheops   (18.08.2006 в 12:13)
 

Короче не выходит опять!!! После выполнения скрипта в БД в таблице phpbb_sessions создается не одна а 2 записи с сессиями!!! т.е. скрипт спер ид сессии при первом подключении а при втором подключении он использует эту сессию при добавлении поста, а сессиято уже опять изменила свой ид!!! Че не так ? вот код :

<?php  Error_Reporting(E_ALL & ~E_NOTICE);
  
$hostname "forum.x"
  
$path "/posting.php"

  
// Устанавливаем соединение, имя которого 
  // передано в параметре $hostname 
  
$fp fsockopen($hostname80$errno$errstr30);  
  
// Проверяем успешность установки соединения 
  
if (!$fp) echo "$errstr ($errno)<br />\n";  
  else 
  {  
    
// Формируем HTTP-заголовки для передачи 
    // его серверу 
    
$headers "GET $path HTTP/1.1\r\n";  
    
$headers .= "Host: $hostname\r\n";  
    
$headers .= "Connection: Close\r\n\r\n";  
    
// Отправляем HTTP-запрос серверу 
    
fwrite($fp$headers);  
    
// Получаем ответ 
    
while (!feof($fp)) 
    {  
      
$line fgets($fp1024);  
      
// Ищем строку вида  
      // Set-Cookie: PHPSESSID=6197e647566bdaa24da3ab42ae7604b2; 
      // Именно она устанавливает cookie 
      
preg_match("|Set-Cookie: PHPSESSID=([\d\w]+);|i",$line,$out); 
      if(!empty(
$out[1])) 
      { 
        
$SID $out[1]; 
        break; 
      } 
    }  
    
fclose($fp);  
  }  

  
$hostname "forum.x"
  
$path "/posting.php"
  
$line ""

  
// Передаём методом POST имя пользователя (admin), 
  // его пароль (admin), скрытое поле session_id ($SID) 
  // В заголовках, передаём cookie PHPSESSID 
  // Устанавливаем соединение, имя которого 
  // передано в параметре $hostname 
  
$fp fsockopen($hostname80$errno$errstr30);  
  
// Проверяем успешность установки соединения 
  
if (!$fp) echo "$errstr ($errno)<br />\n";  
  else 
  {  
    
// Данные POST-запроса 
    
$data "username=zoom&subject=New_subject&mode=newtopic&f=2&message=Hello_People&addbbcode18=#444444&addbbcode20=12&sid=$SID \r\n\r\n"
    
// Формируем HTTP-заголовки для передачи 
    // его серверу 
    
$headers "POST $path HTTP/1.1\r\n";  
    
$headers .= "Host: $hostname\r\n";  
    
$headers .= "Content-type: application/x-www-form-urlencoded\r\n"
    
$headers .= "Content-Length: ".strlen($data)."\r\n"
    
// Подделываем cookie 
    
$headers .= "Cookie: PHPSESSID=$SID; phpbb2mysql_data=a%3A0%3A%7B%7D; phpbb2mysql_sid=$SID\r\n"
    
$headers .= "Connection: Close\r\n\r\n";  
    
// Отправляем HTTP-запрос серверу 
    
fwrite($fp$headers.$data);  
    
// Получаем ответ 
    
while (!feof($fp)) 
    {  
      
$line .= fgets($fp1024);  
    }  
    
fclose($fp);  
  }  
  echo 
$line
?> 

   
 
 автор: cheops   (18.08.2006 в 12:13)   письмо автору
 
   для: ZooM (ССС)   (18.08.2006 в 00:08)
 

Возможно вам будут интересны темы
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8931
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9050
http://www.softtime.ru/forum/read.php?id_forum=2&id_theme=12734

   
 
 автор: ZooM (ССС)   (18.08.2006 в 00:08)   письмо автору
 
   для: cheops   (17.08.2006 в 22:23)
 

проблема!!! На сайте стоит проверка по сессиям! Че делать ? И по кукисам кажется тоже!
вобщем форум пхпбб добавление сообщения... вот что у меня получилось... но не работает! Что не так ?

<?php  
  $hostname 
"localhost";  
  
$path "/posting.php"// Аккуратнее с именами и путями  
  
$line "";  
   
$fp fsockopen($hostname80$errno$errstr30);  
    if (!
$fp) echo "$errstr ($errno)<br />\n";  
  else  
  {  
   
$data "username=111&subject=342345234&mode=newtopic&f=2&message=eeeee&addbbcode18=#444444&addbbcode20=12&sid=74c9d3620f1668d08e9231488c68c42e";  
     
$headers "POST $path HTTP/1.1\r\n";  
    
$headers .= "Host: $hostname\r\n";  
    
$headers .= "Cookie: phpbb2mysql_data=a%3A0%3A%7B%7D\r\n";
    
$headers .= "Cookie: phpbb2mysql_sid=74c9d3620f1668d08e9231488c68c42e\r\n";
    
$headers .= "User-Agent: Mozilla/5.0 (compatible; IE 6.0 Microsoft Windows XP)\r\n";
    
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";  
    
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";  
    
fwrite($fp$headers.$data);  
    while (!
feof($fp))  
    {  
      
$line .= fgets($fp1024);  
    }  
    
fclose($fp);  
  }  
  echo 
$line;  
?> 

   
 
 автор: ZooM (ССС)   (17.08.2006 в 23:59)   письмо автору
 
   для: Trianon   (17.08.2006 в 17:55)
 

а и правдо! поставил www и заработало!

   
 
 автор: ZooM (ССС)   (17.08.2006 в 23:50)   письмо автору
 
   для: cheops   (17.08.2006 в 22:23)
 

а как сделать все сразу ?! =)
это так на будующее... хотя и в это раз скорее всего пригодится...

   
 
 автор: cheops   (17.08.2006 в 22:23)   письмо автору
 
   для: ZooM (ССС)   (17.08.2006 в 17:02)
 

А вы к какой странице обращаетесь? Может там защита по рефереру, cookie, сессии или всему вместе сразу? Тогда всё это добро тоже необходимо будет эмулировать.

   
 
 автор: Trianon   (17.08.2006 в 17:55)   письмо автору
 
   для: ZooM (ССС)   (17.08.2006 в 17:02)
 

ну... если написать $hostname = "www.site.ru"; то по идее должно работать...
Я, правда, понизил бы версию протокола до HTTP/1.0, но в принципе всё вроде как верно....
если, конечно, enctype в форме обычный, а не multipart.

   
 
 автор: ZooM (ССС)   (17.08.2006 в 17:02)   письмо автору
 
   для: Trianon   (17.08.2006 в 16:57)
 

есть какаято вот выкладываю :

<?php 
  $hostname 
"site"
  
$path "/page.php"// Аккуратнее с именами и путями 
  
$line ""
   
$fp fsockopen($hostname80$errno$errstr30); 
    if (!
$fp) echo "$errstr ($errno)<br />\n"
  else 
  { 
   
$data "user=usr200&phone=890588555555"
     
$headers "POST $path HTTP/1.1\r\n"
    
$headers .= "Host: $hostname\r\n"
    
$headers .= "Content-type: application/x-www-form-urlencoded\r\n"
    
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n"
    
fwrite($fp$headers.$data); 
    while (!
feof($fp)) 
    { 
      
$line .= fgets($fp1024); 
    } 
    
fclose($fp); 
  } 
  echo 
$line
?> 

но тока чегото не работает!

   
 
 автор: Trianon   (17.08.2006 в 16:57)   письмо автору
 
   для: ZooM (ССС)   (17.08.2006 в 16:48)
 

реализация GET-запроса через сокеты у Вас есть?
Давайте её сюда - переделаем для POST.

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования