Recuperar variables

Lo mas importante de entender es que el protocolo HTTP no tiene estado. Es decir cada petición va por su cuenta, no sabe sobre nada sobre la identidad del cliente y no tiene memoria. En la practica esto quiere decir que todas las variables creadas en una pagina PHP mueren al terminar de dibujarse la pagina.

1. $GLOBALS[]

Es un matriz asociativo que contiene las referencias a todas la variables que están definidas en el ámbito global del script. Los nombres de las variables son las claves de la matriz.

$nom = 'variable publica';
function prueba() {
    $nom = 'variable local';
    echo '$nom en el ámbito global: ' . $GLOBALS['nom'] . "\n";
    echo '$nom en el ámbito simple: ' . $nom;
}
prueba();

Una variable 'superglobal' es automaticamente global. Significa que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para usarla dentro de una función o método.

2. $_SESSION[]

Una manera de mantener datos con persistencia entre ejecución de un programa se llaman variables de sesión. Son variables son almacenadas en un archivo especial en el lado del cliente llamado cookie, que solo pueden almacenar texto plano, solo pueden ser modificadoras por el sitio web que las creo y caducan de forma automática.

session_start();
//Escribe
$_SESSION['user'] = $row['user'];
...
session_write_close();
//Lee
$user = $_SESSION['user'];
...
session_destroy();

3. $_REQUEST[]

Sirva para recuperar valor de una cierta variable enviada con GET o POST en un formulario.

if (isset($_REQUEST['n'])) {
	$n = $_REQUEST['n'];
}else{
	$n = 0;
}

4. $_GET[]

Una matriz asociativo que recupera las variables pasadas al script actual vía parámetros URL.

$variable = $_GET['nombre'];

No tiene sentido usar $_GET[] es mejor usar $_REQUEST[] ya que este funciona con ambos métodos indistintamente.

5. $_POST[]

Una matriz asociativo de variables pasadas al script actual a través del método POST de HTTP cuando se emplea application/x-www-form-urlencoded o multipart/form-data como Content-Type de HTTP en la petición. La única forma de activar el método POST es mediante el envío de un formulario.

$variable = $_POST['nombre'];

No tiene sentido usar $_POST[] es mejor usar $_REQUEST[] ya que este funciona con ambos métodos indistintamente.

6. $_FILES[]

Una matriz asociativo de elementos subidos al script en curso a través del método POST. La estructura de esta matriz se resume en la sección Subidas con el método POST.

$_Files['download']['error']['file']
[file] => Array(
   [name] => miImagen.jpg        //Nombre del archivo
   [type] => image/jpeg          //Tipo: text/plain
   [tmp_name] => /tmp/php        //Ruta
   [error] => UPLOAD_ERR_OK      //Código de error
   [size] => 98174               //Tamaño en bytes
)
Códigos de error
0UPLOAD_ERR_OK
1UPLOAD_ERR_INI_SIZE
2UPLOAD_ERR_FORM_SIZE
3UPLOAD_ERR_PARTIAL
4UPLOAD_ERR_NO_FILE
6UPLOAD_ERR_NO_TMP_DIR
7UPLOAD_ERR_CANT_WRITE
8UPLOAD_ERR_EXTENSION
if ($file['name']['error'] == 0){
   //Todo ok
}else{
   //Algún error
}

7. $_SERVER[]

Información del entorno del servidor y de ejecución.

8. $_COOKIE[]

Cookies de HTTP.