PHP include

Programovacie jazyky, rady, poradňa...
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Riešiť sa to dá rôzne, ale ja by som asi zvolil tento spôsob (teda určite by som zvolil niečo iné, ale v tvojom prípade by som volil toto :) ) :

Kód: Vybrať všetko

$id = isset($_GET['id']) ? $_GET['id'] : "";
switch ($id) {
case "novinky": $filename = "news.php"; break;
case "galeria": $filename = "gallery/index.php"; break;
default: $filename = "main.php";
}
(a ďalej rovnako, ako máš v tom starom)
ThunderBoy
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 74
Registrovaný: 09 nov 2005, 18:40

Príspevok od používateľa ThunderBoy »

chrono napísal:Riešiť sa to dá rôzne, ale ja by som asi zvolil tento spôsob (teda určite by som zvolil niečo iné, ale v tvojom prípade by som volil toto :) ) :

Kód: Vybrať všetko

$id = isset($_GET['id']) ? $_GET['id'] : "";
switch ($id) {
case "novinky": $filename = "news.php"; break;
case "galeria": $filename = "gallery/index.php"; break;
default: $filename = "main.php";
}
(a ďalej rovnako, ako máš v tom starom)
Spravil som to takto v index.php v roote:

Kód: Vybrať všetko

<?php
$id = isset($_GET['id']) ? $_GET['id'] : "";
switch ($id) {
case "fotogaleria": $filename = "includes/gallery/index.php"; break;
case "wallpapers": $filename = "wallpapers.php"; break;
case "screensavers": $filename = "screensavers.php"; break;
case "elektronicke pohladnice": $filename = "includes/e-cards/index.php"; break;
case "kniha navstev": $filename = "includes/guestbook/kniha navstev.php"; break;
default: $filename = "domov.php";
} 
$id = $_GET["id"];
$filename = $id . ".php";
if (file_exists($filename))
include($filename);
else
include("domov.php");
?>
A odkaz napr.:

Kód: Vybrať všetko

href="index.php?id=kniha navstev"
Stale to nefunguje. Vobec mi nenahrava z tych adresarov, ktore som zadal. Ked vlozim subor s nazvom kniha navstev.php priamo do rootu, tak uz ju zobrazi, inak ma vzdy vrati do suboru domov.php.
Taktiez nefunguje ani toto, ked to pridam k tomu kodu a mam aj v roote vytvoreny subor invalidaccess.php:

Kód: Vybrať všetko

$povoleneStranky = array("domov", "fotogaleria", "wallpapers", "screensavers", "elektronicke pohladnice", "kniha navstev");
if (!in_array($filename, $povoleneStranky))
{
    $filename = "invalidaccess";
} 
Kua, co robim zle?
zaggi
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 314
Registrovaný: 04 feb 2007, 19:32

Príspevok od používateľa zaggi »

mas stale chybu Warning: Cannot modify header information - headers already sent by ... alebo nieco ine ? checkol by som ci su read prava na suboroch vzdy owner/group/others a to iste aj na adresaroch
ThunderBoy
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 74
Registrovaný: 09 nov 2005, 18:40

Príspevok od používateľa ThunderBoy »

zaggi napísal:mas stale chybu Warning: Cannot modify header information - headers already sent by ... alebo nieco ine ? checkol by som ci su read prava na suboroch vzdy owner/group/others a to iste aj na adresaroch
Nie, chyby nevypisuje ziadne. Dal som tam iny modul na ten Kontaktny formular a uz to ide v pohode. Len mi nefunguje odkazovanie do inych adresarov (modulov), ktore su v adresaroch. Cita len vsetko, co sa nachadza v roote. :(

Nastavil som taktiez vsetkym suborom, adresarom i podadresarom prava na 777.

//autoeditácia príspevku ( 06 Jul 2008, 15:02 )
Skratka je to cele na hofno. Ked sa mi to podarilo spravit, tak zas to blbne pri odkazovani v tych moduloch, ktore su v inych adresaroch, pretoze oni pouzivaju uplne ine php hlavicky a takto ma to vzdy vrati na uvod.
Najradsej by som to cele nejako prerobil, ale namam sajnu ako.
Nerad by som zas pouzil odkazovanie do iframe.

Skratka potrebujem, toto.

Na stranke v roote je par samostatnych php suborov, s ktorymi nie je problem (keby som mal takto vsetky, tak bez problemu), ale su tam dalsie adresare (samostatne php moduly), ktoré pracujú samostatne a len ich potrebujem implentovat do stranky, namiesto domov.php, ked budu odkazom privolane. No najvacsi problem je v tom, ze aj ked sa mi to podari, tak zas ten modul nemoze najst svoje potrebne adresare a co obsahuje svoje vlastne php odkazy na svoje podstranky, tak ma z nich vrati uplne na uvod mojej stranky.
Skratka vobec to nefunguje, tak ako by som chcel.

Ako to cele spravit tak, aby to fungovalo poriadne?

//autoeditácia príspevku ( 06 Jul 2008, 15:19 )
Alebo este takto.

Ako zobrazit podstranky v index.php, ktory je v roote pri klikani napr. na odkazy Kontakt - Domov - Fotogaleria ..., tak aby mi ich vzdy zobrazilo ako chcem, ale bez toho, aby mi to menilo hlavicky. Skratka, aby tam nebolo index.php?id=kontakt ale skratka klasika ...... domena.sk/domov a potom url hlavicky nastavit rewrite v subore .htaccess.
Skratka potrebujem spracovat to iste, ako ked odkazujem v html na iframe, len v php.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

V tej prvej časti získaš správny názov súboru a v zápätí si ho prepíšeš (treba tam iba tú prvú časť):

Kód: Vybrať všetko

<?php 
 $id = isset($_GET['id']) ? $_GET['id'] : ""; 
 switch ($id) { 
 case "fotogaleria": $filename = "includes/gallery/index.php"; break; 
 case "wallpapers": $filename = "wallpapers.php"; break; 
 case "screensavers": $filename = "screensavers.php"; break; 
 case "elektronicke pohladnice": $filename = "includes/e-cards/index.php"; break; 
 case "kniha navstev": $filename = "includes/guestbook/kniha navstev.php"; break; 
 default: $filename = "domov.php"; 
 } 
 if (file_exists($filename)) 
 include($filename); 
 else 
 include("domov.php"); 
 ?>
Dá sa to urobiť aj pomocou toho mod_rewrite. Fungovalo by to tak, že ty by si zadal http://server.xxx/id_stranky a pomocou toho mod_rewrite by sa to prepísalo na http://server.xxx/index.php?id=id_stranky a ten skript by ostal rovnaký, ako je teraz (len sa musíš rozhodnúť, ako to vlastne chceš mať urobené).
ThunderBoy
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 74
Registrovaný: 09 nov 2005, 18:40

Príspevok od používateľa ThunderBoy »

Vraciam sa opat k tomuto nedoriesenemu problemu.
Vyssie uz bolo okolo toho spomenute dost, ale problem sa stale nevyriesil.
Najskor opisem, ako je stranka spravena.
V roote mam vsetky potrebne stranky a hlavny subor index.php, do ktoreho sa otvaraju vsetky tieto dalsie stranky cez tento kod:

Kód: Vybrať všetko

<?php
$id = isset($_GET['id']) ? $_GET['id'] : "";
switch ($id) {
case "fotogaleria": $filename = "fotogaleria.php"; break;
case "kontakt": $filename = "kontakt.php"; break;
case "pocasie": $filename = "pocasie.php"; break;
case "preklady": $filename = "preklady.php"; break;
case "screensavers": $filename = "screensavers.php"; break;	
case "wallpapers": $filename = "wallpapers.php"; break;
default: $filename = "domov.php";
}
$id = $_GET["id"];
$filename = $id . ".php";
if (file_exists($filename))
include($filename);
else
include("domov.php");
?>
Spominal mi jeden, ze to nie je vraj zabezpecene ale netusim, co tym myslel.

1, Prvy najvacsi problem je v tom, ze mam nejaky hotovy modul (napr. knihu navstev) v adresari guestbook, ktory ma sam o sebe v tomto adresari kopec dalsich svojich adresarov a suborov, z ktorych nahrava tieto svoje potrebne casti.
Ako dosiahnut spravne zobrazenie knihy navstev, ked ju chcem tiez includovat do hlavnej stranky index.php? Pretoze, ked to spravim tak ako pri vsetkych ostatnych, ktore su v roote, tak to nefunguje. Nemoze najst svoje pomocne subory, pretoze ich stale hlada len v roote.
Skusal som uz vselico, ale nikdy mi to nerobrazi tak, ako keby som ten odkaz zadal priamo bez includovania.
2, Druhy zasadny problem je v hlavickach (teda url).
Zoberme si napr. priklad, ze ta kniha navstev uz funguje ako ma. Ale cela kniha navstev ma tiez svoje navolene adresy, ktore si meni podla poziadaviek. Moja stranka generuje adresy napr. v tvare: index.php?id=screensavers. V knihe navstev je uz 50 komentarov a stranka mi zobrazi napr. len 15 komentarov na stranku. Ked chcem zobrazit dalsich 15 komentarov, tak musim kliknut na link, ktory ma adresu index.php?page=2 atd na dalsie stranky. No lenze, ked kliknem na tu adresu, tak mi nezobrazi komentare, ale ma vrati na uvod stranky. Kua

Snad z toho pochopite, co ma tam trapi a nemam uz sajnu, ako to vyriesit.
Skusal som aj nieco s .htaccess, ale bez vysledku.

Aby som to zhrnul.
Se.ie ma tam hlavne to, ze nemozem do stranky pridavat dalsie hotove moduly, pretoze mi ich aj tak nezobrazi spravne alebo len s chybami.
Tieto moduly musim dat zvlast do adresarov a z nich mi to spravne nezobrazi. Taktiez tam nemozem pridat vecicky na hodnotenie a komentovanie clankov, pocitadla atd. pretoze vacsinou vsetko pouzivaju svoje vlastne adresy, a ked na ne klikam, tak ma vrati vzdy do zakladnej stranky.

Poradte ako sa konecne zbavit tejto pre mna nocnej mory. :(
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

1) ten tvoj kód čo uvádzaš nerobí to čo si myslíš že robí (nefunguje). Ty si zbytočne cez switch vytvoríš názov do $filename keď ho následne prepíšeš idečkom a pripojíš k nemu príponu php.
2) tvoj problém vyriešiš buď prerobením knihy, čo zabere asi viac roboty ale bude to tak ako chceš, alebo ju vložíš do iframu (ktorý keď pekne naštýluješ aby nemal ohraničenie tak si užívateľ /takmer/ nevšimne rozdiel)
shet
Amateur
Amateur
Príspevky: 31
Registrovaný: 16 nov 2005, 17:11

