cesta v menu.php, include

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
preclik
Level 2.5
Level 2.5
Příspěvky: 277
Registrován: říjen 07
Pohlaví: Nespecifikováno
Stav:
Offline

cesta v menu.php, include

Příspěvekod preclik » 06 led 2012 12:11

Ahojte,

Nevím jestli to teď dobře vysvětlím co přesně potřebuju ale zkusím to. V příloze jsou dva obrázky. Na jednom je znázorněno umístění souborů - konkrétně pastviny.php a menu.php a na druhém je část kodu v menu.php. Soubor menu.php includuju v pastviny.php a dalších.menu.php je takové univerzální menu pro všechny.a jde mi o to jestli se to nedá vyřešit nějak jinak než absolutní adresou. Mám víc souborů v různém vnoření podobných pastviny.php. Nevím jak to vymyslet aby v souboru menu.php byli univerzální cesty ke všem ostatním. Jestli to jde teda jinak než absolutně. Potřebuju aby to co je v menu bylo přístupné v každém souboru podobném pastviny.php.

Nevím totiž přesně jak to funguje. Jestli se cesta hledá od menu.php, nebo až od toho php kde je to includováno.
Přílohy
cesta.jpg
polozka.jpg

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: cesta v menu.php, include

Příspěvekod CZechBoY » 06 led 2012 12:51

co ti vadí na absolutním odkazu?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Ellrohir
nováček
Příspěvky: 49
Registrován: prosinec 11
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: cesta v menu.php, include

Příspěvekod Ellrohir » 06 led 2012 14:07

CZechBoY: hm...co třeba přesun webu na jinou doménu bez nutnosti prolejzat kód a opravovat linky?

preclik: hint, který by měl tohle vyřešit - dvě tečky ".." značí "rodičovský adresář" (ono to v těch total commanderech a salamandrech není "jen tak" :)) - pomocí tohohle můžeš skákat o libovolně úrovní výš ;)

takže v tvém případě (pokud se dobře dívám)

Kód: Vybrat vše

a href="../pastviny/pastviny-jaro-2009/pastviny.php"



druhá možnost - ale vcelku zbytečná, když jde tohle - by byla pamatovat si někde v jedný php proměnný současnou kořenovou adresu webu a pak každou adresu psát relativně od kořene a přidat před ní tuhle php proměnnou a tím dostat sice absolutní cestu, ale editovatelnou jednou změnou hodnoty php proměnný :smile: tak jsem to dělal, dokud jsem se nedozvěděl o kouzelných dvou tečkách :D
"Zprávy mají velikost, třeba i nulovou, a mají nějaký význam, třeba i žádný."

Luboš
Tvůrce článků
Level 5
Level 5
Příspěvky: 2038
Registrován: květen 05
Pohlaví: Muž
Stav:
Offline

Re: cesta v menu.php, include

Příspěvekod Luboš » 06 led 2012 15:11

Pokud chceš mít v nějaké proměnné úplnou cestu k startovacímu scriptu, tak použij třeba toto (používal jsem to ve všech svojich webových aplikacích):

$v_server_url = $SERVER_URL;
$v_path_info = $PATH_INFO;
$v_path1 = strrchr($v_path_info,'/');
$v_path = substr($v_path_info,0,strlen($v_path_info) - strlen($v_path1) +1);
$v_app_path = $v_server_url.$v_path;
Potřebujete jinou pomoc při řešení problému ve Windows 10? Stáhněte si soubor Win10-finty.

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: cesta v menu.php, include

Příspěvekod CZechBoY » 06 led 2012 18:29

nechápu jak může bejt problém při změně domény..
mám <a href="/wtf/cs/hej/gej/popis.php">x</a> na doméně wtf.tld a chci přemístit na xD.tld tak to snad pude ne? mám vyzkoušeno jen na 10 doménách tak nevim no
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Ellrohir
nováček
Příspěvky: 49
Registrován: prosinec 11
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: cesta v menu.php, include

Příspěvekod Ellrohir » 06 led 2012 21:19

co třeba proto, že tohle ti nesežere skript, kterej není umístěnej v kořenovým adresáři? protože bude tu relativní cestu brát "od sebe"
"Zprávy mají velikost, třeba i nulovou, a mají nějaký význam, třeba i žádný."

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: cesta v menu.php, include

Příspěvekod CZechBoY » 06 led 2012 21:27

s lomítkem na začátku asi těžko..
UTFG
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Ellrohir
nováček
Příspěvky: 49
Registrován: prosinec 11
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: cesta v menu.php, include

Příspěvekod Ellrohir » 06 led 2012 23:24

copak UTFG...já si na to dokonce pustil Apache a napsal zkusmo skripty, abych si ověřil svou "teorii" než jsem to postnul sem...jenže jsem si neuvědomil, že jsem ty skripty dal o adresář níž než do kořene :roll: takže už neříkám nic...radši :smile:
"Zprávy mají velikost, třeba i nulovou, a mají nějaký význam, třeba i žádný."

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: cesta v menu.php, include

Příspěvekod CZechBoY » 06 led 2012 23:30

tak je rozdíl taky Windows a Linux víš.. linux cesty vždycky začínají lomítkem, windows cesty zase začínají písmenem jednotky
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
preclik
Level 2.5
Level 2.5
Příspěvky: 277
Registrován: říjen 07
Pohlaví: Nespecifikováno
Stav:
Offline

Re: cesta v menu.php, include

Příspěvekod preclik » 07 led 2012 03:24

Luboš píše:Pokud chceš mít v nějaké proměnné úplnou cestu k startovacímu scriptu, tak použij třeba toto (používal jsem to ve všech svojich webových aplikacích):

