PHP místo framů – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

PHP místo framů – PHP – Fórum – Programujte.comPHP místo framů – PHP – Fórum – Programujte.com

 

Luďas0
Duch
14. 7. 2008   #1
-
0
-

Zdravím,

Chtěl bych použít příkaz include pro vkládání obsahu do webu, ale nevím jak vytvořit menu tak, aby mi odkazy spouštěli pouze příslušné include v hlavním obsahu webu.

Za každou radu předem děkuji!!

přikládám url pro ukázku http://www.procne.chytry.cz/validita/Index2.php

Nahlásit jako SPAM
IP: 62.240.178.–
Tocimanko0
Grafoman
14. 7. 2008   #2
-
0
-

To Luďas : Je to jednoduché. Odkaz v menu daj vždy v tomto formáte (uvádzam svoju verziu includovania):

?pg=subor_ktory_includujes


Do oblasti na stránke, do ktorej budeš includovaťsvoje súbory daj tento kód:
<?php

if(isset($_GET['pg']) and file_exists("./inc/".$_GET['pg'].".php"))
{
include("./inc/".$_GET['pg'].".php");
}
elseif(!isset($_GET['pg']))
{
include("./inc/default.php");
}
else
{
include("./inc/error404.php");
}
?>


Toto funguje perfektne v prípade, že všetky súbory máš v zložke /inc a okrem iného sú tam súbory default.php (súbor, ktorý sa includne vtedy, ak nie je daný nijaký iný súbor) a error404.php (pre prípad, že užívateľ zadá stránku, ktorá neexistuje).

V menu odkazoch vlastne predávaš parametre $_GET['pg'], čo je označenie stránky bez prípony .php .

Nahlásit jako SPAM
IP: 195.91.84.–
Luďas0
Duch
14. 7. 2008   #3
-
0
-

To Tocimanko : Děkuju moc, mohl bys jenom prosím ještě naznačit jak napsat ten odkaz, s php sem uplně na začátku takže nemám tušení jak na to.

Nahlásit jako SPAM
IP: 62.240.178.–
Tocimanko0
Grafoman
14. 7. 2008   #4
-
0
-

To Luďas : LOL :D

<a href="?pg=xyz">odkaz</a>

Includne /inc/xyz.php

Nahlásit jako SPAM
IP: 195.91.84.–
Arg0
Duch
14. 7. 2008   #5
-
0
-

bacha na to, je docela nebezpecny nechat uzivatele includovat jakoukoli stranku...ja bych to resil nejak takto:



$site= array();
$site["default"]="default.php"
$site["login"]="login.php";
$site["register"]="register.php"
//...
if(isset($site[$get["pg"]])
{
include($site[$get["pg"]])
}
else
{
include($site["default"])
}


snad tam neni moc preklepu :)

Nahlásit jako SPAM
IP: 213.168.185.–
netman920
Super člen
14. 7. 2008   #6
-
0
-

To Arg :
no ale v tom priklade tociman zistuje ci subor exsistuje práve v jeho zlozke /inc a to
dokonca este bez pripony

... and file_exists("./inc/".$_GET['pg'].".php"))

Nahlásit jako SPAM
IP: 195.91.54.–
Tocimanko0
Grafoman
15. 7. 2008   #7
-
0
-

To Arg : Nj, osobne by sa mi asi nechcelo aktualizovať také obrovské pole stránok. Keď ide o menšiu webovú prezentačku, tak v pohode, ale ak je to web so 100 podstránkami a položkami menu, tak volím moje riešenie. A malo by to byť ošetrené tak, že možnosť php injekcie je nepravdepodobná.

Nahlásit jako SPAM
IP: 195.91.84.–
pawlik0
Grafoman
15. 7. 2008   #8
-
0
-

To Tocimanko : nejsem si jistej... ale co se stane kdyz zadas treba
?pg=../../../../w/web/hack
pokud je hack.php na stejnym hostingu?

Nahlásit jako SPAM
IP: 84.42.151.–
Sa Nata A Na. Howgh
Tocimanko0
Grafoman
15. 7. 2008   #9
-
0
-

