PHP Variable Scope & Superglobal Variables

In PHP, variables can be declared anywhere in the script. PHP has three different variable scopes:

  • local
  • global

Local Scope: A variable declared inside the function has a Local Scope and can be accessed only inside the function.

You can have local variables with the same name in different functions because local variables are only recognized by the function in which they are declared.

Example :

<?php
function test(){
    $a=5;        //local scope
    echo "Variable a inside function is: $a" ."<br>";
}
test();

//using x outside the function will generate an error
echo "Variable a outside function is: $a";
?>

Global Scope: A variable declared outside the function has a Global Scope and can be accessed only outside the function.

Example :

<?php
$a=5; //global scope
function test(){
    //using x inside the function will generate an error
    echo "Variable a inside function is: $a" ."<br>";
}
test();
echo "Variable a outside function is: $a";
?>

Unlike other programming languages, in PHP a variable declared outside the function cannot be used within the function.

PHP Global Keyword

In PHP global keyword is used to access a global variable from within a function. To do so, use the global keyword before the variables inside the function.

Example :

<?php
$a=50;
$b=10;
function test(){
    global $a, $b;
    $b=$a+$b;
}

test();
echo $b;        //output 60
?>

PHP also stores all global variables in an array called $GLOBALS[index].

PHP Static Keyword

Normally, when a function is executed, all of its variables are deleted. However, sometimes we want a local variable not to be deleted. We need those variables for further jobs.

To do so, use a static keyword before the variable name when you first declare the variable.

Example : 

<?php
function test(){
    static $a=0;
    echo $a;
    $a++;
}

test();
echo "<br>";
test();
echo "<br>";
test();
?>

The output is 0 1 2.

When each time function is called, that variable will still have the information it contained from the last time the function was called.

PHP Global Variables – Superglobals

Superglobals were introduced in PHP 4.1.0, and are built-in variables that are always available in all scopes.

Some predefined variables in PHP are “superglobals”, which means that they are always accessible, regardless of scope – and you can access them from any function, class, or file without having to do anything special.

The PHP superglobal variables are:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

PHP $GLOBALS

$GLOBALS is a PHP super global variable that is used to access global variables from anywhere in the PHP script (also from within functions or methods).

PHP stores all global variables in an array called $GLOBALS[index]. The index holds the name of the variable.

Example : 

<?php
$a = 75;
$b = 25;
 
function addition() {
    $GLOBALS['c'] = $GLOBALS['a'] + $GLOBALS['b'];
}
 
addition();
echo $c;
?>

The above example shows how to use the super global variable $GLOBAL. In this example, c is a variable present within the $GLOBALS array, it is also accessible from outside the function!

PHP $_SERVER

$_SERVER is a PHP super global variable that holds information about headers, paths, and script locations.

Example : 

<!DOCTYPE html>
<html>
<body>

<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

</body>
</html>

The following table lists the most important elements that can go inside $_SERVER:

Element/Code Description
$_SERVER[‘PHP_SELF’] Returns the filename of the currently executing script
$_SERVER[‘GATEWAY_INTERFACE’] Returns the version of the Common Gateway Interface (CGI) the server is
using
$_SERVER[‘SERVER_ADDR’] Returns the IP address of the host server
$_SERVER[‘SERVER_NAME’] Returns the name of the host server (such as www.w3schools.com)
$_SERVER[‘SERVER_SOFTWARE’] Returns the server identification string (such as Apache/2.2.24)
$_SERVER[‘SERVER_PROTOCOL’] Returns the name and revision of the information protocol (such as HTTP/1.1)
$_SERVER[‘REQUEST_METHOD’] Returns the request method used to access the page (such as POST)
$_SERVER[‘REQUEST_TIME’] Returns the timestamp of the start of the request (such as 1377687496)
$_SERVER[‘QUERY_STRING’] Returns the query string if the page is accessed via a query string
$_SERVER[‘HTTP_ACCEPT’] Returns the Accept header from the current request
$_SERVER[‘HTTP_ACCEPT_CHARSET’] Returns the Accept_Charset header from the current request (such as
utf-8,ISO-8859-1)
$_SERVER[‘HTTP_HOST’] Returns the Host header from the current request
$_SERVER[‘HTTP_REFERER’] Returns the complete URL of the current page (not reliable because not all
user agents support it)
$_SERVER[‘HTTPS’] Is the script queried through a secure HTTP protocol
$_SERVER[‘REMOTE_ADDR’] Returns the IP address from where the user is viewing the current page
$_SERVER[‘REMOTE_HOST’] Returns the Hostname from where the user is viewing the current page
$_SERVER[‘REMOTE_PORT’] Returns the port being used on the user’s machine to communicate with the
webserver
$_SERVER[‘SCRIPT_FILENAME’] Returns the absolute pathname of the currently executing script
$_SERVER[‘SERVER_ADMIN’] Returns the value given to the SERVER_ADMIN directive in the web server
configuration file (if your script runs on a virtual host, it will be the value
defined for that virtual host) (such as [email protected])
$_SERVER[‘SERVER_PORT’] Returns the port on the server machine being used by the web server for
communication (such as 80)
$_SERVER[‘SERVER_SIGNATURE’] Returns the server version and virtual host name which are added to
server-generated pages
$_SERVER[‘PATH_TRANSLATED’] Returns the file system-based path to the current script
$_SERVER[‘SCRIPT_NAME’] Returns the path of the current script
$_SERVER[‘SCRIPT_URI’] Returns the URI of the current page

PHP $_REQUEST

PHP $_REQUEST is a PHP super global variable that is used to collect data after submitting an HTML form. This can be used to collect data with both post and get method.

The example below shows a form with an input field and a submit button. When a user submits the data by clicking on “Submit”, the form data is sent to the file specified in the action attribute of the <form> tag. In this example, we point to this file itself for processing form data. If you wish to use another PHP file to process form data, replace that with the filename of your choice. Then, we can use the super global variable $_REQUEST to collect the value of the input field:

Example : 

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>

</body>
</html>

PHP $_GET

$_GET[“FormElementName”]
It is used to collect value from a form(HTML script) sent with method=’get’. information sent from a form with the method=’get’ is visible to everyone(it is displayed on the browser URL bar).

PHP $_POST

$_POST[“FormElementName”]
It is used to collect value in a form with method=”post”. Information sent from a form is invisible to others.(you can check on the address bar)

PHP $_REQUEST

$_REQUEST[“FormElementName”]
This can be used to collect data with both the post and get method.

PHP $_FILES

$_FILES[“FormElementName”] –  It can be used to upload files from a client computer/system to a server.

OR

$_FILES[“FormElementName”][“ArrayIndex”] – Such as File Name, File Type, File Size, File Temporary Name.

PHP $_SESSION

$_SESSION[“VariableName”]
A session variable is used to store information about a single user and is available to all pages within one application.

PHP $_COOKIE

$_COOKIE[“VariableName”]
A cookie is used to identify a user. cookie is a small file that the server embedded on the user’s computer.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.