Nefunguje předávání proměnných v PHP

Pokud Vám v php aplikaci nefunguje předávání proměnných z formuláře, je na vině defaultně vypnutá direktiva register_globals. Její zapnutí způsobuje to, že se z dat přijatých ze serveru nebo skriptu (metodou GET, POST, SESSION...) automaticky vytvoří proměnná. Direktiva je od verze 4.2 defaultně v konfiguraci vypnuta (a od verze 5.4 v php zcela chybí!)

Problém se projevuje například takto: do adresní řádky napíšete

http://www.mojedomena.cz/index.php?prvni=10&druha=20

Jenže po odeslání je obsah proměnných $prvni a $druha prázdný. Proměnná se nepřenesla.

Existují 2 možnosti nápravy
  1. autorizovanou žádostí požádat o zapnutí nebo nastavení starší verze PHP 5.3
  2. přidat na začátek skriptu následující kód

    $prvni = $_GET["prvni"];
    $druha = $_GET["druha"];
atd. podle toho jakou metodou jsou proměnné předávány.
 
Důrazně doporučujeme využít druhou možnost - již z hlediska pozdější kompatibility a hlavně máte proměnné pod kontrolou.

Tato situace může nastat i když používáte přepis adresy pomocí pravidel rewrite, ale proměnná se nepředá. Neznamená to, že je rewrite nefunkční, ale jen vypnuté register_globals.

Další informace můžete najít například v dokumentaci php na této adrese
 
Seznam nejčastěji používaných proměnných
 
Proměnná Význam
$_SERVER údaje o serveru i uživateli
$_POST proměnné poskytované skriptu přes HTTP POST (nejčastěji při odeslání formuláře)
$_GET proměnné poskytované skriptu přes HTTP GET (tj. přes adresní řádek)
$_COOKIE proměnné poskytované skriptu přes HTTP cookies
$_FILES proměnné poskytované skriptu přes HTTP POST upload souborů
$_SESSION Proměnné, které jsou momentálně registrovány v aktuální relaci skriptu