Autor Zpráva
samotar
Profil
cus all

mam třeba stranky www.neco.cz
tam soubot index.php a v něm
include ($_GET["show"]); (zkrácený zápis bez ošéfování že show není nastaveno atd at je to prehledne)
pak kliknu na odkaz třeba www.neco.cz/index.php?show=stranka.php
a stránka sa mi includne do indexu

a oco mi de?

on take uživatel može dat www.neco.cz/stranka.php
a stranka.php sa mu zobrazi
neznáte funkci nebo parametr v nastavení php serveru aby tomuto šlo zabránit jak je třebas tu www.adamslo.net i jinde?

děkuju
Timy
Profil
třeba takhle:

$jsme_na_strance=true;
include ($_GET["show"]);

a v každé stránce:

if($jsme_na_strance)
//vypsat stránku
else
//poslat do háje
hamstet
Profil *
Nebo takhle:

odkaz bude www.neco.cz/index.php?show=stranka

$prefix = "includes/"
$postfix = "post.inc"

include ($prefix.$_GET["show"].$postfix);

Soubor musí mít jméno strankapost.inc a být v podřízeném adresáři includes. Fór je v tom, že uživatel nevidí úplný název a tak si ho ani nemůže vyvolat. Případně se zakáže do inludes přístup http uživatelům (PHP tam může) pomocí httpacces.
DoubleThink
Profil *
include ($_GET["show"])

Uaaa....
Timy
Profil
DoubleThink
"(zkrácený zápis bez ošéfování že show není nastaveno atd at je to prehledne)"
Předpokládal jsem z toho, že to má "ošefované" správně...
roberta
Profil
Uaaa....
tiež mi napadlo presne to isté...

samotar
include ($_GET["show"]);
toto je príklad, ako umožniť nepovolaným osobám robiť si s tvojím webom čokoľvek
samotar
Profil
mno a tomu chcu prave zabranit ?=)
Timy
Profil
samotar
Ne, ty chceš zabránit něčemu jinému. Zkus si na stránce tenhle kód: www.neco.cz/index.php?show=http://google.com pokud to nemáš ošetřené, naincluduje ti to tam google, což rozhodně není dobře
samotar
Profil
dobře zkusil sem to vyřešit pomoci session
když sme na stránce index tak session existuje a má hodnotu true
do includované stránky akorát vložím funkci aby otestovala exitenci session a její hodnotu

to už by z hlediska bezpečnosti podle vás šlo?
Timy
Profil
samotar
já používám něco takového:

include "./".$stranka.".php";

kde $stranka je obsah z $_GET["page"], navíc kontroluji, jestli $page neobsahuje nedovolené znaky (resp. kontroluji, zda se skládá jen ze znaků a-z0-9 a pomlčky a podtržítka). Pokud neprojde regulárním výrazem, přiřadím $stranka=404 a zobrazím chybovou stránku, že stránka neexistuje.
tiso
Profil
Timy - ešte Ti tam chýba kontrola existencie súboru cez file_exist(), prípadne robiť kontrolu platnosti názvu cez in_array()
Ssob
Profil
ja pouzivam:


if (isset($_GET['page']) && file_exists($_GET['page'].'.php'))
include $_GET['page'].'.php';
else
include 'home.php';

projde pres to neco co neni na mem serveru?
samotar
Profil
dikes všem za rady :))
DoubleThink
Profil *
Koncepce, kde se includuji soubory podle vnějšího parametru je špatná koncepce. Z hlediska bezpečnosti, ale hlavně škálovatelnosti je lepší to dělat obráceně - do proměnlivých souborů vkládat uniformní.

Ssob ja pouzivam:...
Máš štěstí, že file_exists nepodporuje http:// ani php://input wrapper, ale i tak jde nalistovat libovolný php soubor z tvého webu (kam až open_basedir dovolí) - tedy včetně sebe samého a zacyklení.
tiso
Profil
DoubleThink - súhlasím, používam...
Ssob
Profil
DoubleThink
děkuji, na to jsem nemyslel.

Jinak mohl bys mi trochu přiblížit cos myslel tim: do proměnlivých souborů vkládat uniformní. ? Nepochopil jsem to..

Díky
Ssob
Profil
včetně sebe samého a zacyklení
hehe praktická ukázka: http://autodoprava.hu.cz/index.php?page=index
DoubleThink
Profil *
Nepochopil jsem to
Místo index.php?page=kontakt je lepší použít kontakt.php, do kterého bude vložena hlavička a patička.
Nesporná výhoda je v tom, že máš na každé stránce pod kontrolou začátek scriptu (začátek výstupu). Můžeš tedy měnit hlavičky, startovat session atd. Taky můžeš snadno připojit další "knihovny" s funkcemi nebo třídami na stránce, kde jsou třeba.
Ssob
Profil
DoubleThink
Diky. Uz mi to je jasne.

Ovsem jestli se nemylim tak php stroji je jedno kde pripojim "knihovny" s funkcemi nebo třídami. To znamena ze to include muze byt klidne uprostred nebo nakonci cele stranky. To mi dovoluje pripojit knihovny primo v souboru, ktery slouzi jako obsah.
Ale uznavam, ze kdyz chci zmenit hlavicku jenom pro konkretni obsah tak je vyhodnejsi pouzit Tvuj zpusob. Diky
Toto téma je uzamčeno. Odpověď nelze zaslat.