include()

HackForum

include()#
Mám na webu misto kde se mi inkludují (pomocí php) soubory.
Poraďte mi prosím, který z těchto způsobů je nejvýhodnější:

1.) prvně mě napadlo tohle:
url: nejakyweb.cz/main.php?menu=neco.php
script pro incluzi:
if ($_GET[\\\'menu\\\']==\\\'\\\') {include(\\\"novinky.php\\\");}
else {include($_GET[\\\'menu\\\']);}

-nevýhoda tohoto způsobu je, že to není zabezpečené proti php injection, a url vypadá divně protože je tam zobrazená přípona

2.)toto resi nedostatky toho prvniho:
url: nejakyweb.cz/main.php?menu=neco
skript: if ($_GET[\\\'menu\\\']==\\\'\\\') {include(\\\"novinky.php\\\");} else {include(\\\"[link]".$_GET.\\\".php\\\");}

-to už není špatné,dokonce zabezpečené proti inkluzi z cizího webu, až na to že je to zavázané tomu, že to co je v url musí mít stejný název toho co se má vkládat (jen bez toho .php)

3.)další a zatím poslední metoda na kterou jsem zatím přišel:
url: nejakastranka.cz/main.php?menu=necocotamje
skript:
if ($_GET[\\\'menu\\\']==\\\'\\\') {include(\\\"novinky.php\\\");}
if ($_GET[\\\'menu\\\']==\\\'novinky\\\') {include(\\\"novinky.php\\\");}
if ($_GET[\\\'menu\\\']==\\\'tojeuplnejedno\\\
') {include(\\\"nejakynazev.php\\\");}

-toto používají skoro všude, nehrozí tu php injection.
Ale jedna věc není jistá ale nemám to ověřené: když bude mít menu třeba 100 položek pro inkluzi tak to bude vypadat takhle:
if ($_GET[\\\'menu\\\']==\\\'moznost1\\\') {include(\\\"moznost1.php\\\");}
if ($_GET[\\\'menu\\\']==\\\'moznost2\\\') {include(\\\"moznost2.php\\\");}
if ($_GET[\\\'menu\\\']==\\\'moznost3\\\') {include(\\\"moznost3.php\\\");}
//...po 97 řádcích
if ($_GET[\\\'menu\\\']==\\\'moznost100\\\') {include(\\\"moznost100.php\\\");}

Není tam nějak moc těch IF(... ,netrvalo by ověřování moc dlouho, nečekal by uživatel dlouho??
Fakt nevím možná je to blbost, vlastně od toho to dávám do diskuse
(odpovědět)
nejmenuje | E-mail | Website | ICQ 2600079763.7.2006 17:45
re: include()#
jo všude před to kam sem dával uvozovky se mi objevily 3 lomítka, to sem tam já nenapsal
(odpovědět)
nejmenuje | E-mail | Website | ICQ 2600079763.7.2006 17:50
re: include()#
for admins:
proboha: addslashes(nl2br(htmlspecialchars($prizpeve
k))));

stripslashes(...);
(odpovědět)
rob3.7.2006 18:07
re: include()#
konecne zase po sto letech rozumnej thread... jo, dobra je treti moznost, protoze i druha je dost zneuzitelna. pripona se da vochcat.... mas pravdu ze za pouziti tech if-u by ti server nepodekoval, ale prezil by... budto muzes psat else a ustvat se tim k smrti (obzvlast pokud pouzivas zavorky) a nebo pouzit case....

switch((integer)$_GET['menu']){

default: include ('novinky.php'); break;
case 1: include ('moznost1.php'); break;
case 2: include ('moznost2.php'); break;
case 3: include ('moznost3.php'); break;
...
case 100: include ('moznost100.php'); break;
}

...tahle moznost je imho prehlednejsi a rychlejsi. mozna i na psani a urcite i pro server ;-)



podle me sou ale lepsi tyhle moznosti:

1) budes klidne pouzivat moznosti 1 nebo 2, ale budes overovat jestli dany stranky sou v danny strance...treba vypisem adresare ( [link] )

2) budes si vyst databazi s cislama stranek a jejich url... takze to bude vypadat asi tak:

url: nejakyweb.cz/main.php?menu=neco.php

script:

if(!$_GET['menu'])
include('novinky.php');
else {
$menu=(integer)$_GET['menu'];
$res=mysql_query('SELECT `url` FROM `menu` WHERE `id`='.$menu.' LIMIT 1');
$res=mysql_fetch_assoc($res);
include($res['url']); }

...to je podle me nejbezpecnejsi a to zcela. je to i docela efektivni, lepsi nez zpusob #3 ale i tak je to trochu votrava ze musis vsechny menu logovat... ale pokud na ne mas nejakej redakcni system, tak to neni zadnej problem (imho)


(odpovědět)
dayvee | Website | ICQ 2689987333.7.2006 19:45

Zpět
 
 
 

 
BBCode