$v_server_url = $SERVER_URL;
$v_path_info = $PATH_INFO;
$v_path1 = strrchr($v_path_info,'/');
$v_path = substr($v_path_info,0,strlen($v_path_info) - strlen($v_path1) +1);
$v_app_path = $v_server_url.$v_path;


díky a co to přesně znamená.jestli by nebyl nějakej popis ať si to tam nehodím a nevím vlastně co to dělá..jako absolutní adresa mi nevadí ale chtěl jsem to pořešit nějak líp.jestli by nebyl třeba nějakej skript kterej by zjistil tu absolutní adresu po něco.třeba _skript_/fotky/pastviny/pastviny.php.._skript_/pastviny/2009/pastviny.php....nemůžu to dát relativně protože tu cestu to bere zřejmě od toho souboru kde je to includovano a vždycky to není třeba ../../ ale ../../../ více vnořeno.takže by to menu pak nepasovalo na všech stránkách, kde by bylo zobrazený.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: cesta v menu.php, include

Příspěvekod faraon » 07 led 2012 10:17

CZechBoY píše:tak je rozdíl taky Windows a Linux víš.. linux cesty vždycky začínají lomítkem, windows cesty zase začínají písmenem jednotky


Tohle bych ještě rozvedl. Kdysi dávno ve Windows jsem měl disk rozdělený na oddíly, takže byl zvlášť systém a zvlášť data. Dnes už celkem běžná věc, ale ve Win98 se to ještě moc nedělalo :wink: Takže disk C: byl podle svého určení pojmenovaný SYSTEM, disk D: byl zase pojmenovaný DATA, aby se to nepletlo, žejo.
Dokumenty jsem měl také přesměrované na to Déčko, a v nich adresář Web, kde jsem si dělal stránky. Pro příklad dejme tomu potřebuji udělat odkaz na soubor, který je v adresáři Temp na Céčku. Ve Windows by ty cesty vypadaly takhle:

D:\Dokumenty\Web\mmm\index.html
C:\Temp\pokusy\obrazek.jpg


Asi si dovedeš představit jak velké přepisování by znamenala jakákoliv větší úprava těch stránek, třeba při přesunu některých souburů do lepšího umístění.

Windows tenhle způsob podědil z DOSu, a ten to zase obšlehl z CP/M ze sedmdesátých let, kdy jsi měl jednu velkou bednu s osmibitovým počítačem s výkonem menším než má tvoje dnešní klávesnice (a operační pamětí "velkou" jen pár desítek kilobajtů), a každá disketová jednotka byla extra bedna připojená extra kabelem (maximálně čtyři). Aby se nepletly, označovaly se buď čísly nebo písmeny. Prostě středověk.
Naštěstí už pár desetiletí před Windowsem (a také před tím CP/M) mnohem chytřejší lidé vymysleli Unix, kde na to šli logicky, tím pádem úplně opačně. Použili jediný adresářový strom začínající kořenem / (nazvaným root), a disky a všechna další úložiště do něj prostě připojili jako větve-adresáře.
Takže když jsem jednoho dne konečně nainstaloval Linux a starý disk použil jako sekundární, měl jsem stará data na těchhle cestách:

/media/hdb2/Dokumenty/Web/mmm/index.html
/media/hdb1/Temp/pokusy/obrazek.jpg


Když se podíváš na URL jakéhokoliv webu, máš tam něco jako http://mujweb.com/, a právě to lomítko na konci je kořen tvého adresářového stromu, z nějž můžeš vypsat absolutní adresu bez ohledu na to, v jak hluboce zanořeném podadresáři se ten obsah nachází! Název serveru nebo webu v tu chvíli vůbec k ničemu nepotřebuješ.

Takže pokud z té mojí stránky na adrese /media/hdb2/Dokumenty/Web/mmm/ budu odkazovat na obrázek umístěný sice fyzicky na jiném disku, ale logicky jen v jiné adresářové větvi, můžu použít buď relativní cestu vycházející z aktuálního adresáře:

../../../../hdb1/Temp/pokusy/obrazek.jpg

a nebo absolutní cestu vycházející z kořene:

/media/hdb1/Temp/pokusy/obrazek.jpg

Záleží co se ti líbí víc, nebo co bude kratší, nebo spíš přehlednější. Přitom ta první možnost by se ve Windows vůbec nedala udělat, právě kvůli umístění na jiném disku, zatímco tomuhle systému je úplně jedno ve které škatuli na kterém kolečku se ta data vrtí, protože se dá tímhle způsobem odkazovat odkudkoli kamkoli.
V původním DOSu dokonce adresáře vůbec nebyly, jen dvě disketové jednotky! Všechno ostatní co tam postupně přidávali je okopírované nebo nepříliš dobře napodobené podle Unixu.

Jen pro zajímavost, v unixových systémech je jako adresář nebo soubor připojené úplně všechno, nejen disky, ale také zvuková nebo grafická karta, klávesnice, generátor náhodných čísel, a ve speciálních adresářích najdeš třeba soubor obsahující celou operační paměť, a dokonce i procesor! To ale neznamená že by byly někde uložené, jen se tak zobrazují.
Kromě toho adresáře se také považují za soubory. Prostě, všechno je soubor... :lol:
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: cesta v menu.php, include

Příspěvekod CZechBoY » 07 led 2012 15:47

tak jasně že je rozdíl Win a Linux, ale existuje server Apache, kterej umí miliony nastavení na přepisy a nějakej "programátor či webdesigner" nepotřebuje vědět jaký všechny disky jsou v tom serveru
už vidim jak na webu je odkaz C:\web\index.html :D to je prostě blbost
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů