PHP - tutorial - 12 - superglobals

revision:


Some "predefined variables" in PHP are "superglobals".

This means that they are always accessible, regardless of scope. 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

$GLOBALS is a PHP super global variable.

This variable 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:

100
3.141
code:
                <?php
                    $x = 75;
                    $y = 25; 
                    function addition() {
                        $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
                    }
                    addition();
                    echo $z;
                    echo "<br>"
                ?>
                <?php
                    $pi = 3.141;
                    function get_pi() {
                        return $GLOBALS['pi'];
                    }

                    echo get_pi();

                ?>
            

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

example:

/tutorials/PHP/PHP-12-superglobals.php
lwitters.com
lwitters.com

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
/tutorials/PHP/PHP-12-superglobals.php
code:
                <?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'];
                
                ?>

            

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

$_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 Host name 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 web server;

$_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 someone@w3schools.com);

$_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

$_REQUEST is a PHP super global variable which is used to collect data after submitting an HTML form.

example:

Name:
code:
               <div>
                    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
                        Name: <input type="text" name="fname">
                        <input type="submit">
                    </form>
                </div>
                <?php
                    if ($_SERVER["REQUEST_METHOD"] == "POST") {
                        // collect value of input field
                        $name = $_REQUEST['fname'];
                        if (empty($name)) {
                        echo "Name is empty";
                        } else {
                        echo $name;
                        }
                    }
                ?>

            

$_POST is a PHP super global variable which is used to collect form data after submitting an HTML form with method="post".

$_POST is also widely used to pass variables.

Name:
code:
                <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 = $_POST['fname'];
                        if (empty($name)) {
                            echo "Name is empty";
                        } else {
                            echo $name;
                        }
                    }
                ?>
            

$_GET is a PHP super global variable which is used to collect form data after submitting an HTML form with method="get".

$_GET can also collect data sent in the URL.

example:

code:
                
            

The $_FILES uperglobal contains the contents of the files uploaded to the current script via the POST method.

example:

code:
                <div>
                    <form action="<?php echo $_SERVER['PHP_SELF']; ?>"
                        method="post" enctype="multipart/form-data">
                        <input type="file" name="file"/>
                        <input type="submit" value="Submit"/>
                    </form>
                    <?php
                        if(sizeof($_FILES) > 0)
                        print_r($_FILES);

                    ?>
                </div>
            

The $_ENV superglobal contains an array of information about your environment.

example:

Array ( )
code:
                <?php
                print_r($_ENV);
                ?>  
            

The $_COOKIE superglobal is an associative array of cookie variables, set by the setcookie() function, which are passed to the current script.

example:

code:
            <?php
                $browser = "Safari";
                setcookie("browser", $browser, time()+60*60*24);
            ?>
            <?php
                if (isset($_COOKIE['browser']))
                    echo htmlspecialchars($_COOKIE['browser']);
            ?>
            

The $_SESSION superglobal is an associative array of session variables which are available in the current script.

A session is usually set after the session_start() function.

example:

code:
                <?php
                    session_start();
                    $_SESSION['city'] = 'Shillong';
                    
                ?>