To pawlik : Väčšina hostingov to má ošetrené jednoducho tak, že nie je možné pristupovať k zložkám, na ktoré nemáš práva. Takže toto nejak neriešim. Zatiaľ sa mi mojimi útokmi na vlastné aplikácie nepodarilo takto poškodiť dáta. Väčšina hostingov je predsa na linuxe, nie? ;)

Nahlásit jako SPAM
IP: 195.91.84.–
pawlik0
Grafoman
15. 7. 2008   #10
-
0
-

To Tocimanko : Je to možné... ale stejně je bezpečnější Argovo řešení - na hosting nerad spoléhám :)

Nahlásit jako SPAM
IP: 84.42.151.–
Sa Nata A Na. Howgh
Tocimanko0
Grafoman
15. 7. 2008   #11
-
0
-

To pawlik : Bezpečnejšie možno :) Ale určite nie efektívnejšie. Určite by sa dalo i to moje vylepšiť, ale je plne funkčné a univerzálne. Lebo aktualizovať 3 miesta naraz je dosť obtiažne, najmä ak ide o väčšie weby ;)

Nahlásit jako SPAM
IP: 195.91.84.–
bukaj0
Věrný člen
15. 7. 2008   #12
-
0
-

Tocimanko
Tvoji víru v to, že to bude kočírovat hosting bych chtěl mít. Moc se mi líbí tvůj způsob uvažování -- "It's not bug, it's a feature." :o) V některých případech by se s tím dalo souhlasit, ale tohle je opravdu bezpečnostní chyba. Pokud např. budeš na stránky pak umožňovat upload souborů, útočník si tam nahraje záškodnický skript a už se to s tebou veze. Chybám je lépe předcházet než říkat, že tohle stejně nepůjde nijak využít.

A pokud mluvíš o tom, že takhle je to jednodušší (stačí nahrát soubor a hurá, jedeme), jde to pořešit automatickým přegenerováváním toho pole pokud se obsah složky změnil.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Tocimanko0
Grafoman
15. 7. 2008   #13
-
0
-

To bukaj : Prečo by som mal povolovať upload nebezpečných súborov? :D To sa dá jednoducho odfiltrovať ;) Zatiaľ som nikdy nepovoloval PHP súbory - to by som musel byť šialenec ;) ... Ja si nekomplikujem zbytočne život :) Keď vidím, že mi to nemôže ublížiť, neriešim ďalej. Všetko istí dôkladná analýza. Ak je pre útočníka nemožné využiť metódy, ktoré by mohli uškodiť, nevadí mi to. A keď sa chlapec o niečo pokúsi, tak mu vyhodí #404 :P Netvrdím, že je to zabezpečené dokonale. Aj možnosť s predgenerovaným polom je prípustná :))) Ale zas je to len komplikovanie :DDDD

Hoď sa do kľudu, pusti si ľahučké audio a mysli na niečo pekné :D

Nahlásit jako SPAM
IP: 195.91.84.–
bukaj0
Věrný člen
15. 7. 2008   #14
-
0
-

Tocimanko
Prečo by som mal povolovať upload nebezpečných súborov? :D To sa dá jednoducho odfiltrovať ;)
Jednoduše odfiltrovat? Mohl bych znát ten recept? :o)

Hoď sa do kľudu, pusti si ľahučké audio a mysli na niečo pekné :D
Já jsem naprosto v klidu. Jenom nechci, aby si z tebe někdo bral příklad ;o)

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Tocimanko0
Grafoman
15. 7. 2008   #15
-
0
-

To bukaj : :smile5: :smile6:


Prečo by som mal povolovať upload nebezpečných súborov? :D To sa dá jednoducho odfiltrovať ;)
Jednoduše odfiltrovat? Mohl bych znát ten recept? :o)


Prepáč, ale doporučujem zakúpiť si nejakú poriadnu knižku o PHP ;) :D Ak nevieš odfiltrovať nebezpečné prípony, nemám s tebou o čom ;) Nie, recept sa dá vygoogliť.

Hoď sa do kľudu, pusti si ľahučké audio a mysli na niečo pekné :D
Já jsem naprosto v klidu. Jenom nechci, aby si z tebe někdo bral příklad ;o)


