Forum und email

Använda gammal kod i nyare versioner av PHP

Nu när PHP har växt och blivit ett populärt scriptspråk har det medfört att det finns många källor till PHP-kod på internet, från vilka du kan hämta kod som du kan använda i dina egna script. För det mesta har utvecklarna av PHP försökt att göra språket bakåt-kompatibelt så att script skrivna i äldre versioner av PHP även ska kunna köras utan förändringar i nyare versioner, tyvärr är det inte alltid så idealiskt utan några förändringar behövs oftast.

De två viktigaste av de senaste förändringarna som påverkar äldre kod är:

  • Du rekommenderas inte längre att använda de äldre $HTTP_*_VARS-arrayerna (som behövde deklareras som globala om de användes i en funktion). Följande autoglobala arrayer introducerades i PHP » 4.1.0: $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_REQUEST, and $_SESSION. De äldre $HTTP_*_VARS-arrayerna, t.ex. $HTTP_POST_VARS, existerar fortfarande såsom de gjort sen PHP 3.
  • Externa variabeler registreras inte längre med automatik i det globala "variabelscopet". Med andra ord, från PHP » 4.2.0 har PHP-direktivet register_globals satts till off som standard i php.ini. Du bör istället använda de autoglobaler som nämnts ovan för att komma åt datan. Äldre script, böcker och lektioner kan bygga på att register_globals är påslaget. Om så är fallet kan du, t.ex. med adressen https://www.example.com/foo.php?id=42 använda $_GET['id'] istället för $id för att komma åt värdet på id. $_GET['id'] sätts oavsett om register_globals är påslaget eller inte.
För flera detaljer gällande dessa förändringar, se kapitlet om fördefinerade variabler och länkarna däri.