Титла: Http грешка при външно include? Публикувано от: Naka в Apr 16, 2010, 15:39 Имам следната ситуация два PHP скрипта - А и В намиращи се на различни сървери.
Само А е публичен и той прави заявка за инклуде към скрипта B, който се намира физически на друго място: А(сървер 1) -------> В(сървер2 - БД) Скрипта А има следното съдържание: Код: $in = file_get_contents('http://www.example.com/snimki/В.php?'. Това работи правилно. Освен това скрипта В е отговорен за връщането на правилни http хедъри към А, когато има някъкъв проблем от страната на В. Например ако А заяви id=322 към В и В от своя страна знае че няма id с номер 322 в БД той връща http 410 gone, и А от своя страна също изобразява http 410 gone. Само А е публичен и се вижда от Goggle. Например ако Гоогле заправи заявка към такова id към А, то Goggle също ще види http 410 gone и втори път няма да посети А. Въпросът ми е ако в момента Интернет връзката е прекъсната между А и В (или пък В е изключен), какъв Http Error хеадър трябва да изфабрикува А? В такава ситуация $in === false и $http_response_header е празен. и от страна на А виждам следното: 200 OK, което очевидно е грешно. Титла: Re: Http грешка при външно include? Публикувано от: VladSun в Apr 16, 2010, 15:47 Предполагам 503 - Service Unavailable
В http://php.net/manual/en/function.header.php има даже по-подробно описание: Код
Титла: Re: Http грешка при външно include? Публикувано от: VladSun в Apr 16, 2010, 15:49 Това също е интересно:
http://www.askapache.com/htaccess/503-service-temporarily-unavailable.html Титла: Re: Http грешка при външно include? Публикувано от: Naka в Apr 16, 2010, 15:51 Е ама много си бърз [_]3, не успях да си допиша поста. Мерси. Точно към това 503 Service Unavailable се бях насочил, но се чудя дали няма да сгреша нещо. Грешката трябва да е такава че за Гоогле да означава и "посети ме отново".
Титла: Re: Http грешка при външно include? Публикувано от: VladSun в Apr 16, 2010, 15:56 Видя ли линка във второто ми мнение?
Титла: Re: Http грешка при външно include? Публикувано от: Naka в Apr 20, 2010, 11:39 Да прочетох го. Направих го така:
Код
Имам няколко въпроса: Научавам, че много хостинги забранявали allow_url_fopen. Вярно ли е това? Понеже имам намерение да го качвам някъде, как стои въпросът със allow_url_fopen в БГ? Препоръчван БГ хостинг? allow_url_fopen може да се отбранява само чрез php.ini. Не може да се контролира чрез ini_set(allow_url_fopen, '1') нито чрез .htaccess Какво би трябвало да бъде времето за Retry-After: 120. Малко 120 секунди или Голямо - 2 часа. Виждам противоречиви примери. Или изобщо не трябва да се задава? Титла: Re: Http грешка при външно include? Публикувано от: VladSun в Apr 20, 2010, 11:54 За allow_url_fopen - вярно е - опитват се да ограничат евентуалните пробиви в сигурността до LFI (иначе става RFI) - не знам кои хостинг компании го правят и кои не - обади им се :)
За Retry-After - ти си преценяваш :) Би трябвало да можеш да определиш колко дълго вторият сървер ще е недостъпен. Титла: Re: Http грешка при външно include? Публикувано от: vm13 в Apr 20, 2010, 14:07 Научавам, че много хостинги забранявали allow_url_fopen. Така и трябва. За да си сигурен, че този код ще работи на всеки сървър, насочи се към cUrl, вместо file_get_contents. Титла: Re: Http грешка при външно include? Публикувано от: Naka в Apr 20, 2010, 15:04 Научавам, че много хостинги забранявали allow_url_fopen. Така и трябва. Това е едно голямо глупаво оправдание от страна на хостинг компаниите. Ами ако искам да правя поразии, не мога ли да ги направя по същият начин с CURL? Ами отварянето на URL с параметри чрез браузер какво е? Да не би да е нещо по различно от file_get_contents('http://www.example.com/.... За CURL знам и съм го правил, Само дето се получава малко по дълъг код. Причината поради която използвам file_get_contents() е че ми трябва много кратък код. Титла: Re: Http грешка при външно include? Публикувано от: VladSun в Apr 20, 2010, 18:00 Научавам, че много хостинги забранявали allow_url_fopen. Трябва да е инсталиран curl все пак ;) Титла: Re: Http грешка при външно include? Публикувано от: vm13 в Apr 20, 2010, 22:11 Цитат Трябва да е инсталиран curl все пакСпоред мен, вероятността на shared hosting да има curl е много по-голяма, от колкото да му е разрешено да отваря отдалечени адреси. Друг е въпроса, че за целта, за която иска да го използва, curl е ужасно бърз! Ако търси универсално решение, кода няма да е кратък. Титла: Re: Http грешка при външно include? Публикувано от: VladSun в Apr 21, 2010, 00:14 Не оспорвам нищо, което си казал в това мнение. Оспорвам твърдението "ще работи на всеки сървър" по отношение на curl. Мисля, че си ме разбрал, както и аз разбирам твоите доводи - т.е. на едно мнение сме.
По отношение на използването на file_get_contents('http://www.example.com/....') - нищо лошо няма, но тази функция е под общото ограничение на allow_url_fopen директивата, която също така управлява include/require "..." - там точно се прявява LFI/RFI, и точно срещу това използване се "защитават" хостинг доставчиците. |