|
|
|
|
|
для: 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($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
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($fp, 1024);
// Ищем строку вида
// 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($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
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($fp, 1024);
}
fclose($fp);
}
echo $line;
?>
|
| |
|
|
|
|
|
|
|
|
для: cheops
(17.08.2006 в 22:23)
| | проблема!!! На сайте стоит проверка по сессиям! Че делать ? И по кукисам кажется тоже!
вобщем форум пхпбб добавление сообщения... вот что у меня получилось... но не работает! Что не так ?
<?php
$hostname = "localhost";
$path = "/posting.php"; // Аккуратнее с именами и путями
$line = "";
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
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($fp, 1024);
}
fclose($fp);
}
echo $line;
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(17.08.2006 в 17:55)
| | а и правдо! поставил www и заработало! | |
|
|
|
|
|
|
|
для: cheops
(17.08.2006 в 22:23)
| | а как сделать все сразу ?! =)
это так на будующее... хотя и в это раз скорее всего пригодится... | |
|
|
|
|
|
|
|
для: ZooM (ССС)
(17.08.2006 в 17:02)
| | А вы к какой странице обращаетесь? Может там защита по рефереру, cookie, сессии или всему вместе сразу? Тогда всё это добро тоже необходимо будет эмулировать. | |
|
|
|
|
|
|
|
для: ZooM (ССС)
(17.08.2006 в 17:02)
| | ну... если написать $hostname = "www.site.ru"; то по идее должно работать...
Я, правда, понизил бы версию протокола до HTTP/1.0, но в принципе всё вроде как верно....
если, конечно, enctype в форме обычный, а не multipart. | |
|
|
|
|
|
|
|
для: Trianon
(17.08.2006 в 16:57)
| | есть какаято вот выкладываю :
<?php
$hostname = "site";
$path = "/page.php"; // Аккуратнее с именами и путями
$line = "";
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
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($fp, 1024);
}
fclose($fp);
}
echo $line;
?>
|
но тока чегото не работает! | |
|
|
|
|
|
|
|
для: ZooM (ССС)
(17.08.2006 в 16:48)
| | реализация GET-запроса через сокеты у Вас есть?
Давайте её сюда - переделаем для POST. | |
|
|
|
|