@mkramer да фиг знает, что не комментируй всё равно скачивает. Код прокси как основа от которой отталкивался взят отсель: https://gist.github.com/codedokode/ea0503ecb0efbc385b24f3972b774976 Заранее предупреждаю я меньше недели в сумме как программист php PHP: <?php //тут раскладывается ссылка на домен и запрос: $stderr = fopen('php://stderr', 'w'); $url = $_SERVER['REQUEST_URI']; $path = parse_url($url, PHP_URL_PATH); $query = parse_url($url, PHP_URL_QUERY); $newPath = ltrim($path, '/'); if ($query) { $newPath .= '?' . $query; } function multiexplode ($delimiters,$string) { $ready = str_replace($delimiters, $delimiters[0], $string); $launch = explode($delimiters[0], $ready); return $launch; } /*из запроса берутся параметры и отдельно обрабатываются, конечный результат этой обработки это добавление новых данных к тем данным которые берутся при скачивании файлика, смотрите чуть ниже: .... Смысла эту обработку приводить не вижу никакого! */ // тут из запроса формируется запрос в целях //проксирования на другой сервер с которого на //самом деле скачивается тот самый файлик! $base = 'http://192.168.25.150:8888'; //print_r($proxyUrl = $base . $yes_pxr . '?' . $Squery); //Вывод конечной ссылки для отладки $proxyUrl = $base . $yes_pxr . '?' . $Squery; //$proxyURL - это ссылка для запроса на проксируемый сервер // $context = stream_context_create(); //print_r($contents = @file_get_contents($proxyUrl /* , false, $context */)); $contents = @file_get_contents($proxyUrl /* , false, $context */); // Получаем заголовки ответа из глобальной переменной (PHP!) $headers = $http_response_header; $name_channel = stripcslashes ($name_channel); // $name_channel это имя скачиваемого фаайла.. подмена отрабатывает на ура header('Content-Disposition: attachment; filename="' . $name_channel . '"'); $firstLine = $headers[0]; if ($contents === false) { fwrite($stderr, "Request failed: $proxyUrl - $firstLine\n"); header("HTTP/1.1 503 Proxy error"); die("Proxy failed to get contents at $proxyUrl"); } fwrite($stderr, "$proxyUrl - OK: $firstLine\n"); $allowedHeaders = "!^(http/1.1|server:|content-type:|last-modified|access-control-allow-origin|Content-Length:|Accept-Ranges:|Date:|Via:|Connection:|X-|age|cache-control|vary)!i"; // Прокидываем разрешенные заголовки foreach ($headers as $header) { if (preg_match($allowedHeaders, $header)) { fwrite($stderr, "+ $header\n"); header($header); } else { fwrite($stderr, "- $header\n"); } } #echo $contents_end; ?> --- Добавлено --- Вот в самом низу перед закрытием кода есть; #echo $contents_end; в этой переменной в итоге те самые данные которые надо засунуть в файлик с именем $name_channel в место тех данных которые были считаны и остаются в файлике скачиваемом с проксируемого сервера!
ну ЁМАЁ.... оказывается всё работает. Вчера чистил кэш браузера не посмотрел, по видимому за последний час только. На данный момент тотально всё вычистил и забегало... Но вот с какого перепугу вдруг и в Мозилле заработало не понимаю, файлик как ни крути пустой был --- Добавлено --- Тут другая фигня выскакивает, не все строчки файлика попадают в массив... в место 10ти только 8мь. Две последнии странно себя ведут, предпоследняя на половину, а последняя в обще пропадает! Подозреваю, что тут что-то не так; $massiv=explode("\n", $contents); Т.е. по переносу строк в массив заносится... что не так, как правильно лучше сделать что бы без косяков было?
Такое подозрение, что не влезает в свежеобъявленный массив весь объём данных! Текста хватает. Что делать, в каждой ячейке по длинной строке. Может как-то заранее объявлять размер массива надо?
бедняга ты --- Добавлено --- вот тут у тебя происходит получение контента, который ты хочешь поменять PHP: $contents = @file_get_contents($proxyUrl /* , false, $context */); дальнейшая его судьба покрыта тайной, ибо больше с этой переменной не происходит ничего. реши этот вопрос
на самом деле вот чего дальше с ней; Код (Text): $mas_you = explode (PHP_EOL, $contents); изначально с $contents всё good, 10 строк, но в массив попадает 8 с половиной! Знакомый спец в php рекомендует рекомендует читать побайтово, пока не знаю как..
=) вы как слепые котята кароче, ты либо учи, либо плати если хочешь учить - читай код и понимай, что делает каждое слово. в приведённом тобою фрагменте ты не понимаешь конкретно третье.
@igordata да я не против и учить и платить, было бы время на это - я же говорю меня озадачили как всегда неожиданно - 5ть лет назад учился: - ДЕЛАЙ! Вот, всё сделал оказывается ещё вчера, закончил по вашим подсказкам, но кэш не полностью вычистил, поэтому не знал, что работает. PHP_EOL символ конца строки, до этого я делал тоже самое, единственное разбивал текст из формата JSON с "\n", но тут не катит этот момент. По PHP_EOL работает но не понимаю почему последнии две строчки проглатывает, может сошлёшься что почитать, я только рад. Не большое по размеру содержимое массивы только так забирают, а тут перебор какой-то... --- Добавлено --- @Valick Спасибо, есть книга 5ти летней давности с курсов. Опыта нет поэтому обратился! У меня нет времени сидеть часами читать, я на ходу всё сделал за счёт в основном данных с сайта php.net
так загляни в эти две строчки и загляни в PHP_EOL, загляни в доку и подумай, что не так. кроме тебя этого не сделать никому
@igordata со слов Антона Гордеева: file_get_contents - немного обрезанный и унифицированный курл. В чём конкретно причина того,что file_get_contents не полностью построчно переносил данные в массив не знаю, вывод массива даже curl потом был обрезанный на пол строки и тут же строка ввода начиналась в консоли.