Príspevok od používateľa shet »

pomooooc:
otázka:
prečo mi nefunguje

Kód: Vybrať všetko

<? include "cesta/meno_suboru"; ?>
ale iba

Kód: Vybrať všetko

<? include "meno_suboru"; ?>
cestu mi nezoberie, tak ako ma :-(
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

nie je v tvojom pripade cesta="http://nieco.nieco" ? :)
Mozes tam davat len relativnu cestu
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

as preto ti to nejde lebo si zabudol na zatvorky :)

Kód: Vybrať všetko

<?php include("subor.php"); ?>
<?php include("cesta/subor.php"); ?>
8)
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

shet
Amateur
Amateur
Príspevky: 31
Registrovaný: 16 nov 2005, 17:11

Príspevok od používateľa shet »

nie nie, je to presne tak ako som napisal. relativna cesta tam je, a zatvorky tam byt nemusia :-)

ps: subor najde, zobrazi, ale nie spravne. spravne ho zobrazi iba v pripade ak su v rovnakom adresari :-(
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

no tak nemusia ale nikoho nezabije ked ich tam da :) ale mam pocit že niekedy mi to nechelo ist kôli nim preto som mu to napisal

//autoeditácia príspevku ( 19 Jun 2009, 0:19 )
shet napísal:
ps: subor najde, zobrazi, ale nie spravne. spravne ho zobrazi iba v pripade ak su v rovnakom adresari :-(
tak teraz som uuplne mimo :? ako? čo ? prečo ? hmm ak ti ho najde aj zobrazi znamena že include funguje na 100% spravne a to že ti tam zobrazuje blbosti je už chyba samotneho scriptu zljavne nemas niečo deklarovane v tom externom subore alebo mas tam nejake chyby,nemas nahodv aj v nom nejake include ? alebo nejaké adresi ku suborom ??? na ktore si zabudol lebo inak aj tak vyzera že ano podla tvojho popisu
shet
Amateur
Amateur
Príspevky: 31
Registrovaný: 16 nov 2005, 17:11

Príspevok od používateľa shet »

ten súbor čo "inclunde"ujem je *.html, keď ho otvorím samostatne, tak je všetko, tak ako má, akonáhle spustím "index.php" v ktorom je príkaz include, tak mi nezobrazí to čo má :-(
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

a co zobrazi?
shet
Amateur
Amateur
Príspevky: 31
Registrovaný: 16 nov 2005, 17:11

Príspevok od používateľa shet »

tu je situácia
Prílohy
zobrazené index.php s <br />&amp;lt;?php include &amp;quot;menu/top.html&amp;quot;; ?&amp;gt;<br />v APACHE
zobrazené index.php s
&lt;?php include &quot;menu/top.html&quot;; ?&gt;
v APACHE
zobrazené samotné top.html. Menu je v JS.
zobrazené samotné top.html. Menu je v JS.
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

shet napísal:ten súbor čo "inclunde"ujem je *.html, keď ho otvorím samostatne, tak je všetko, tak ako má, akonáhle spustím "index.php" v ktorom je príkaz include, tak mi nezobrazí to čo má :-(
hod tu presne čo ti to robi aj screen napriklad ako to ma byt a po include čo to spravi... može byt milion dovodov prečo to robí ...ale najskôr to bude asi aj tým ako alebo kde ten subor includuješ

//autoeditácia príspevku ( 19 Jun 2009, 10:07 )
si si istýýýý že ked includuješ ten top tak maš spravnu cestu ku CSS v tom top.html ??????? :D :D lebo to nerobi include ..ale že ti nenačitalo CSS preto je to take rozhádzane a ked si pisal že ti to funguje len ked ich mas v rovnakom adresari ,dam ruku do ohna ze ked prehodič ten top.html do ineho adresara tak zabudaš prehodit aj CSS subor :) alebo aspon nepozmeniš cestu v top.html kde sa nachádza ten CSS
shet
Amateur
Amateur
Príspevky: 31
Registrovaný: 16 nov 2005, 17:11

Príspevok od používateľa shet »

no to ja viem, áno sú správne, samotné top mi zobrazí normálne, preto si neviem rady :-(
a keď ich dám do rovnakého adresára (index.php a top.html) a do include dám iba top.html, tak všetko je tak ako má
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

hod tu zdrojak toho top.html a index .php lebo takto ti nepoviem čo je zle ale určite to robi nespravna cesta ku suboru s CSS stylom
bart11
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 91
Registrovaný: 13 okt 2006, 20:11
Kontaktovať používateľa:

Príspevok od používateľa bart11 »

shet: Skús

Kód: Vybrať všetko

<? include "./cesta/meno_suboru"; ?>

priprípade

Kód: Vybrať všetko

<? include "../cesta/meno_suboru"; ?>
Napísať odpoveď