Autor | Zpráva | ||
---|---|---|---|
pyty Profil |
#1 · Zasláno: 5. 10. 2004, 17:38:44
povedzme že mám v bunke tabuľky vloženu stránku pomocou <? include "daco.htm"; ?>.
//to je pri nacitani stranky// ako mam urobiť, aby sa po kliknutí na odkaz v menu namiesto daco.htm objavila ina.htm ? tHx |
||
DoubleThink Profil * |
#2 · Zasláno: 5. 10. 2004, 17:52:51
<? include $obsah; ?>.
a odkaz by pak vypadal takto: stranka.php?obsah=ina.htm
Toto je základní princip - je dobré jej doplnit ještě o kontrolu, jestli soubor existuje, nebo případně nepřenášet celé názvy souborů, ale jen části. |
||
pyty Profil |
#3 · Zasláno: 5. 10. 2004, 18:24:19
OK; ale ako to urobit; aby tam bola ta stranka po nacitani ?
|
||
Yuhů Profil |
#4 · Zasláno: 6. 10. 2004, 01:03:24
Navážu na DoubleThinkovu odpověď. Nejsem si jistý, jestli to napíšu správně, ale v zásadě se zeptáš, jestli je ta proměnná naplněná a jestliže není, tak tam dáš nějakou defaultní hodnotu:
<? if ($obsah) $obsah = "daco.htm"; include $obsah; ?> Ještě poznámka -- nesmíš o tom přemýšlet tak, že se mění to menu, protože ve skutečnosti se mění úplně celá stránka (má pak jiné URL). |
||
Arthur Dent Profil |
#5 · Zasláno: 6. 10. 2004, 07:28:58
Ještě k DoubleThinkovu příspěvku - z hlediska bezpečnosti je to to nejhorší možné řešení, protože umožňuje přímo si vybrat jaký soubor chcete vložit. Pak stačí podvrhnout jiné jméno a neštěstí může být dokonáno.
Doporučuji tedy stejný postup, ale poněkud bezpečnější: <? $obsah='spatna_volba.html'; //tato stranka se zobrazi pokud nekdo podvrhne cislo if (!isset($_GET['obsah'])) $obsah='uvodnistranka.html'; if ($_GET['obsah']==1) $obsah='daco.html'; if ($_GET['obsah']==2) $obsah='volaco.html'; if ($_GET['obsah']==3) $obsah='daco_ine.html'; include $obsah; ?> Jinak - tvar $_GET['cosi'] je od verze PHP4 doporučený tvar pro odkazování se na parametry předané v URL, navíc PHP v novějších verzích má po instalaci defaultně vypnuté parsování těchto parametrů do proměnných - neplatí tedy, že ve skriptu "stranka.php", volaném jako "stranka.php?x=1" máte na začátku přístupnou hodnotu $x. Nemáte a musíte si pro ni sáhnout do globálního pole $_GET. Takže na "nové" instalaci PHP ten DoubleThink-ův příklad neudělá nic... |
||
Časová prodleva: 4 dny
|
|||
Anonymní Profil * |
#6 · Zasláno: 10. 10. 2004, 11:34:05
a jak ma vyzerat odkaz na tu stranku napr 3 ?
|
||
DoubleThink Profil * |
#7 · Zasláno: 10. 10. 2004, 11:38:00
stranka.php?obsah=3
|
||
Anonymní Profil * |
#8 · Zasláno: 10. 10. 2004, 12:09:58
mne to stale vklada hore aj tu starnku
if (!isset($_GET['obsah'])) $obsah='uvodnistranka.html'; a az pod nu ten obsh ... ??? preco |
||
Yuhů Profil |
#9 · Zasláno: 11. 10. 2004, 04:35:58
nejsme kouzelníci. Z takhle malého kousku kódu se problém IMHO nedá zjistit.
|
||
Xzilt02 Profil * |
#10 · Zasláno: 11. 10. 2004, 14:55:33
A co pomocí
switch ($obsah) { case "obsah": $inc = "daco"; break; ... ... ... default: $inc = "uvodni"; } include "$inc.html"; projede jednotlivé možnosti a když tam je cokoli jiného, než co jsme nadefinovali, hodí tam defaultní stránku. Nešlo by? Jinak vkládat soubor s příponou HTML je trochu nešikovné, protože platné html musí obsahovat <html></html>, což v případě souboru vloženého do jiné stránky vede k tomu, že mám dokument s dvěma páry tagů <html>, pravděpodobně i zdvojené <body> atd. Lepší řešení by bylo udělat si nějakou šablonu a pouze do jednoho z <div>ů potom 'include'm načítat jen část(!) kódu. (aby se pořád nemuselo opakovat vypisování <html...><head>........</head><body>.....</body><html>, když se mění prakticky pouze <body>. To bude možná problém pisatele, že vkládá 2 celé html stránky do sebe, čili do jedné se mu vloží celá druhá, včetně menu apod. I když z tak malého kousku jsem to možná pochopil trošku jinak, než bylo myšleno |
||
iklu Profil * |
#11 · Zasláno: 13. 10. 2004, 17:21:43
dobry den wsetkym !!!
ja mam tiez taky problem, ze mam v bunke tabulky : <? $obsah='spatna_volba.html'; //tato stranka se zobrazi pokud nekdo podvrhne cislo if (!isset($_GET['obsah'])) $obsah='uvodnistranka.html'; if ($_GET['obsah']==1) $obsah='daco.html'; if ($_GET['obsah']==2) $obsah='volaco.html'; if ($_GET['obsah']==3) $obsah='daco_ine.html'; include $obsah; ?> a odkaz: index.php?obsah=2 hej, a na zacitku sa mi v bunke objavi uvodnistranka.html, ale ked kliknem na odkaz na index.php?obsah=2 zobrazi sa mi najprv strnka uvodnistranka.html a pod nou obsah=2 cize volaco.html poradte mi pleas ako to odstranit PS: ako je to potom zo stylmi ? interpretuju sa styly z hlavnej, alebo nacitanje stranky alebo su osobitne ? A co ked su dva rovnake premenne z roznymi hodnotami //jedna v hlevnej stranke , druha v nacitanej// PS2: pisete ze by sa nemali vkladat 2 stranky z <html> <body> <head>.... a nemozem ulozit do html len obsah ? bez html body head ? a neje dajaky format pre ukladanie obsahu a vkladanie do php ::: mari sa mi ze som mal jeden script //asi na guestbook// a tam sa ako hlavicka aj päticka vkladal subor, z dajakou priponou ktoru si uz nepametam a bol tam len <div>... a obsah neviete co to asi bolo ? dikky cawte allllllllll |
||
Časová prodleva: 12 dní
|
|||
Anonymní Profil * |
#12 · Zasláno: 25. 10. 2004, 20:12:05
daco.body daaco.dat myslim..
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0