Register Globals directive is turned OFF from PHP version 4.2.

PHP Global Variables
Environment variables, GET, POST, Server, Cookie variables are knows as Global Variables.

When register_globals directive is turned ON (like what most ISP’s did), you can access/set the global variables like $username, $password instead of $_POST[“username”], $_POST[“password”].

To turn OFF register global variables, you can add a setting to .htaccess like …
php_flag register_globals off

What is the harm when register_globals is turned ON?

Take the below code for example.

Program: displayuser.php


If register_global is turned ON, you can display the confidential data from the above program by accessing http://www.yoursite.com/displayuser.php?isValidUser=1

So is the case with the other global variables. This is because in PHP we needn’t have to initialize variables in our program before its access.

How to find if register_globals is turned ON/OFF?

Two easy methods …

i) from phpinfo() function which will display a whole load of data on your environment


ii) by declaring a having a form data or session data declared in one page and trying to set the variable ON/OFF in the second page via querystring

REMEMBER: From PHP 6 register global directive will be REMOVED. So do not depend on it in your programs.

Two things to remember for beginners!
i) initialize variables
ii) validate EVERY user input