No, stále lepšie, než si brať príklad z teba. Ehm, vážne niektoré veci doštuduj. Nič v zlom!

Nahlásit jako SPAM
IP: 195.91.84.–
Colpik0
Super člen
15. 7. 2008   #16
-
0
-

Co je těžkého na zjištění přípony? Je víc způsobů, já bych použil tento:

$nazevSouboru = "ahoj.php";

$priponaSouboru = strstr($nazevSouboru, "."); //vypíše tečku a vše za ní, čili v tomto případě ".php"
if($priponaSouboru == ".php") {
die("Nesmíte nahrávat PHP skripty!");
}

Nahlásit jako SPAM
IP: 78.102.176.–
Pavel 'Colpik' Tobiáš - Developer & Music Producer [br] http://colpik.webstudio4u.eu
15. 7. 2008   #17
-
0
-

Ajajajaj. Dalsi pan udelejte-to-pekne-prosim-za-me : :smile15:

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Tocimanko0
Grafoman
15. 7. 2008   #18
-
0
-

To Colpik : Máš tam chybu. Vo väčšine prípadov to fungovať bude, ale pokiaľ človek uploadne súbor, ktorý bude niesť názov "kod.inc.php", tak $priponaSouboru == ".inc.php". To len tak na doplnenie.

Nahlásit jako SPAM
IP: 195.91.84.–
Colpik0
Super člen
15. 7. 2008   #19
-
0
-

To Tocimanko : Ach, ommlouvám se, máš pravdu. Takhle by to mělo být lepší:

$nazevSouboru = "ahoj.php";

$priponaSouboru = strrchr($nazevSouboru, "."); //vypíše tečku a vše za ní, čili v tomto případě ".php"
if($priponaSouboru == ".php") {
die("Nesmíte nahrávat PHP skripty!");
}

:smile1:

Nahlásit jako SPAM
IP: 78.102.176.–
Pavel 'Colpik' Tobiáš - Developer & Music Producer [br] http://colpik.webstudio4u.eu
bukaj0
Věrný člen
15. 7. 2008   #20
-
0
-

Tocimanko
Ak nevieš odfiltrovať nebezpečné prípony, nemám s tebou o čom ;)
Dobře, uznávám, měl jsem si pořádně přečíst kód, který jsi napsal. V tomto případě by opravdu stačilo odfiltrovat příponu. Ale jelikož se mnou "nemáš o čom", radši tento příspěvěk ani nečti.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Tocimanko0
Grafoman
15. 7. 2008   #21
-
0
-

To bukaj : To neva :) Aspoň, že si schopný uznať si chybu ;) To sa cení :)

Nahlásit jako SPAM
IP: 195.91.84.–
Colpik0
Super člen
15. 7. 2008   #22
-
0
-

To bukaj : Když ho nemá číst, proč mu ho píšeš? :smile1:

Nahlásit jako SPAM
IP: 78.102.176.–
Pavel 'Colpik' Tobiáš - Developer & Music Producer [br] http://colpik.webstudio4u.eu
bukaj0
Věrný člen
15. 7. 2008   #23
-
0
-

Colpik
Když ho nemá číst, proč mu ho píšeš? :)
Nejsem jeden z těch, co by dělali v případě chyby "mrtvého brouka" ;o)

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
pawlik0
Grafoman
15. 7. 2008   #24
-
0
-

vymyslel jsem vylepšení, díky kterému by se to dalo bezstarostně použít. Napsat

include("./inc/_".$_GET['pg'].".php");

a soubory se budou jmenovat _soubor.php.

Díky tomu ani nejde jít do adresáře zpět(udělalo by to inc/_../../soubor.php)

Nahlásit jako SPAM
IP: 84.42.151.–
Sa Nata A Na. Howgh
hrach
~ Redaktor
+1
Boss
15. 7. 2008   #25
-
0
-

jen několik poznámek a pak zamykám ;)
1) kod od tocimana lze jednoduse fixnout: $page = str_replace('../', '', $page);
2) oba dva zpusoby maji vyhody i nevyhody
3) jakkykoli upload od uzivatele je potencialne nebezpecny... a ty pripony... to muze byt jedno...

Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 56 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý