Valery's Mlog

Mindlog of a Freak
December 21st, 2004 by Valery Dachev

PHP с IIS+Internet Explorer

Комбинацията по-горе за мен се превърна в истински рай.. опс… РАЙД. Както се оплаках вече, хостингът ми е на Windows с Microsoft/IIS-6.0 и PHP 4.3.9 (което предвид сериозните проблеми в сигурността му, скоро ще сменят). Оказва се, че в това нещо предефинираната променлива $_SERVER[‘REQUEST_URI’] не съществува (или поне е изключена от някъде). И да рече човек, че няма как PHP модулът да си я получи от самото IIS, но явно има, след като променливи като $_SERVER[‘SCRIPT_NAME’] и $_SERVER[‘QUERY_STRING’], от които реално може да се сглоби това, което $_SERVER[‘REQUEST_URI’] е всъщност. Така и направих. Само където никъде в документацията не пише, че на въпросната предефинирана променлива не мога да разчитам.

Не ми стигна и това проблемче, ами цял следобед се опитвам при натискане на бутон за изпратя човечеца на някоя страница и тази страница да го върне обратно там, от където е дошъл (след като си свърши работат). Това лесно и приятно става със $_SERVER[‘HTTP_REFERER’] (защото обикновено browser-ите го подават коректно). Работи перфектно с Mozilla Firefox, но с Internet Explorer – не ще. Просто тази променлива се дефинира за произволни PHP скриптове. Тестовите скриптове, които написах, сработиха и нормално си показаха съдържанието на променливата. Тези променливи обаче се оказват недефинирани даже в началото на моите скриптове. И то само с Internet Explorer. В абсолютно недоумение съм защо тази недефинираност я има само с този браузът и само в някои скриптове. Хванал съм се за главата… И утре ще продължа…

Остават и глупостите с дублирането на системата, защото HTTP и HTTPS сървъра не могат да са с един и същи web root. А това отново е следствие от особеностите (дървенията) на hosting системата и факта, че се ползва общ HTTPS хост.

Накуп на всичко PHPMyAdmin се оплакваше от липса на iConv и то само с моята Mozilla Firefox. Интересно на какво още ще попадна ?

Comments

3 Responses to “PHP с IIS+Internet Explorer”
  1. Мдамм…. открихме и проблема за $_SERVER[‘HTTP_REFERER’] – просто препращането става с JavaScript relocation, а тогава Internet Explorer отказва да изпрати въпросната променлива. Тъпичко.

  2. Валери, не е само при този случай.
    Преди година тествах същото нещо за подобен сценарий.
    Оказа се, че IE(мисля, че версия 5.0 или 5.5) не дефинира HTTP_REFERER ако идва от https адрес.
    Само информативно да знае??. :)
    Не знам дали са го оправили в 6.0 или идеологично е така??!!!

  3. Да ти кажа, наскоро писах дена система, където разплащанията ставаха с временно преминаване към сайта на card processor-а. Там пък интересното е, че заради някакво писание в глупав MS Knowledge Base по неясни за мен причини, искат препращането да става от HTTP адрес. Т.е. трябва??е целия процес на разплащане, който при мен върви по HTTPS, да се прекъсне, да се прехвърли на една страница на HTTP, за да отиде при card processor-а и там обратно на HTTP и пак HTTPS. Та тогава май нямах проблеми с REFERER при препращането от HTTPS.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: