Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

11.09.2007, 20:31
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
n1†R0x Мне нужно былы 1,2 ответа. 
|
|
|

11.09.2007, 21:11
|
|
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме: 3986705
Репутация:
1403
|
|
Эта тема чисто о Php! че вы тут демагогию разводите...
|
|
|

12.09.2007, 02:59
|
|
Постоянный
Регистрация: 21.08.2007
Сообщений: 367
Провел на форуме: 3578960
Репутация:
468
|
|
помогите плиз.
Задача такова.
Есть два скрипта на разных серваках.
С первого нужно передать некоторые параметры Post/get'ом (всеравно) во второй, второй должен получить их, отработать что-нибуть и вернуть результат в первый.
главное! работу второго я не должен видеть, я должен видеть только результат который он вернет в первый скрипт.
заранее спасиба.
з.ы. если несложно напишите элементарный пример.
|
|
|

12.09.2007, 03:36
|
|
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме: 4172659
Репутация:
646
|
|
В скрипт_1 сделай include/require скрипт_2?пармаетры, а скрипт_2 пусть свой результат формирует обычным выводом (без <html>, <body> и т.д.)
|
|
|

12.09.2007, 09:50
|
|
Постоянный
Регистрация: 21.08.2007
Сообщений: 367
Провел на форуме: 3578960
Репутация:
468
|
|
а без инклуда никак нельзя?
если сложно, то пусть второй просто выполнится, не возвращая никаких результатов.
|
|
|

12.09.2007, 09:57
|
|
Постоянный
Регистрация: 20.01.2007
Сообщений: 787
Провел на форуме: 2924346
Репутация:
1719
|
|
PHP код:
<?php
//script#1
$data = file_get_contents("http://localhost/script2.php?param1=yes¶m2=999");
//обработка?
print $data;
?>
либо напрямую через сокеты
|
|
|

12.09.2007, 10:11
|
|
Постоянный
Регистрация: 21.08.2007
Сообщений: 367
Провел на форуме: 3578960
Репутация:
468
|
|
через file_get_contents тоже не годицца, так как параматры приходица передавать в таком виде:
?to=bill%40melkosoft.com&from=hax0r%40evil.com&sub j=bI+bI+bI
Напиши плз пример для сокетов.
|
|
|

12.09.2007, 12:04
|
|
Участник форума
Регистрация: 22.05.2007
Сообщений: 144
Провел на форуме: 306311
Репутация:
119
|
|
Если curl поддерживается тогда в твоем случае лучше делать через него
PHP код:
<?php
$ch = curl_init("http://www.site.ru/script.php");
$result=curl_exec($ch);
curl_close($ch);
echo $result;
?>
в переменной $result будет ответ сервера.
|
|
|

