Autor | Zpráva | ||
---|---|---|---|
DC19 Profil * |
#1 · Zasláno: 26. 6. 2015, 00:00:23
Zdravím pánové (i dámy, případně).
Brouzdal jsem diskuzemi a zkoušel najít podobný topic, abych zbytečně neduplikoval vlákna již vyřešená, ale nepodařilo se mi najít problém který by souvisel s mým, proto se omlouvám, za vlákno další. Mám ve struktuře indexu kód v tomto znění.. <? if(!(isset($s))){$s="uvod.php";} if(!(is_file($s))){$s="chyba.php";} include ("$s"); ?> ..kdy veškerý obsah stránek chci mít nasměrovaný v divu obsahujícím tento include požadavek. Poprvé v životě se mi ovšem stalo, že mi include () ignoruje nahrané soubory na FTP. Otevírá se po kliknutí na odkaz pouze a jedině jeden soubor - uvod.php (+ jeho rozvětvené části, jako - uvod.php&podsekce=abcd a tak dále). Všechny ostatní odkazy se neotevřou (jakoby neexistovaly, přitom fyzicky na FTP jsou) a místo nich najede indexový uvod.php .. Jsem z toho v pravdě jelen, a netuším, čím to může být. Dříve při vytváření jiných webů mi vše fungovalo tak jak by mělo, za použití výše uvedeného include. Vím, že moje otázka na radu/tip je asi troufalá, no nemá někdo prosím podobnou zkušenost a nevěděl by, čím to? Děkuji moc za cokoliv co by mě dokázalo ulehčit od bolehlavu :-) Lukáš. PS: kromě indexu, uvod.php a příslušných CSS stylů mám nahráno navíc jen 2 soubory o nevelkém obsahu (dotaz.php a chyba.php - kdysi sloužíval jako ochrana proti php injekci, což teď nedělá, díky problému s includem) a orientovat se tedy v případném "co a jak by mohlo být špatně" by nemusel být problém, ale kde je zakopaný pes, nevím. Dál se bez funkčního includu nepohnu, zdá se. Zkoušel sem i odstranit z těchto souborů vše co by nemuselo být in, a nechat tam jen text blabla, ovšem include nereaguje. |
||
juriad Profil |
Kde se bere proměnná $s? Není náhodou problém s Nejčastější potíže s PHP (FAQ)?
Naopak, pokud se problém netýká přímo problému někoho jiného, ale jde o tvůj, je žádoucí vytvořit vlastní vlákno. Opraven odkaz (regex zřejmě bere otazník jako součást odkazu, i když je ve fragment časti). |
||
DC19 Profil * |
#3 · Zasláno: 26. 6. 2015, 00:53:43
Ať koukám jak koukám, proměnná $s je v kódu zmíněna jen u této funkce, nikde zvlášť definována není, a to jsem se díval i na starší projekty, kde vše funguje jak má. Že by byl problém v tom? Pak ale je nasnadě ptát se "nahlas" proč to v minulosti běželo, a nyní chyba.
|
||
Davex Profil |
#4 · Zasláno: 26. 6. 2015, 01:08:53
DC19:
„Pak ale je nasnadě ptát se "nahlas" proč to v minulosti běželo, a nyní chyba.“ Možná proto, že se změnila konfigurace nebo verze PHP na webhostingu. Doporučuji to opravit podle PHP FAQ. |
||
Joker Profil |
DC19:
Include neignoruje nahrané soubory. Vypište si obsah $s a skoro určitě tam bude uvod.php. Jinak uvozovky se dělají jen kolem řetězců a ne kolem proměnných a include není funkce, ale příkaz, takže jsou tam zbytečné i ty závorky. Možné vysvětlení je, že skript spoléhá na register_globals a hosting ho buď vypnul, nebo přešel na PHP 5.4+, kde už register_globals vůbec není. - Jak píší kolegové. |
||
Časová prodleva: 9 let
|
0