V PHP nefungují proměnné předávané z URL nebo formulářů

Příznaky

Příčiny

Způsob předávání položek URL nebo formulářů pomocí lokálních proměnných pochází z PHP verze 4 a starší. Považuje se za zastaralý a již od vzniku PHP5 se obecně doporučuje používání výhradně tzv. superglobálních proměnných. Důvody jsou zejména bezpečnostní.

Od verze PHP 5.4 je již direktiva register_globals zcela odstraněna.

Řešení - používejte superglobální proměnné

Nejpoužívanějšími superglobálními proměnnými jsou:

Příklad použití:

<?php
  
#po zadani http://example.com/test.php?menu=3

  #vypnute register_globals
  
echo $menu;           //nevypise nic (promenna $menu neexistuje)
  
echo $_GET["menu"];   //vypise 3

  #zapnute register_globals
  
echo $menu;           //vypise 3
  
echo $_GET["menu"];   //vypise 3
?>

Superglobální proměnné jsou dostupné také uvnitř funkcí, aniž by bylo nutné v každé funkci volat např. global $menu;

Dokumentace

Seznam všech superglobálních proměnných naleznete v manuálových stránkách PHP, včetně praktických ukázek použití.

Dočasné řešení - zapněte register_globals

Pokud však vzhledem k okolnostem nastavení přece jen potřebujete, postupujte následovně.

Zjistěte nejprve v administraci, jakou verzi PHP používáte a pokračujte jednou z následujících možností:

Pro PHP 5.4 nebo novější

Požádejte tech. podporu o změnu PHP na verzi 5.3 a postupujte dle následujícího.

Pro PHP 5.3.x

Vytvořte pomocí FTP soubor s názvem .user.ini a vložte do něj následující řádek

register_globals = 1 

Pokud si s nastavením nevíte rady, neváhejte se obrátit na zákaznickou podporu ONEbit.cz. Rádi Vám pomůžeme.

 

Související stránky