12.09.2007, 13:31
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
ant0ha, вот фигли он будет в переменной? Про параметр CURLOPT_RETURNTRANSFER слышали? Вот только после его инициализации будет возвращён результат в переменную...
Жись_Гавно, а ты можешь воспользоваться функцией, которая реализует транспорт через либу CURL (писал для себя, поддерживается множество методов). Вот исходник (форматирование поехало, но всё равно разберёшься):
PHP код:
define("HTTP_GET", 0x0001);
define("HTTP_POST", 0x0002);
define("HTTP_HEAD", 0x0003);
define("HTTP_PUT", 0x0004);
define("HTTP_DELETE", 0x0006);
define("HTTP_TRACE", 0x0007);
define("HTTP_OPTIONS", 0x0008);
define("HTTP_PROPFIND", 0x0009);
define("HTTP_10", 0x0001);
define("HTTP_11", 0x0002);
function httpRequest (
$requestMethod, // HTTP метода - одна из определённых выше констант
$requestVersion, // HTTP версия - одна из определённых выше констант
$requestUrl, // Урла запроса
$requestHeaders, // Хидеры запроса
$requestBody, // Тело запроса
$requestTimeout, // Таймаут-запроса
$requestProxy, // Прокси для соединения
&$responseCode = null, // Переменная, куда будет возвращён HTTP код ответа
&$responseHeaders = null, // Переменная куда будет возвращены хидеры ответа
&$responseBody = null, // Переменная куда будет возвращено тело запроса
&$errCode = null, // Номер ошибки CURL
&$errString = null) // Описание ошибки CURL
{
if (!is_integer($requestTimeout))
return ($responseCode = $responseHeaders = $responseContent = false);
$urlData = parse_url($requestUrl);
if (!isset($urlData["host"]))
return ($responseCode = $responseHeaders = $responseContent = false);
if (!isset($urlData["scheme"])) $urlData["scheme"] = "http";
if (!isset($urlData["path"])) $urlData["path"] = "/";
if (!isset($urlData["port"]) && $urlData["scheme"] == "http") $urlData["port"] = 80;
if (!isset($urlData["port"]) && $urlData["scheme"] == "https") $urlData["port"] = 443;
switch ($requestMethod) {
case HTTP_GET :
$httpMethod = "GET";
break;
case HTTP_POST :
$httpMethod = "POST";
break;
case HTTP_HEAD :
$httpMethod = "HEAD";
break;
case HTTP_PUT :
$httpMethod = "PUT";
break;
case HTTP_DELETE :
$httpMethod = "DELETE";
break;
case HTTP_TRACE :
$httpMethod = "TRACE";
break;
case HTTP_OPTIONS :
$httpMethod = "OPTIONS";
break;
case HTTP_PROPFIND :
$httpMethod = "PROPFIND";
break;
default :
return ($responseCode = $responseHeaders = $responseContent = false);
break;
}
switch ($requestVersion) {
case HTTP_10 :
$httpVersion = "1.0";
break;
case HTTP_11 :
$httpVersion = "1.1";
break;
default :
return ($responseCode = $responseHeaders = $responseContent = false);
break;
}
if (isset($urlData["query"]))
$customRequest = sprintf("%s %s?%s HTTP/%s\r\n", $httpMethod, $urlData["path"], $urlData["query"], $httpVersion);
else
$customRequest = sprintf("%s %s HTTP/%s\r\n", $httpMethod, $urlData["path"], $httpVersion);
$customRequest .= sprintf("Host: %s\r\n", $urlData["host"]);
foreach ($requestHeaders as $header)
$customRequest .= sprintf("%s\r\n", $header);
if ($requestMethod == HTTP_POST || $requestMethod == HTTP_PUT)
if (strlen($requestBody) > 0) $customRequest .= sprintf("Content-Length: %s\r\n", strlen($requestBody));
else return ($responseCode = $responseHeaders = $responseContent = false);
if (isset($urlData["user"]) && isset($urlData["pass"])) {
$authValue = sprintf("%s:%s", $urlData["user"], $urlData["pass"]);
$customRequest .= sprintf("Authorization: Basic %s\r\n", base64_encode($authValue));
}
$customRequest .= sprintf("Connection: close\r\n", $urlData["host"]);
$customRequest .= "\r\n";
if ($requestMethod == HTTP_POST || $requestMethod == HTTP_PUT)
if (strlen($requestBody) > 0) $customRequest .= sprintf("%s", $requestBody);
else return ($responseCode = $responseHeaders = $responseContent = false);
$curlHandler = curl_init();
$curlOptions = array (
CURLOPT_URL => sprintf("%s://%s", $urlData["scheme"], $urlData["host"]),
CURLOPT_PORT => $urlData["port"],
CURLOPT_TIMEOUT => $requestTimeout,
CURLOPT_CUSTOMREQUEST => $customRequest,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FAILONERROR => false,
CURLOPT_VERBOSE => false,
CURLOPT_NOPROGRESS => true
);
if ($urlData["scheme"] == "https") {
$curlOptions[CURLOPT_SSL_VERIFYPEER] = false;
$curlOptions[CURLOPT_SSL_VERIFYHOST] = false;
}
if ($requestMethod == HTTP_HEAD || $requestMethod == HTTP_OPTIONS || $requestMethod == HTTP_DELETE)
$curlOptions[CURLOPT_NOBODY] = true;
else
$curlOptions[CURLOPT_NOBODY] = false;
if (!is_null($requestProxy)) {
$proxyData = parse_url("http://" . $requestProxy);
if (isset($proxyData["user"]) && isset($proxyData["pass"]))
$curlOptions[CURLOPT_PROXYUSERPWD] = sprintf("%s:%s", $proxyData["user"], $proxyData["pass"]);
if (!isset($proxyData["host"]) && !isset($proxyData["port"]))
return ($responseCode = $responseHeaders = $responseContent = false);
$curlOptions[CURLOPT_PROXY] = sprintf("%s:%d", $proxyData["host"], $proxyData["port"]);
$curlOptions[CURLOPT_HTTPPROXYTUNNEL] = sprintf("%s:%d", $proxyData["host"], $proxyData["port"]);
}
$result = curl_setopt_array($curlHandler, $curlOptions);
if (!$result) return ($responseCode = $responseHeaders = $responseContent = false);
$response = curl_exec($curlHandler);
$errCode = curl_errno($curlHandler);
$errString = sprintf("Error: %s", curl_error($curlHandler));
if (curl_errno($curlHandler) != CURLE_OK) {
$responseCode = false;
$responseHeaders = false;
$responseContent = false;
curl_close($curlHandler);
return false;
}
curl_close($curlHandler);
list($headers, $responseBody) = preg_split("/\r\n\r\n/", $response, 2);
$headers = preg_split("/\r\n/", $headers);
list(,$responseCode,) = sscanf(array_shift($headers), "%s %d %s");
$responseHeaders = $headers;
return true;
}
Ну или если ты любитель сокет, то вот пример, только для метода GET, но если ты знаешь принципы и спецификацию протокола HTTP, то реализовать другой метод тебе труда не составит:
PHP код:
function httpGetRequest ($remoteUrl, &$respCode, &$respBody) {
$urlData = parse_url($remoteUrl);
if (!isset($urlData["host"])) return false;
if (!isset($urlData["port"])) $urlData["port"] = 80;
if (!isset($urlData["path"])) $urlData["path"] = "/";
$socket = fsockopen($urlData["host"], $urlData["port"], $errno, $errstr, 60);
if (!$socket) return false;
$resource = $urlData["path"];
if (isset($urlData["query"])) $resource .= "?{$urlData["query"]}";
$sendData = "GET {$resource} HTTP/1.1\r\n";
$sendData .= "Host: {$urlData["host"]}\r\n";
$sendData .= "User-Agent: DaMaGeLaB Crawler\r\n";
$sendData .= "Accept: */*\r\n";
$sendData .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
$sendData .= "Pragma: no-cache";
$sendData .= "Connection: Close\r\n\r\n";
$ret = fwrite($socket, $sendData);
if (!$ret) return false;
$buffer = "";
while (!feof($socket)) {
$buffer .= fgets($socket, 8192);
}
fclose($socket);
list($headers, $content) = preg_split("/\r\n\r\n/", $buffer, 2);
if (strlen($content) <= 0 || strlen($headers) <= 0) return false;
$respCode = intval(substr($headers, 9, 3));
$respBody = $content;
return true;
}
|
|
|

12.09.2007, 13:43
|
|
Участник форума
Регистрация: 22.05.2007
Сообщений: 144
Провел на форуме: 306311
Репутация:
119
|
|
Сообщение от groundhog
ant0ha, вот фигли он будет в переменной? Про параметр CURLOPT_RETURNTRANSFER слышали? Вот только после его инициализации будет возвращён результат в переменную...
Да, поторопился с ответом, вот как нужно было:
PHP код:
<?php
$ch = curl_init("http://www.site.ru/script.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec($ch);
curl_close($ch);
echo $result;
?>
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|