Поправлюсь Какой это нафиг кодинг, это страданее хренью. В этой теме вопросы по темам - функции в PHP, синтаксис и другое, но никак не о "какой двиг лучше".
помогите плиз. Задача такова. Есть два скрипта на разных серваках. С первого нужно передать некоторые параметры Post/get'ом (всеравно) во второй, второй должен получить их, отработать что-нибуть и вернуть результат в первый. главное! работу второго я не должен видеть, я должен видеть только результат который он вернет в первый скрипт. заранее спасиба. з.ы. если несложно напишите элементарный пример.
В скрипт_1 сделай include/require скрипт_2?пармаетры, а скрипт_2 пусть свой результат формирует обычным выводом (без <html>, <body> и т.д.)
а без инклуда никак нельзя? если сложно, то пусть второй просто выполнится, не возвращая никаких результатов.
PHP: <?php //script#1 $data = file_get_contents("http://localhost/script2.php?param1=yes¶m2=999"); //обработка? print $data; ?> либо напрямую через сокеты
через file_get_contents тоже не годицца, так как параматры приходица передавать в таком виде: ?to=bill%40melkosoft.com&from=hax0r%40evil.com&subj=bI+bI+bI Напиши плз пример для сокетов.
Если curl поддерживается тогда в твоем случае лучше делать через него PHP: <?php $ch = curl_init("http://www.site.ru/script.php"); $result=curl_exec($ch); curl_close($ch); echo $result; ?> в переменной $result будет ответ сервера.
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; }
Да, поторопился с ответом, вот как нужно было: 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; ?>
Подскажите пожалуйста, как поменять время создания .php файла, и в какие директории можно закинуть шел чтобы его можно было запустить.(Ipb 2.3.1) Огромное спасибо
Зачем пользоваться системной командой, если существует функция? http://ru.php.net/manual/ru/function.touch.php по никсовой команде: http://ru.wikipedia.org/wiki/Touch
Помогите составить регулярку чтобы проверить логин ползователя 1. не должен состоять из разных алфавитов одновременно ( может быть либо русский либо английский) 2. может содержать цифры, один пробел, два нижних подчеркивания "_"
Одной регуляркой здесь не справиться. PHP: <? $login = 'My_name_is hacker'; if(preg_match('/^([A-Za-z0-9_\s]+|[А-Яа-я0-9_\s]+)$/i',$login) && substr_count($login,' ') <= 1 && substr_count($login,'_') <= 2) { echo('Логин "'.$login.'" введён верно'); } else { echo('Логин "'.$login.'" введён неверно'); } ?>
На удаленном хосте есть текстовый файл. Каким скриптом можно этот файл взять и сохранить (или вывести) на своем хосте, где скрипт лежит? Файл - www.ultracomp.ru/prices/ULTRA_Msk_All_Txt.txt . Через ftp файл не взять, через fopen("$url", "r") тоже.
ещё можно $f = file('http://www.ultracomp.ru/prices/ULTRA_Msk_All_Txt.txt'); echo implode($f); Только там наверное будет HTTP запрос писаться, если будет, отрешь всё что выше \r\n\r\n