Starší komentáře ke článku: PHP - šetříme si práci příkazem include v PHP
Zpět na článek | Úvodní stránka Interval.cz
Datum vložení: 21.7.2000 9:57:00
Často se o tom píše a vy to ještě dáte do seriálu. Každý začátečník by si měl zafixovat, že koncovka *.inc je nebezpečná a narozdíl od *.php jí server vrátí nepřeloženou... a tím pádem pokud přistupujete do databáze tak vidí vaše heslo a ostatní dokumenty...
Datum vložení: 21.7.2000 15:21:00
Pokud jste dobre cetl clanek, tak neco v tom smyslu tam je. Koncovka .inc je ovsem naprosto bez problemu, pokud vkladate kusy HTML, k tomu se kazdy dostane tak jako tak.
Datum vložení: 21.7.2000 21:53:00
Jasně článek jsem četl, ale myslím si, že člověk by si mě zafixovat koncovku .php a to samé je u .asp. Nevim to uz je vec názoru. Ulehci se tim serveru, kdyz nebude muset prekladat tolik veci, ale jednou se clovek upomene a uz je kolikrat pozde.
Datum vložení: 21.7.2000 21:58:00
Asi to hlavne zalezi na tom, jak ty aplikace delate... ja vetsinou vystacim s jednou stranou index.php, dle potreby do ni includuju obsah (at uz je ulozeny primo jako kus HTML nebo v jinych formatech, ktere je treba nejprve zpracovat). Samotny PHP kod je uz komplet v teto strance, takze ho nepotrebuju includovat. Tak je bezpecnost maximalni a pripony monu pouzivat libovolne :-).
Datum vložení: 17.2.2008 18:59:42
Děkuji za návod, přesně tohle jsme potřebovala rozhodnout, co kam vkládat :)
Datum vložení: 23.7.2000 4:37:00
Máte sice pravdu, ale kolik začátečníků naprogramuje svoje stránky jako vy, bez nejmenší chybky? :o)
Datum vložení: 25.7.2000 1:58:00
Souhlasím s tím, že přípona .inc je relativně nebezpečná. Mělo by se používat .php . Mimochodem doporučuje to i Kosek. Je pravda, že .inc je historicky zazita pripona, u ktere je jasne, o co jde, ale to je maly argument. Yuhu
Datum vložení: 25.7.2000 9:35:00
Dobry den, autor ale ve clanku nedoporucuje pouzivani koncovky .inc a doporucuje pouzit PHP, tak o co vam jde? :o)
Datum vložení: 29.7.2000 23:24:00
Ok, teď to vidím, spletl jsem se.
Datum vložení: 25.7.2000 15:19:00
Tomu argumentu nerozumim, navic ani ja jsem nikdy nic nenaprogramoval bez nejmensi chybky, ladeni zabere vetsinou zhruba tolik casu jako samotne psani kodu. Pokud neincludujete PHP skripty, nevidim v pouzivani pripony .inc nic zavadneho. Pokud skripty includujete, pak je v clanku napsano, ze se ma pouzivat .php
Datum vložení: 25.7.2000 21:42:00
No, ale je to tam napsáno jen tak bokem, jako chytří říkají a my víme své... Nechci Vás odradit od dalšího psaní, já Váš názor uznávám, ale řídím se svým vlastním a všichni víme jak to dopadlo, když se všichni řídili jedním... Byla to pouze připomínka. Já osobně jsem pro PHP, ale někdo pro INC. Je to jako mezi optimismem a pesimismem, koncervativci a liberály... Druhá věc je, že programátor profesionál "ladí", ale nadšenec -amatér je rád když skript po dvouhodinách urputného boje se středníky a čárkami zprovozní...
Datum vložení: 27.7.2000 16:49:00
Osobne bych .inc nezatracoval Hlavne neni nic lehciho nez nastavit .inc jako koncovku php! Ja pouzivam .inc pro lepsi orientaci ve vetsich projektech, kde hned vidim, ze soubor obsahuje pouze funkce, neni to spustitelny skript. Pravda ze take nemam .inc zaregitrovanou jako php, ale pouzivam soubory jako soubor.inc.php
Datum vložení: 28.7.2000 0:51:00
Ja to resim podobne a to ze udelam adresar zvlast pro include soubory /inc/ a do něj vsechny soubory ukladam pod *.php. Nastavit *.inc jako *.php je uz veci serveru...
Datum vložení: 25.6.2002 15:09:15
Tato metoda se mi zdá nejlepší, ale nevim jak to zprovoznit :o) . Když tam dám $filename = $id . "inc/.php"; tak to nefunguje. Zkousel jsem to mnoha jinými způsoby ale bezvysledne. Prosim poradte. PS : Nenadavejte mi prosim, pravě sem se PHP zacal ucit :o)
Datum vložení: 10.7.2002 14:58:56
$filename="inc/" . $id . ".php";
Datum vložení: 13.11.2003 12:51:09
Třeba já. O koncovce .inc sem vůbec nevěděl a když používám include, vkládám přímo kusy kodu php v php souboru. Takze kdyz si to stejne nekdo nacte, nanejvys se mu ukaze nesmyslny vysledek
Datum vložení: 27.7.2000 23:57:00
Jakozto programator amater jsem si kdesi stahnul skript na rozdeleni vysledku dotazu do databaze na skupiny po x. Uviselo mi to na tom, ze prohlizec hlasi chybu na radku, kde includuju "rozdelovaci" skript i s parametry. Pokud parametry vypustim, je to OK. Muzete mi nekdo poradit, kde je problem?
Datum vložení: 29.7.2000 23:29:00
Chyba je pravděpodobně v souboru php3.ini, který by měl být ve c:\windows nebo c:\winnt. Někde se tam nastavuje include path nebo tak něco a je defaultně nastavená na nějaký nesmysl. Stačí na začátek toho řádku dát středník. Myslím, že je to include path, ale jsem omylný, takže se to může jmenovat nějak podobně.
Datum vložení: 31.7.2000 21:40:00
No tak tam ten parametr nedavejte :-). Vzdyt ten includovany skript se stane soucasti hlavniho a ma normalne k dispozici vsechny promenne. Tzn. staci pred includovanim priradit potrebne. Alespon ja to delam podobne ve svych aplikacich.
Datum vložení: 27.7.2001 14:51:02
Mám dva dotazy:
1. Nemáte, prosím nějakou informaci, jak se chovají vyhledávací a indexovací roboti, když narazí na stránku jejíž adresa je <I>index.php?id=ofirme</I> (viz druhá metoda popisovaná v článku)?
V nějaké diskuzi jsem četl (pravděpodobně to bylo i na Intervalu), že tyto vyhledávací stroje si neumí poradit s '?' v názvu cesty. Znamenalo by to pak, že takto "naincludované" stránky by nebyly těmito nástroji dohledatelné a tudíž ani potencionální návštěvníci, kteří používají např. fulltextové vyhledávání (www.quick.cz aj.) by o existenci těchto stránek neměli ani potuchy?
2. Ve druhé metodě se zároveň popisuje, pokud neistuje soubor <I>$filename = $id . ".inc"</I>, vkládá se podmínkou soubor <I>"uvod.inc"</I> - viz následující kód:
...
<I>else:
include "uvod.inc";
endif;</I>
...
Výsledkem je dle očekávání jednak natažená úvodní stránka, ale zároveň v adresním řádku se objeví:
<I>index.php?id=xxx</I>,
kde xxx je jméno neexistujícího souboru, místo očekávaného:
<I>index.php?id=uvod</I>.
Existuje nějaká funkce, která "vnutí" klientovi do adresního řádku "správnou" adresu?
Děkuji za případné odpovědi
Datum vložení: 6.9.2001 23:14:50
Header("Location: <a href='http://server:port/index.php?include=uvod");' target='_blank'>http://server:port/index.php?include=uvod");</a>
...
po pouziti Header je vhodne zavolat exit;, nektere verze php skript neukonci a jedou dal...
Datum vložení: 10.4.2002 16:30:31
Všiml jsem si jedné věci: když vkládám pomocí PHP (include) HTML stránku - typicky menu.html do tabulky v index.php, tak po zobrazení zdrojovýho kódu v prohlížeči se tam dvakrát objevuje HTML definice (<html> <head> </head> <body> </body> </html> )
Chápu, že to v sobě maj obě stránky (index.php i menu.html) a že je to vlastně správně, jen nevím jestli to něčemu nevadí. Taky můžu z tý vkládaný stránky (menu.html) ty tagy vyhodit a prohlížeč to zobrazí taky.
Jen nevim, co je správně, zda tam nechat ty tagy dvakrát nebo je jednou vyhazovat, nebo jestli to je úplně fuk.
Datum vložení: 10.4.2002 17:15:09
Správně je pochopitelně ty tagy v jednom ze souborů vyhodit, výsledná složenina by měla být validní HTML stránka, tj. začínat tagem <html>, končit </html>, přitom každý z tagů tam má být právě jednou. To, že to většina prohlížečů zobrazí tak jako tak, ještě není důvod to dělat nekorektně.
Datum vložení: 25.4.2002 21:23:10
si rikate o hack. Co tam naprosto chybi, tak jakakoli kontrola a osekani znaku, pritom by bohate stacilo napsat eregi_replace("[^a-z0-9_-]*","",$include); Lidi jsou totiz koumaci, a vzdycky se da najit zpusob, jak i to .'inc' oblbnout...
Datum vložení: 3.6.2006 23:29:30
a načo je ten hack (resp. oblbovanie .inc) som z príspevku nepochopil. Si mohol aspoň napísať k čomu to je.
Datum vložení: 30.6.2002 18:31:55
Proč mi to při "druhé možnosti" píše stále error v řádku kde se zadává proměná? Prosím pomoc, už jsem skoro rozmlátil počítač.
Datum vložení: 14.7.2002 14:58:40
Ako by som mal modifikovat skript, ked chcem volat jednotlive inc subory v inom adresari, napr ak mam inc/subor.inc a chem ho zavolat index.php?=subor
Dakujem
Datum vložení: 23.7.2002 12:48:02
Já jsem to řešil takto:
$obsah = "data/" . $id . ".html";
if (File_Exists ($obsah)):
include $obsah;
kde data je jméno adresáře s html soubory. Zároveň jsem se ale dostal do problému, kdy data kvůli jejich množství rozděluji do více adresářů. Nezbylo mi než přidat další proměnnou se jménem adresáře.
Datum vložení: 16.3.2003 17:32:19
Používám místo
$obsah = "data/" . $id . ".html";
tohle
include ("$id.php")
i pak staci je ´blabla.php?id=datel
Datum vložení: 5.8.2003 23:28:07
Možná je to špatně, ale já používám stejně jako v html obyčejné:
<a href = "index.php?id=adresar/soubor.inc">
a zatím je to v pohodě. Počítám, že podobně by to mělo fungovat i s případným podadresářem a pak není problém si nastavit proměnné s cestou k souborům... Pokud je to ale špatně, napište mi prosím proč, jsem začátečník...
Datum vložení: 5.7.2004 12:01:37
Zdravim zajimalo by me jak bude vypadat odkaz nebo co mam zmenit na skriptu aby to fungovalo i pri register globals=off. Udelal jsem to tim druhym popsanym zpusobem a to tak ze mem jednu hlavni stranku index.php vytvorenou pomoci tabulky a do ni chci do hlavni bunky includovat dalsi stranky. Takhle mi to proste nejede. Tak dekuji za reakce.
Datum vložení: 22.7.2004 11:36:27
mohlo by to byt takto nejako, ale nie je to odskusane:
záhlaví
levý sloupec - standardní navigace
$filename = $_GET['id'] . ".inc";
if (File_Exists ($filename)):
include $filename;
else:
include "uvod.inc";
endif;
patička
Datum vložení: 7.10.2004 9:14:39
Chcel by som ti ponúknuť spoluprácu.
Datum vložení: 30.3.2006 12:57:54
[b]No hej, ja som si nad tym tez lamal hlavu, ze co to sem nepisali, ked ten script ani nefunguje :D ale nakoniec som to tiez vyriesil:[/b] <?php $menu=$_GET['menu']; if (file_exists("$menu.php")) include("$menu.php"); else include("uvod.php"); ?> [b]pre uplnost, potom uz len napr.:[/b] <a href=" index_sk.php?menu=novinky ">... [b]Kde novinky.php je subor na vlozenie. Hoci ani toto nie je nabezbecnejsie riesenie, ale davat ako else echo "stranku som nenasiel" ...tak take ja nemusim :P[/b]
Datum vložení: 23.3.2009 15:43:29
díky moc za to GET bez toho mi to neběželo. :-)
Datum vložení: 30.9.2004 19:59:55
Nevíte někdo prosím vás, jak jedním odkazem změnit dvě include najednou (a ne tedy pouze jeden)?
Datum vložení: 1.10.2004 8:55:16
Tomuto dotazu nerozumím. Příkaz include sĺouží o vkládání textu ze souboru do těla scriptu. Jinými slovy příkaz nahradí sám sebe obsahem vkládaného souboru. Je jasné, že vlastní odkaz na soubor může být proměnná, jejíž obsah se podle situace může měnit a tak odkazovat na různé soubory dle potřeby (toho se dá využít např. pro různé jazykové mutace).
Datum vložení: 3.6.2006 23:26:57
- budeš používať dve premenné (napr.: $in1 a $in2) a odkaz napíšeš: <a href=" page.php?in1=subor1&in2=subor2 ">
Datum vložení: 29.11.2004 20:32:10
ahoj. mám takový problém použil jsem include v té druhé možnosti.
mám takto adresář. cz/czpsan/ tady mám include soubory.
v hlavní index.php to mám takto (sem se mi mají zobrazit ty *.inc soubory)
<?php
$file = "cz/czpsan/" .$id. ".inc";
if (File_Exists ($file)):
include $file;
else:
include "uvod.php";
endif;
?>
jako adkaz mám index.php?id=1
soubor 1.inc mám v adresáři cz/czpsan/
ale přesto mi to píše že soubor nenalezen. děkuji za pomoct
Datum vložení: 31.1.2005 20:26:48
Zdravím.Teraz sa učím php a chcel by som vás poprosiť o nejaký príklad v ktorom by bolo napr. odkaz idex.php?id=omne.Ako napísať tu index.php a následne omne.php. Diky moc.
Datum vložení: 4.9.2005 20:41:58
Nechybaju v tom clanku nahodou velmi dolezite funkcie require a readfile? Myslim ze s temou velmi uzko suvisia.
Datum vložení: 17.9.2005 20:46:19
Problem: Notice: Undefined variable: id in c:\program files\easyphp1-8\home\my\index.php on line 17 co stim mam delat? mam tam tenhle skript ... <?php $obsah = $id. ".htm"; if (File_Exists ($obsah)): include $filename; else: include "test.htm"; endif; ?> ... Prosim pomozte Ficik
Datum vložení: 2.10.2005 22:44:58
předpokládám, že tohle $obsah = $id. ".htm"; je řádek 17. mám ten samej problém. jestli už znáte odpověď dejte vědět.(milosvrana@volny.cz)
Datum vložení: 14.2.2006 13:49:49
Az na cislo radku a vyzvu v cestine mam ten samej problem...:(
Datum vložení: 14.2.2006 14:25:12
To není problém, to je fičura - jinak řečeno, PHP vás tímto upozorňuje na prostý fakt, že používáte neinicializovanou (neexistující) proměnnou. Znamená to, že máte špatně napsaný program, který ale zůstane funkční (PHP si za vás "domyslí" práznou proměnnou ;-) Jak tuto situaci eliminovat? Naučit se používat elementární programátorské postupy a příště se podobným konstrukcím vyhnout.
Datum vložení: 3.9.2006 22:06:19
Staci nefinovat $id = $_REQUEST['id'];
Datum vložení: 12.3.2006 18:54:48
mam soubor index.php, mam tam menu, funkci include a paticku. menu ma delku napr. 1000px. a soubor vkladany pres include ma treba napr. 800px. a paticka je pod menu>ted je vse v poradku...ale kdyz bude mit ten soubor ktery vkladam pres include 1500px tak mi ta paticka zustane tam kde je..neposune se..>a ja chci aby se posouvala.. mám pocit že ostatní kod ignoruje vlastnosti vkladaneho souboru(napr. tu delku) nevite nekdo jak to udelat?? pls poradte prave se php ucim a nevim co s tim..
Datum vložení: 3.6.2006 23:51:06
Doporučujem v HTML už nepoužívať tabulkový layout, pokladá sa za zastaralý. S použitím <div> kontajnerov tento problem zrejme nenastane. :))
Datum vložení: 3.6.2006 23:49:14
Pri spôsobe, kedy includujem do jedného dokumentu (index.php), stratím možnosť meniť document.title, byť VEĽMI dôležitý tag! Ozvite sa, ak niekto vie ako riešiť tento problém jednoducho. forum@pixo.sk Ideálne, aby názov stránky, ktorý bude zapísaný v hlavičke do <title></title> mohol byť napísaný v súbore, ktorý má byť neskôr includovaný (samozrejme až v <body>) napr. ako komentár. Prípadne aby v súbore na includovanie mohla byť deklarácia premennej, napr.: <?php $page_title = 'Názov Podstránky'; ?> forum@pixo.sk
Datum vložení: 8.7.2006 16:27:26
Mohl by někdo udělat to co vysvětluje tento návod. Myslím prakticky to udělat třeba na dvou nebo třech souborech. Já to totiž fakt nepochopil. Nevím jak donutit odkaz aby zobrazil obsah v jiném divu. Díky
Datum vložení: 12.7.2006 15:30:05
a dat tam require miesto include?
Datum vložení: 18.1.2009 15:54:36
Chcem sa opýtať že ako môžem urobiť to aby keď mam na hlavnej stránke ten hlavný script na načítanie súborov if (isset($_GET['page'])){ $subor=$_GET['page']; $subor2= dirname($_SERVER['SCRIPT_FILENAME'])."/".$subor.".php"; if(file_exists($subor2)){ if(substr_count($subor,"../")>0){ echo "<h3>Upozornenie</h3>Neda sa nahráť súbor v nadradenom adresáry!"; }elseif($subor=="index" or $subor=="/index"){ echo "<h3>Upozornenie</h3>Index nemôže načítať sám seba!"; }else{ include $subor2; } }else{ include "podstranky/error/error404.php"; } }else{ include "podstranky/home/domov.php"; } tak sa to do <a href> musím dať index.php?page=stranka čiže sa načíta súbor stranka.php ale keď chcem mať v tom stranka.php ďalšie takéto niečo tak ako to mám zapísať do <a href>??? Dúfam že chápete čo chcem.
Datum vložení: 19.1.2009 23:13:57
Nejsem PHP guru, ale napadá mě dát do odkazu třeba index.php?page=stranka.php&page2=dalsi_stranka.php, v index.php vložit: if(isset($_GET["page2"])) $stranka2 = $_GET["page2"]; v stranka.php: if(isset($stranka2)) include("$stranka2"); Ani nevim, jestli to bude fungovat, tak to můžeš zkusit.