|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
С нами:
9999746
Репутация:
1318
|
|
myp3zz, смотря каким методом передаются данные... Если методом GET тогда всё очень просто... Предположим, что твой скрипт обработки называется myhandler.php, а чужой - somehandler.php и при этом ты взаимодействуешь с переменными a, b и c. Тогда, чтобы одновременно обработать данные в твоём скрипте, и при этом передать их другому, твой myhandler.php должен выглядеть так:
<?php
ob_start();
// Тут идёт обработка переменных $_GET["a"], $_GET["b"] и $_GET["c"]
// Редирект юзера
header("Location: http://somehost.ru/somehandler.php?a={$_GET["a"]}&b={$_GET["b"]}&c={$_GET["c"]}");
ob_end_flush();
?>
В случае, если данные передаются методом POST, то тут уже придётся реализовать взаимодействие через сокеты или библиотеку CURL. Если через сокеты, то твой скрипт myhandler.php будет смотреться примерно так:
<?php
$requestContent = sprintf("a=%s&b=%s&c=%s", $_POST["a"], $_POST["b"], $_POST["c"]);
$sendData = "POST /somehandler.php HTTP/1.1\r\n";
$sendData .= "Host: www.somehost.ru\r\n";
$sendData .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
$sendData .= "Pragma: no-cache\r\n";
$sendData .= "Content-Type: application/x-www-form-urlencoded\r\n";
$sendData .= sprintf("Content-Length: %d\r\n", strlen($requestContent));
$sendData .= "Connection: Close\r\n\r\n";
$sendData .= $requestContent;
$socket = fsockopen("www.somehost.ru", 80, $errno, $errstr, 60);
if (!$socket) die($errstr);
$ret = fwrite($socket, $sendData);
if (!$ret) die("Can't write to socket");
$response = "";
while (!feof($socket)) {
response .= fgets($socket, 1024);
}
fclose($socket);
// На данном этапе у нас в $response будет ответ сервера, разумеется
// его нужно будет проанализировать, чтобы понять удачно ли были
// переданы данные. Тут же организуем обработку переменных
// $_POST["a"], $_POST["b"] и $_POST["c"]
?>
Если взаимодействие будет через CURL, то тогда придётся написать что-то типа такого:
<?php
$requestContent = sprintf("a=%s&b=%s&c=%s", $_POST["a"], $_POST["b"], $_POST["c"]);
$sendData = "POST /somehandler.php HTTP/1.1\r\n";
$sendData .= "Host: www.somehost.ru\r\n";
$sendData .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
$sendData .= "Pragma: no-cache\r\n";
$sendData .= "Content-Type: application/x-www-form-urlencoded\r\n";
$sendData .= sprintf("Content-Length: %d\r\n", strlen($requestContent));
$sendData .= "Connection: Close\r\n\r\n";
$sendData .= $requestContent;
$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, "http://www.somehost.ru");
curl_setopt($curlHandler, CURLOPT_PORT, 80);
curl_setopt($curlHandler, CURLOPT_TIMEOUT, 60);
curl_setopt($curlHandler, CURLOPT_CUSTOMREQUEST, $sendData);
curl_setopt($curlHandler, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curlHandler, CURLOPT_HEADER, true);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandler, CURLOPT_FAILONERROR, false);
$response = curl_exec($curlHandler);
if (curl_errno($curlHandler) != CURLE_OK) die(curl_error($curlHandler));
// На данном этапе у нас в $response будет ответ сервера, разумеется
// его нужно будет проанализировать, чтобы понять удачно ли были
// переданы данные. Тут же организуем обработку переменных
// $_POST["a"], $_POST["b"] и $_POST["c"]
?>
|