Autor | Zpráva | ||
---|---|---|---|
virgo86 Profil |
#1 · Zasláno: 7. 1. 2011, 17:26:06
zdravím předem chci upozornit že problém nastal v okamžiku kdy jsem přeinstaloval PHP na novější verzi!(předtím script fungoval)
Využivám přikazu switch pro určení jazyku web. stránky a zobrazení, teď mi to bohužel nejde:( odkaz: <a href="index.php?page=kontakt&language=en">english</a> script <?php //volaní funkci ze souboru fce.php require_once('fce.php'); //proměnná language urcuje v jakém jazyce se stránky zobrazí //proměnná page určí jaká stránka se zobrazí //proměnná folder je pro fotogalerii je zde proto aby lišta z volbou jazyků //správně vratíla spátky tam kde se jazyk změnil titulek($language,$page,$folder); //--------------------------------------------------------// //přepínač jazyku switch ($language) { //--------česky-----------// default: ?> <h3>česky?</h3> <?php break; //--------english-----------// case 'en': ?> <h3> english</h3> <?php break; //--------deutsch-----------// case 'de': ?> <h3> německo</h3> <?php break; } konec(); ?> Pořad mi to ukazuje česky i když v url adrese mám proměnnou? |
||
Radek9 Profil |
#2 · Zasláno: 7. 1. 2011, 17:31:49
virgo86:
To je tím, že je vypnutá direktiva register_globals. Místo těch proměnných použij globální pole $_GET. |
||
virgo86 Profil |
#3 · Zasláno: 7. 1. 2011, 17:38:53 · Upravil/a: virgo86
Radek9:
díky za nakopnutí zapnul jsem v php.ini tu direktivu, na serveru mi to beží tak. „použij globální pole $_GET“ jakým způsobem? jsem svateční programator php tak abych pro příště věděl. Máš na mysli tohle: $language = $_GET['language']; díky za odpověď |
||
Radek9 Profil |
#4 · Zasláno: 7. 1. 2011, 17:55:19
virgo86:
Ano, přesně to. |
||
pcmanik Profil |
#5 · Zasláno: 7. 1. 2011, 17:59:28 · Upravil/a: pcmanik
A tu direktivu zase pekne vypni, z hladiska bezpecnosti to nieje dobre...
|
||
virgo86 Profil |
#6 · Zasláno: 7. 1. 2011, 18:04:16
pcmanik:
„A tu direktivu zase pekne vypni, z hladiska bezpecnosti to nieje dobre...“ jo tak proč provozovatel mého webhostingu to má zapnute? V mojem virtualním serveru to snad nebezpečné není nebo snad taky? |
||
pcmanik Profil |
#7 · Zasláno: 7. 1. 2011, 18:18:41 · Upravil/a: pcmanik
Trocha sa zamysli, nejaky sviniarsky uzivatel ti moze podstrčiť premennu. A na svojom virtualnom servery si to tiez vypni, je dobre naucit sa hned od zaciatku pracovat s poliami
$_GET, $_POST |
||
virgo86 Profil |
#8 · Zasláno: 7. 1. 2011, 18:30:52
pcmanik:
ok díky a na serveru řeknu spravci ať mi to vypne |
||
Str4wberry Profil |
#9 · Zasláno: 7. 1. 2011, 18:52:50
„Trocha sa zamysli, nejaky sviniarsky uzivatel ti moze podstrčiť premennu.“
To ti může nezávisle na register_globals , když je aplikace špatně napsána – a pokud je dobře, tak žádné bezpečnostní riziko zapnutí register_globals nepředstavuje.
|
||
pcmanik Profil |
#10 · Zasláno: 7. 1. 2011, 20:01:20 · Upravil/a: pcmanik
Str4wberry:
Ano mas pravdu, ale pisanie $abcd = ""; |
||
Tori Profil |
#11 · Zasláno: 7. 1. 2011, 20:11:35
pcmanik:
> pisanie $abcd = ""; a podobne mi pride zbytocne, a len to zneprehladnuje kod. Souhlasím, taky jsem si říkala, že prohledávat stovky řádek cizího kódu, abych zjistila, co, kde a jestli vůbec tu proměnnou definuje, je vlastně celkem zábava. ;-) |
||
virgo86 Profil |
#12 · Zasláno: 8. 1. 2011, 14:15:06
Tori:
„Souhlasím, taky jsem si říkala, že prohledávat stovky řádek cizího kódu, abych zjistila, co, kde a jestli vůbec tu proměnnou definuje, je vlastně celkem zábava. ;-)“ tak to stačí prostě na začatku scriptu napsat globální pole $_GET či $_POST pro všechny proměnné co použiji? nebo myslíte misto $abcd= "" používat všude $_GET[abcd']=""? |
||
pcmanik Profil |
#13 · Zasláno: 8. 1. 2011, 14:47:35
Ne, ty si to nepochopil, pri zapnutych register globals by ti uzivatel mohol podstrcit premennu $abcd v linku, a ty by si to neocakaval tak by to narusilo tvoj skript, preto sa tam dava $abcd = ""; teda sa definuje ako prazdna premmenna. Staci ked to vypnes a budes pouzivat $abcd= $_GET[abcd'];
|
||
virgo86 Profil |
#14 · Zasláno: 8. 1. 2011, 15:13:37
pcmanik:
„Staci ked to vypnes a budes pouzivat $abcd= $_GET[abcd'];“ to už tak použivám to jsem pochopil, ale „len to zneprehladnuje kod.“ to jsem ptál. díky |
||
Str4wberry Profil |
#15 · Zasláno: 9. 1. 2011, 11:58:11
Tak inicializovat proměnné se rozhodně vyplatí. Například člověk později do kódu vloží kus jiného kódu, který má některé názvy proměnných stejné, a problém může být na světě. Navíc psaní
$abcd = ""; třeba před cyklem, kde se do $abcd přidává text určený k vypsání, kód naopak zpřehledňuje, protože ihned vidím, že v té proměnné nic není (nemá být).
|
||
Časová prodleva: 14 let
|
0