Autor Zpráva
Tragedy
Profil
Zajímá mě chování PHP scriptu includovaného z jiného serveru.

Příklad: Na serveru seznam.cz bych měl include PHP scriptu zobrazujícího třeba nějakou galerii obrázků. includovaný soubor a obrázky jsou však umístěny třeba na serveru pablb.cz

Takže...
1/ Jak se ten script bude chovat a který server ho bude zpracovávat.
2/ Co relativní cesta k souborům? Bude nastavena na seznam.cz nebo na pablb.cz?
3/ Který server bude pracovat s SESSION?

díky za objasnění této záhady :)
WertriK
Profil
add 1) když nad tím logicky zauvažuju, tak mi vychází že se načte výstup php, tzn. php se provede na servru kde je umístěný
- Bylo by dost drsné kdyby šlo normálně načíst php z jiného servru do proměnné že ? ;)

add 2) dle mě pablb.cz ;)
add 3) pablb.cz
Tragedy
Profil
Výborně, pokud to skutečně funguje takto, tak to řeší skoro vše co potřebuji. Budu si tedy držet palce, aby to tak bylo :))
WertriK
Profil
:)
k
Profil *
1) includovat script ktery se nachazi (fyzicky) na jinem serveru nelze.
2) viz 1
3) viz 1

-- lze (pomoci fopen(),file(),fsockopen()) ziskat vystup php scriptu. Relativni cesty si zpracuje dotazovany script(pokud je zpracovava), pokud tim minis to ze ti dotazovany script vrati relativni odkazu na dalsi stranky tak to si musis osetrit sam.
djlj
Profil
includovat script ktery se nachazi (fyzicky) na jinem serveru nelze.
Jakto? S povoleným allow_url_fopen jde.
k
Profil *
djlj
Bral jsem to z hlediska toho prikladu (seznam.cz). To by oba tyto servery museli byt tve abys mohl zarucit ze budou mit povolenou tuto direktivu.
djlj
Profil
k
Proč oba? Zkoušels to vůbec někdy?
http://vsevjednom.cz/test.php
k
Profil *
Oba ne. Kua nechytej me za slovo:)
Jen ten dotazovanej. Includovat jiny web jsem nezkousel je to celkem prasarna.
Ty ten seznam includujes?
djlj
Profil
Ty ten seznam includujes?
Jistě ;). http://cz2.php.net/include/ - Pokud jsou v PHP povoleny "URL fopen wrappery" (což tak implicitně je), můžete specifikovat soubor ke vložení pomocí URL (přes HTTP) namísto lokálního umístění.
Joker
Profil
Tragedy
Viz http://cz.php.net/include/

Podle mě je to vcelku prosté:
Na serveru A zavolám include() souboru na serveru B. Otevře se HTTP spojení na server B a vrátí se ten soubor. Protože jde o normální HTTP spojení, webserver na serveru B před odesláním zpracuje server-side skript ve svém kontextu. Proběhne to IMHO stejně, jako kdyby daný soubor chtěl webový prohlížeč, umístěný na počítači A. Po zpracování se výsledek toho souboru pošle na server A, kde se ten výstup zpracuje PHP interpreterem serveru A; pokud tedy ten výstup obsahuje otevírací značku PHP a za ní PHP kód, tento kód se zpracuje na serveru A.

Takže:
- Pokud je to soubor zpracovávaný serverem (třeba .php), zpracuje se serverem B, pak odešle a ten výstup se zpracuje serverem A.
- Pokud nejde o soubor zpracovávaný serverem (třeba .inc), pošle se soubor na server A a zpracuje serverem A v kontextu serveru A.

Každopádně server B nebude mít přístup ke kontextu, sessions a tak ze serveru A. Pokud je potřeba nějaké proměnné předat serveru B, je potřeba je předat normálně metodou GET.

Takhle si myslím já, že to funguje.
Joker
Profil
djlj
Jasně, podstatné je to (přes HTTP). To znamená, že skript před odesláním projede přes "svůj" webserver, takže ke zdrojáku toho skriptu se takhle nedostanu.
k
Profil *
:) No to jsem zas o neco chytrejsi.
Kazdopadne ja osobne radsi zustanu(doporucuji) u fsockopen()
djlj
Profil
Joker
Já to vím (vyjádřil jsem se někde opačně?), spíš tvou odpověď směruj pro k. Jen se mi to tu nechtělo psát; je to přece na každé druhé stránce o include a v této diskusi to bylo nejmíň 100x.
k
Profil *
Joker
Ja to vim take. Spis odpoved smeruj Tragedy:)
Tragedy
Profil
Safra tak to se to tady nějak zamotalo. Takže platí pořád to co je napsaný v té první odpovědi? :)
Toto téma je uzamčeno. Odpověď nelze zaslat.