Autor Zpráva
virgo86
Profil
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
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
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
virgo86:
Ano, přesně to.
pcmanik
Profil
A tu direktivu zase pekne vypni, z hladiska bezpecnosti to nieje dobre...
virgo86
Profil
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
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
pcmanik:
ok díky a na serveru řeknu spravci ať mi to vypne
Str4wberry
Profil
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
Str4wberry:
Ano mas pravdu,
ale pisanie
$abcd = "";
a podobne mi pride zbytocne, a len to zneprehladnuje kod.
Tori
Profil
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
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
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
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
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).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: