Autor | Zpráva | ||
---|---|---|---|
icka Profil * |
#1 · Zasláno: 10. 7. 2005, 19:52:47
Je toto bezpečný zápis include?
odkaz?strana=1 odkaz?strana=2... PHP: switch ($_GET["strana"]) { case 1: $page="stranka1.php"; break; case 2: $page="stranka2.php"; break; default: page="index.php"; } if (file_exists($page)) { include $page; } else { echo "Stránka nebyla nalezena"; } |
||
Dero Profil |
#2 · Zasláno: 10. 7. 2005, 19:56:28
Proč ne?
(jen u default větve Ti chybí $ u proměnné ...) |
||
icka Profil * |
#3 · Zasláno: 10. 7. 2005, 19:57:35
Já to psal narychlo... bez kontroly :-)
|
||
Charlie Profil |
#4 · Zasláno: 10. 7. 2005, 19:58:33 · Upravil/a: Charlie
Trošku bych to pozměnil:
|
||
icka Profil * |
#5 · Zasláno: 10. 7. 2005, 20:02:23
Charlie
Je tento zápis bezpečnější? A volba toho zavináče u include se mi líbí. |
||
Kaifman Profil |
#6 · Zasláno: 10. 7. 2005, 20:04:27
Charlie kdyz nebude _GET['stranka'] hodi ti to error takze if(empty($stranka)) by melo by nekde jinde a trochu jinak
|
||
Kaifman Profil |
#7 · Zasláno: 10. 7. 2005, 20:09:18
takhle to bude lepsi |
||
Charlie Profil |
#8 · Zasláno: 10. 7. 2005, 21:14:52
Kaifman, když nebude $_GET['stránka'], tak to vyhodí pouze notice a tento notice je v PHP implicitně vypnutý. Ten script je dost bezpečný.
|
||
Kaifman Profil |
#9 · Zasláno: 10. 7. 2005, 21:30:49
Charlie
implicitne vypnuty je maximalne na freehostingu a u tebe na locale ;o) Na vetsich webech je vetsinou zapnuto E_ALL bez vyjimky a vse se loguje pres vlastni error_handler do souboru. S takovymhle laxnim programatorskym pristupem by meli logy za chvili stovky MB a pritom ulpne zbytecne A pokud vim tak implicitni nastaveni php ma do nejake bezpecnosti hodne daleko, pokud si dobre pamatuju tak primo na zacatku konfiguraku php.ini je napsano ze toto defaultni nastaveni slouzi jen pro dev. ucely nebo tak nejak |
||
Charlie Profil |
#10 · Zasláno: 10. 7. 2005, 21:46:35
Nemyslím si, že programuji laxně, jedniné co vynechávám je právě tohle - kontrola existence proměnné.
|
||
Charlie Profil |
#11 · Zasláno: 10. 7. 2005, 21:47:20
Mimochodem dalo by se to zapsat třeba takhle:-)
<?php include($_GET['stranka']); ?> |
||
Kaifman Profil |
#12 · Zasláno: 10. 7. 2005, 21:59:59
<?php include($_GET['stranka']); ?>
tak to je jednoznacne nejlepsi zapis ;o) |
||
icka Profil * |
#13 · Zasláno: 11. 7. 2005, 00:02:58
Ta poslední verze je super... co si lámat hlavu s kódem že...?
Ale ještě malý dotaz co se týče includu. Když includuji nějaký soubor, který obsahuje PHP scripty a ten soubor obsahuje jen pole (měl by). Soubor je přenosný mezi dvěma pc, kde je aplikace a těma polema si ty aplikace aktualizuji - doplňuji do DBA. Ale co když si ten soubor pošlu mejlem a nějakej dobrák mi do toho inc souboru frkne nějakej báječnej skriptík, kterej mi při nejlepším smaže roční práci...? Dá se tomu includovanému souboru zabránit např. dočasně zakázat spouštět skript a nejdřív jej nějak ověřit, zda nebyl nijak víc modifikovaný? Třeba na základě atributů vytvoření souboru a změna souborů a pod... Snad víte o co mi jde... Díky |
||
Kaifman Profil |
#14 · Zasláno: 11. 7. 2005, 09:10:29 · Upravil/a: Kaifman
tak to sem teda vubec nepochopil.... :(
ale) >na vymenu dat bych pouzil xml,nebo csv a ne skripty, xml (csv) ti nikdo neublizi protoze si ho parsujes sam >jak by to tam do toho inc souboru dostal uz jsem vubec neztih :D >zalohuj >] |
||
Icka Profil * |
#15 · Zasláno: 11. 7. 2005, 09:27:10
No mám jedoduše funkci, která mi ukládá do inc souboru $pole[] (jako sloupec tabulky z DBA) a pak mám funkci, která mi zas ten soubor includuje, načte pole a postupně je ukládá do DBA... Jedno po druhém pomocí cyklu foreach.
S xml moc zkušeností nemám :-( Teda vůbec. A chctěl jsem aby přenosný soubor měl co nejmenší velikost, tak jsem zvolil pouze takto jednoduše textovou metodu... |
||
Kaifman Profil |
#16 · Zasláno: 11. 7. 2005, 09:33:27 · Upravil/a: Kaifman
xml i csv je jenom text
xml je podobny jako html koukni na www.kosek.cz csv jsou jen hodnoty oddelene carkam takze to je jeste mensi nez ty tvoje pole na kazdym radku si das jeden radek tabulky stejne jako v db hodnota1,hodnota2,hodnota3 hodnota1,hodnota2,hodnota3 hodnota1,hodnota2,hodnota3 pak si to jen nactes
|
||
Icka Profil * |
#17 · Zasláno: 11. 7. 2005, 09:45:40
No ale co když mám víc tabulek a mění se mi jen číslo roku, pač v těch tabulkách je mnoho údajů (každý týden 50 - 60 nových) tak mám strukturu DBA rozdělenou na roky seznam_2004, seznam_2005, seznam_2006 no a tam bylo potřeba zvolit vícerozměrné $pole[04][] = "hodnota"; $pole[04][] = "hodnota"; $pole[05][] .......
|
||
Kaifman Profil |
#18 · Zasláno: 11. 7. 2005, 10:50:22 · Upravil/a: Kaifman
uz ty tabulky kazda na jinej rok je blbost, mel by si mit proste jednu tabulku treba se jmenen data ve ktere bude
rok,hodnota1, hodnota2, hodnota3, atd a pak si akorat v selectu v podmince das co chces za rok kdybys potom chtel delat treba nejaky statistiky nebo tak neco pres vsechny roky nebo treba jen pres dva musel by si delat pro kazdej rok novej dotaz coz je dost zbytecny neni o dost jednodusi napsat select hodnota1 form data where rok > '2002' and rok < '2005' a tokovouhle tabulku bez problemu ulozis do csv 50 - 60 radku tydne rozhodne neni velka tabulka to se neboj ... vetsi tabulka je treba stotisic a vic ;] |
||
Icka Profil * |
#19 · Zasláno: 11. 7. 2005, 10:57:39
Dobře, beru si to k srdci. Díky za pomoc. To XML není špatné, ale teď asi zvolím csv a DBA přepracuji :-)
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0