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

Avatar

Autor komentáře: Miroslav KOULA

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...

Avatar

Autor komentáře: Jirka Lahvicka

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.

Avatar

Autor komentáře: Miroslav KOULA

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.

Avatar

Autor komentáře: Jirka Lahvicka

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 :-).

Avatar

Autor komentáře: zdenk

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 :)

Avatar

Autor komentáře: Miroslav KOULA

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)

Avatar

Autor komentáře: Yuhů

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

Avatar

Autor komentáře: Miroslav Kučera

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)

Avatar

Autor komentáře: Yuhů

Datum vložení: 29.7.2000 23:24:00

Ok, teď to vidím, spletl jsem se.

Avatar

Autor komentáře: Jirka Lahvicka

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

Avatar

Autor komentáře: Miroslav KOULA

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í...

Avatar

Autor komentáře: Podhajsky Jan

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

Avatar

Autor komentáře: Miroslav KOULA

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...

Avatar

Autor komentáře: Had

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)

Avatar

Autor komentáře: netmonster

Datum vložení: 10.7.2002 14:58:56

$filename="inc/" . $id . ".php";

Avatar

Autor komentáře: FantomMax

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

Avatar

Autor komentáře: Aleš Pekárek

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?

Avatar

Autor komentáře: Yuhů

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ě.

Avatar

Autor komentáře: Jirka Lahvicka

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.

Avatar

Autor komentáře: Miloslav Marčan

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

Avatar

Autor komentáře: JS

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...

Avatar

Autor komentáře: L.Benda

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.

Avatar

Autor komentáře: Jirka Lahvička

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ě.

Avatar

Autor komentáře: Tomas Meinlschmidt

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...

Avatar

Autor komentáře: Peter Kytlica, pixo.sk

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.

Avatar

Autor komentáře: Marr_liss

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č.

Avatar

Autor komentáře: Gabriel

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

Avatar

Autor komentáře: L.Benda

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.

Avatar

Autor komentáře: J. Rybar

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

Avatar

Autor komentáře: miqs

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...

Avatar

Autor komentáře: peter

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.

Avatar

Autor komentáře: MiMiNo

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

Avatar

Autor komentáře: Martin

Datum vložení: 7.10.2004 9:14:39

Chcel by som ti ponúknuť spoluprácu.

Avatar

Autor komentáře: Peter Kytlica (SVK)

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]

Avatar

Autor komentáře: králíček

Datum vložení: 23.3.2009 15:43:29

díky moc za to GET bez toho mi to neběželo. :-)

Avatar

Autor komentáře: GamemasteR

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)?

Avatar

Autor komentáře: Miloslav Marčan

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).

Avatar

Autor komentáře: Peter Kytlica, pixo.sk

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 ">

Avatar

Autor komentáře: amatér

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

Avatar

Autor komentáře: marek

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.

Avatar

Autor komentáře: PITON

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.

Avatar

Autor komentáře: Lama lamouci

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

Avatar

Autor komentáře: milos

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)

Avatar

Autor komentáře: -rw-

Datum vložení: 14.2.2006 13:49:49

Az na cislo radku a vyzvu v cestine mam ten samej problem...:(

Avatar

Autor komentáře: Vilém Málek

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.

Avatar

Autor komentáře: Jakub SUchý

Datum vložení: 3.9.2006 22:06:19

Staci nefinovat $id = $_REQUEST['id'];

Avatar

Autor komentáře: páťa

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..

Avatar

Autor komentáře: Peter Kytlica [pixo.sk]

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. :))

Avatar

Autor komentáře: Peter Kytlica [pixo.sk]

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

Avatar

Autor komentáře: Vendix

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

Avatar

Autor komentáře: meno

Datum vložení: 12.7.2006 15:30:05

a dat tam require miesto include?

Avatar

Autor komentáře: Kenny

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.

Avatar

Autor komentáře: Miloš

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.

Zpět na článek | Úvodní stránka Interval.cz