JTagua

Tutorial PHP: MySQL

Licencia

Creative Commons License

Visitas:

  • 889.260 hits

Tutorial PHP: MySQL

mysqli::__construct

mysqli_connect

Descripción.

Estilo orientado a objetos

mysqli::__construct() ([ string $host = ini_get(«mysqli.default_host») [, string $username = ini_get(«mysqli.default_user») [, string $passwd = ini_get(«mysqli.default_pw») [, string $dbname = «» [, int $port = ini_get(«mysqli.default_port») [, string $socket = ini_get(«mysqli.default_socket») ]]]]]] )

Estilo por procedimientos

mysqli mysqli_connect ([ string $host = ini_get(«mysqli.default_host») [, string $username = ini_get(«mysqli.default_user») [, string $passwd = ini_get(«mysqli.default_pw») [, string $dbname = «» [, int $port = ini_get(«mysqli.default_port») [, string $socket = ini_get(«mysqli.default_socket») ]]]]]] )

Abre una conexión al Servidor de MySQL que está en ejecución.

Parámetros

host
Puede ser o un nombre de host o una dirección IP. Pasando el valor NULL o la cadena «localhost» a este parámetro, se asumirá el host local. Cuando es posible, se usarán tuberías en lugar del protocolo TCP/IP. Anteponer p: al host, abre una conexión persistente.
username
El nombre de usuario de MySQL.
passwd
Si no se proporciona o es NULL, el servidor MySQL intentará autentificar el usuario solo con aquellos registros de usuarios que no tienen contraseña. Esto permite que un nombre de usuario ser usado con diferentes permisos (dependiendo de si se proporciona una contraseña o no).
dbname
Si se proporcioina, especificará la base de datos prederminada a usar cuando se realizan consultas.
port
Especifica el número al que intentar conectar al servidor de MySQL.
socket
Especifica el socket o la tubería con nombre que debería usarse. Especificar el parámetro socket no determinará explicitamente el tipo de conexión a utilizar cuando se conecte al servidor MySQL. El modo de realizar la conexión a la base de datos MySQL es determinado por el parámetro host.

Valores devueltos

Devuelve un objeto que representa la conexión al servidor MySQL.

Estilo orientado a objetos

<?php
$mysqli = new mysqli('localhost', 'mi_usuario', 'mi_contraseña', 'mi_bd');

/*
* Esta es la forma OO "oficial" de hacerlo,
* AUNQUE $connect_error estaba averiado hasta PHP 5.2.9 y 5.3.0.
*/
if ($mysqli->connect_error) {
die('Error de Conexión (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}

/*
* Use esto en lugar de $connect_error si necesita asegurarse
* de la compatibilidad con versiones de PHP anteriores a 5.2.9 y 5.3.0.
*/
if (mysqli_connect_error()) {
die('Error de Conexión (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}

echo 'Éxito... ' . $mysqli->host_info . "\n";

$mysqli->close();
?>

Estilo orientado a objetos cuando se extiende la clase mysqli


</div>
<div>
<div><code> <?php

class foo_mysqli extends mysqli {
public function __construct($host, $usuario, $contraseña, $bd) {
parent::__construct($host, $usuario, $contraseña, $bd);

if (mysqli_connect_error()) {
die('Error de Conexión (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
}

$bd = new foo_mysqli('localhost', 'mi_usuario', 'mi_contraseña', 'mi_bd');

echo 'Éxito... ' . $bd->host_info . "\n";

$bd->close();
?> </code></div>
<div>

Estilo por procedimientos

</div>
<div><code> <?php
$enlace = mysqli_connect('localhost', 'mi_usuario', 'mi_contraseña', 'mi_bd');

if (!$enlace) {
die('Error de Conexión (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}

echo 'Éxito... ' . mysqli_get_host_info($enlace) . "\n";

mysqli_close($enlace);
?> </code></div>
<div>

El resultado de los ejemplos serían:

Éxito... MySQL host info: localhost via TCP/IP

MySQLnd siempre utiliza el juego de caracteres de idioma predeterminado.

El juego de caracteres se envía en la autentificación/acuerdo que se produce durante la conexión, que utilizará mysqlnd.Libmysqlclient utiliza el juego de caracteres predeterminado definido en my.cnf o se puede establecer llamando mysqli_options() antes de user mysqli_real_connect(), pero después de mysqli_init().
Sólo para la sintaxis OO: Si una conexión falla se devuelve un objeto.
Para comprobar si la conexión falló, use la función mysqli_connect_error() o la propiedad mysqli->connect_error como en los ejemplos anteriores.

Si es necesario establecer las opciones, tales como el tiempo de espera de conexión, se debe utilizar mysqli_real_connect() en su lugar.

Llamar al constructor sin parámetros es lo mismo que llamar a la función mysqli_init().

El error «Can’t create TCP/IP socket (10106)» normalmente significa que la directiva de configuración variables_order no contiene el carácter E. En Windows, si el entorno no es copiado, la variable de entorno SYSTEMROOT no estará disponible y PHP tendrá problemas al cargar Winsock.


mysqli::$connect_error

mysqli_connect_error

(PHP 5) mysqli::$connect_error — mysqli_connect_error — Devuelve una cadena con la descripción del último error de conexión

Descripción

Estilo orientado a objetos

string $mysqli->connect_error;

Estilo por procedimientos

string mysqli_connect_error ( void )

Devuelve el último mensaje de error de la ultima llamada mysqli_connect().

Valores devueltos

Una cadena que describe el error. Devuelve NULL si no ha ocurrido ningún error.

Estilo orientado a objetos


Estilo por procedimientos


 

El resultado de los ejemplos serían:
Connect Error: Access denied for user 'fake_user'@'localhost' (using password: YES)

Y así el nuevo código de conexión quedará en la forma,

<?php
$link = @mysqli_connect('localhost', 'robin', 'robin123', 'company_db');

if (mysqli_connect_error()) {
	$logMessage = 'MySQL Error: ' . mysqli_connect_error();
	// Call your logger here.
	die('Could not connect to the database');
}

// Rest of the code goes here

?>

mysqli::$connect_errno

mysqli_connect_errno

(PHP 5) mysqli::$connect_errno — mysqli_connect_errno — Devuelve el código de error de la última llamada

Descripción.

Estilo orientado a objetos

string $mysqli->connect_errno;

Estilo por procedimientos

int mysqli_connect_errno ( void )

Devuelve el ultimo código de error de la última llamada mysqli_connect().

Los números de los mensajes de error están listados en el fichero de cabeceras de MySQL errmsg.h, los números de los mensajes de error del servidor están listados en mysqld_error.h. En la distribución de código fuente puede encontrar una lista completa de los mensajes de error y sus números en el fichero Docs/mysqld_error.txt.

Valores devueltos

Un código de error para la ultima llamada a mysqli_connect(), si ha fallado. cero significa que no ha ocurrido ningún error.

Estilo orientado a objetos

Estilo por procedimientos


 

Tutorial PHP: Variables predefinidas.

PHP proporciona una gran cantidad de variables predefinidas para todos los scripts. Las variables representan de todo, desde variables externas hasta variables de entorno incorporadas, desde los últimos mensajes de error hasta los últimos encabezados recuperados.

Tabla de contenidos

Superglobals — Superglobals son variables internas que están disponibles siempre en todos los ámbitos
$GLOBALS — Hace referencia a todas las variables disponibles en el ámbito global
$_SERVER — Información del entorno del servidor y de ejecución
$_GET — Variables HTTP GET
$_POST — Variables HTTP POST
$_FILES — Variables de Carga de Archivos HTTP
$_REQUEST — Variables HTTP Request
$_ENV — Variables de entorno

$_SESSION — Variables de sesión
$_COOKIE — Cookies HTTP
$php_errormsg — El mensaje de error anterior
$HTTP_RAW_POST_DATA — Datos POST sin tratar
$http_response_header — Encabezados de respuesta HTTP

$argc — El número de argumentos pasados a un script
$argv — Array de argumentos pasados a un script

Superglobals

Superglobals — Superglobals son variables internas que están disponibles siempre en todos los ámbitos.

No es necesario emplear global $variable; para acceder a ellas dentro de las funciones o métodos.

Las variables superglobals son:

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

$_SERVER

(PHP 4 >= 4.1.0, PHP 5)

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

Descripción

$_SERVER es un array que contiene información, tales como cabeceras, rutas y localizaciones del código. Las entradas en este array son creadas por el servidor web. No existe garantía que cada servidor web proporcione todas estas entradas, ya que existen servidores que pueden omitir algunas o proporcionar otras que no se encuentran recogidas aquí. Un gran número de estas variables se encuentran recogidas en » especificación CGI 1.1, así que al menos debe esperar encontrar estas entradas.

$HTTP_SERVER_VARS contiene la misma información inicial, pero no es una variable superglobal. (Fijese que $HTTP_SERVER_VARS y $_SERVER son diferentes variables y que por tanto PHP las trata diferente).

Puede encontrar o no los siguientes elementos en $_SERVER. Tenga en cuenta que si ejecuta PHP desde línea de comando pocos o ninguno de los siguientes elementos estarán disponibles (o tendrán algún significado).

PHP_SELF
El nombre del archivo de script ejecutándose actualmente, relativa al directorio raíz de documentos del servidor. Por ejemplo, el valor de $_SERVER[‘PHP_SELF’] en un script ejecutado en la dirección http://example.com/test.php/foo.bar será /test.php/foo.bar. La constante __FILE__ contiene la ruta completa del fichero actual, incluyendo el nombre del archivo. Si PHP se está ejecutando como un proceso de línea de comando, esta variable es el nombre del script desde PHP 4.3.0. En anteriores versiones no estaba disponible.
‘argv’
Array de los argumentos enviados al script. Cuando se ejecuta el script en línea de comando se obtiene acceso a los parámetros de línea de comando con un estilo parecido a como sería en C. Cuando se ejecuta el script mediante el método GET, contendrá la cadena de la consulta.
‘argc’
Contiene el número de parámetros de línea de comando enviados al script (si se ejecuta en línea de comando).
GATEWAY_INTERFACE
Número de revisión de la especificación CGI que está empleando el servidor, por ejemplo ‘CGI/1.1‘.
SERVER_ADDR
La dirección IP del servidor donde se está ejecutando actualmente el script.
SERVER_NAME
El nombre del host del servidor donde se está ejecutando actualmente el script. Si el script se ejecuta en un host virtual se obtendrá el valor del nombre definido para dicho host virtual.
SERVER_SOFTWARE
Cadena de identificación del servidor dada en las cabeceras de respuesta a las peticiones.
SERVER_PROTOCOL
Nombre y número de revisión del protocolo de información a través del cual la página es solicitada, por ejemplo ‘HTTP/1.0‘.
REQUEST_METHOD
Método de petición empleado para acceder a la página, es decir ‘GET‘, ‘HEAD‘, ‘POST‘, ‘PUT‘.

Nota:

El script de PHP se considera terminado después de enviar las cabeceras (es decir después de producir cualquier resultado sin emplear buffers para el resultado) si el método de la petición empleado era HEAD.

REQUEST_TIME
Fecha Unix de inicio de la petición. Disponible desde PHP 5.1.0.
REQUEST_TIME_FLOAT
El timestamp del inicio de la solicitud, con precisión microsegundo. Disponible desde PHP 5.4.0.
QUERY_STRING
Si existe, la cadena de la consulta de la petición de la página.
DOCUMENT_ROOT
El directorio raíz de documentos del servidor en el cual se está ejecutando el script actual, según está definida en el archivo de configuración del servidor.
HTTP_ACCEPT
Contenido de la cabecera Accept: de la petición actual, si existe.
HTTP_ACCEPT_CHARSET
Contenido de la cabecera Accept-Charset: de la petición actual, si existe. Por ejemplo: ‘iso-8859-1,*,utf-8‘.
HTTP_ACCEPT_ENCODING
Contenido de la cabecera Accept-Encoding: de la petición actual, si existe. Por ejemplo: ‘gzip‘.
HTTP_ACCEPT_LANGUAGE
Contenido de la cabecera Accept-Language: de la petición actual, si existe. Por ejemplo: ‘en‘.
HTTP_CONNECTION
Contenido de la cabecera Connection: de la petición actual, si existe. Por ejemplo: ‘Keep-Alive‘.
HTTP_HOST
Contenido de la cabecera Host: de la petición actual, si existe.
HTTP_REFERER
Dirección de la pagina (si la hay) que emplea el agente de usuario para la pagina actual. Es definido por el agente de usuario. No todos los agentes de usuarios lo definen y algunos permiten modificar HTTP_REFERER como parte de su funcionalidad. En resumen, es un valor del que no se puede confiar realmente.
HTTP_USER_AGENT
Contenido de la cabecera User-Agent: de la petición actual, si existe. Consiste en una cadena que indica el agente de usuario empleado para acceder a la pagina. Un ejemplo típico es: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Entre otras opciones, puede emplear dicho valor con get_browser() para personalizar el resultado de la salida de la página en función de las capacidades del agente de usuario empleado.
HTTPS
Ofrece un valor no vacío si el script es pedido mediante el protocolo HTTPS.

Nota: Tenga en cuenta que si se emplea ISAPI con IIS el valor será off si la petición no se ha realizado a través del protocolo HTTPS.

REMOTE_ADDR
La dirección IP desde la cual está viendo la página actual el usuario.
REMOTE_HOST
El nombre del host desde el cual está viendo la página actual el usuario. La obtención inversa del dns está basada en la REMOTE_ADDR del usuario.

 Su servidor web debe estar configurado para crear esta variable. Por ejemplo en Apache necesita que exista HostnameLookups On dentro de httpd.conf. Consulte tambien gethostbyaddr().

REMOTE_PORT
El puerto empleado por la máquina del usuario para comunicarse con el servidor web.
REMOTE_USER
El usuario autenticado.
REDIRECT_REMOTE_USER
El usuario autenticado si la petición es redirigida internamente.
SCRIPT_FILENAME
La ruta del script ejecutándose actualmente en forma absoluta.

Nota:

Si un script se ejecuta mediante CLI como ruta relativa, como por ejemplo file.php o ../file.php, entonces $_SERVER[‘SCRIPT_FILENAME’] contendrá la ruta relativa especificada por el usuario.

SERVER_ADMIN
El valor dado a la directiva SERVER_ADMIN (de Apache) en el archivo de configuración del servidor web. Si el script se está ejecutando en un host virtual, el valor dado será el definido para dicho host virtual.
SERVER_PORT
El puerto de la máquina del servidor usado por el servidor web para la comunicación. Para las configuraciones por omisión, el valor será ‘80‘; el empleo de SSL, por ejemplo, cambiará dicho valor al valor definido para el puerto HTTP seguro.

Nota: Bajo Apache 2, se debe establecer UseCanonicalName = On, así como UseCanonicalPhysicalPort = On para poder obtener el puerto físico (real), de otro modo, este valor podría ser burlado y podría o no devolver el valor del puerto físico. No es seguro confiar en este valor en contextos que requieran seguridad.

SERVER_SIGNATURE
Cadena que contiene la versión del servidor y el nombre del host virtual que son añadidas a las páginas generadas por el servidor, si esta habilitada esta funcionalidad.
PATH_TRANSLATED
Ruta de acceso basada en el sistema (no en el directorio raíz de documentos del servidor) del script actual, después de cualquier mapeo de virtual a real realizada por el servidor.

Nota: A partir de PHP 4.3.2, PATH_TRANSLATED no está definida de forma implícita en el SAPI de Apache 2, en comparación a la situación de Apache 1, donde era necesario establecer el mismo valor que la variable del servidor SCRIPT_FILENAME cuando no era proporcionada por Apache. Este cambio ha sido realizado para cumplir la especificación CGI donde PATH_TRANSLATED sólo debe existir si PATH_INFO esta definida. Los usuarios de Apache 2 pueden emplear AcceptPathInfo = On dentro de httpd.conf para definir PATH_INFO.

SCRIPT_NAME
Contiene la ruta del script actual. Esto es de utilidad para las páginas que necesiten apuntarse a si mismas. La constante __FILE__ contiene la ruta absoluta y el nombre del archivo actual incluido.
REQUEST_URI
La URI que se empleó para acceder a la página. Por ejemplo: ‘/index.html‘.
PHP_AUTH_DIGEST
Cuando se hace autenticación Digest HTTP, esta variable se establece para el encabezado ‘Authorization’ enviado por el cliente (el cual se debe entonces usar para hacer la validación apropiada).
PHP_AUTH_USER
Cuando se hace autenticación HTTP, esta variable se establece para el nombre de usuario provisto por el usuario.
PHP_AUTH_PW
Cuando se hace autenticación HTTP, esta variable se establece para la clave provista por el usuario.
AUTH_TYPE
Cuando se hace autenticado HTTP, está variable se establece para el tipo de autenticación.
PATH_INFO
Contiene cualquier información sobre la ruta proporcionada por el cliente a continuación del nombre del fichero del script actual pero antecediendo a la cadena de la petición, si existe. Por ejemplo, si el script actual se accede a través de la URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, entonces $_SERVER[‘PATH_INFO’] contendrá /some/stuff.
ORIG_PATH_INFO
Versión original de ‘PATH_INFO‘ antes de ser procesado por PHP.
<?php
 echo "PHP_SELF : " . $_SERVER['PHP_SELF'] . "<br />";
 echo "GATEWAY_INTERFACE : " . $_SERVER['GATEWAY_INTERFACE'] . "<br />";
 echo "SERVER_ADDR : " . $_SERVER['SERVER_ADDR'] . "<br />";
 echo "SERVER_NAME : " . $_SERVER['SERVER_NAME'] . "<br />";
 echo "SERVER_SOFTWARE : " . $_SERVER['SERVER_SOFTWARE'] . "<br />";
 echo "SERVER_PROTOCOL : " . $_SERVER['SERVER_PROTOCOL'] . "<br />";
 echo "REQUEST_METHOD : " . $_SERVER['REQUEST_METHOD'] . "<br />";
 echo "REQUEST_TIME : " . $_SERVER['REQUEST_TIME'] . "<br />";
 echo "REQUEST_TIME_FLOAT : " . $_SERVER['REQUEST_TIME_FLOAT'] . "<br />";
 echo "QUERY_STRING : " . $_SERVER['QUERY_STRING'] . "<br />";
 echo "DOCUMENT_ROOT : " . $_SERVER['DOCUMENT_ROOT'] . "<br />";
 echo "HTTP_ACCEPT : " . $_SERVER['HTTP_ACCEPT'] . "<br />";
 echo "HTTP_ACCEPT_CHARSET : " . $_SERVER['HTTP_ACCEPT_CHARSET'] . "<br />";
 echo "HTTP_ACCEPT_ENCODING : " . $_SERVER['HTTP_ACCEPT_ENCODING'] . "<br />";
 echo "HTTP_ACCEPT_LANGUAGE : " . $_SERVER['HTTP_ACCEPT_LANGUAGE'] . "<br />";
 echo "HTTP_CONNECTION : " . $_SERVER['HTTP_CONNECTION'] . "<br />";
 echo "HTTP_HOST : " . $_SERVER['HTTP_HOST'] . "<br />";
 echo "HTTP_REFERER : " . $_SERVER['HTTP_REFERER'] . "<br />";
 echo "HTTP_USER_AGENT : " . $_SERVER['HTTP_USER_AGENT'] . "<br />";
 echo "HTTPS : " . $_SERVER['HTTPS'] . "<br />";
 echo "REMOTE_ADDR : " . $_SERVER['REMOTE_ADDR'] . "<br />";
 echo "REMOTE_HOST : " . $_SERVER['REMOTE_HOST'] . "<br />";
 echo "REMOTE_PORT : " . $_SERVER['REMOTE_PORT'] . "<br />";
 echo "REMOTE_USER : " . $_SERVER['REMOTE_USER'] . "<br />";
 echo "REDIRECT_REMOTE_USER : " . $_SERVER['REDIRECT_REMOTE_USER'] . "<br />";
 echo "SCRIPT_FILENAME : " . $_SERVER['SCRIPT_FILENAME'] . "<br />";
 echo "SERVER_ADMIN : " . $_SERVER['SERVER_ADMIN'] . "<br />";
 echo "SERVER_PORT : " . $_SERVER['SERVER_PORT'] . "<br />";
 echo "SERVER_SIGNATURE : " . $_SERVER['SERVER_SIGNATURE'] . "<br />";
 echo "PATH_TRANSLATED : " . $_SERVER['PATH_TRANSLATED'] . "<br />";
 echo "SCRIPT_NAME : " . $_SERVER['SCRIPT_NAME'] . "<br />";
 echo "REQUEST_URI : " . $_SERVER['REQUEST_URI'] . "<br />";
 echo "PHP_AUTH_DIGEST : " . $_SERVER['PHP_AUTH_DIGEST'] . "<br />";
 echo "PHP_AUTH_USER : " . $_SERVER['PHP_AUTH_USER'] . "<br />";
 echo "PHP_AUTH_PW : " . $_SERVER['PHP_AUTH_PW'] . "<br />";
 echo "AUTH_TYPE : " . $_SERVER['AUTH_TYPE'] . "<br />";
 echo "PATH_INFO : " . $_SERVER['PATH_INFO'] . "<br />";
 echo "ORIG_PATH_INFO : " . $_SERVER['ORIG_PATH_INFO'] . "<br />";
?>

$_GET

(PHP 4 >= 4.1.0, PHP 5)

Descripción

Un array asociativo de variables pasadas vía parámetros por URL.

Ejemplo1 Ejemplo de $_GET

<?php
echo 'Hola ' . htmlspecialchars($_GET["nombre"]) . '!';
?>

Asumiendo que el usuario introdujo http://example.com/?nombre=Juan

El resultado del ejemplo sería algo similar a:

Hola Juan!

$_POST

(PHP 4 >= 4.1.0, PHP 5)

Descripción

Un array asociativo de variables pasadas al script actual a través del método HTTP POST.

Versión Descripción
4.1.0 Se introdujo $_POST y $HTTP_POST_VARS quedó obsoleta.

Ejemplo1 Ejemplo de $_POST

El código

<form action='accion.php' method='post' >
Su nombre: <input type='text' name=nombre > <br />
Su edad: <input type='text' name=edad > <br />
<input type='submit' >
</form>

genera la siguiente salida

Image1

Si suponemos que se introduce, Vicente y 30, entonces

la salida producida será:

Image2

$_FILES

(PHP 4 >= 4.1.0, PHP 5)

Descripción.

Esta variable permite tener acceso a cualquier archivo binario que hayamos enviado en el formulario, esta variable establece algunas propiedades por defecto como

  • name: Es el nombre original del archivo.
  • type:  Es el tipo de archivo, por ejemplo si es un archivo de Word, esto no permite filtrar el tipo de archivo que se puede enviar al servidor.
  • tmp_name: El archivo que se sube se guarda mientras el script se ejecuta en un carpeta temporal y PHP lo renombra con una nombre aleatorio solo para referencia, una vez el script termina el archivo se elimina del servidor, por esta razón debemos, o bien moverlo o copiarlo a otra carpeta, esta propiedad apunta al archivo como tal.
  • error: Si hubira un error al subirlos nos indica que error fue en esta propiedad.
  • size: Nos dice el tamaño del archivo en bytes.
Versión Descripción
4.1.0 Se introdujo $_FILES, haciendo $HTTP_POST_FILES obsoleta.

Esta es una ‘superglobal’ o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.

 El formulario,

<html>
<head>
<title>Ejercicio $_FILES</title>;
</head>
<body>
<form action='upload0.php' method='post' enctype='multipart/form-data'>
Seleccione el archivo:
<input type='file' name='foto' >
<input type='submit' value='Enviar' >
</form>
</body>
</html>

produce

Image4Si se carga una foto y se envia al script

<html>
<head>
<title>Problema $_FILES</title>
</head>
<body>
<?php
copy($_FILES['foto']['tmp_name'],$_FILES['foto']['name']);
echo 'La foto se registro en el servidor';
$nom=$_FILES['foto']['name'];
echo 'imagen '.$nom;
?>
</body>
</html>

$_REQUEST

(PHP 4 >= 4.1.0, PHP 5)

Descripción.

Un array asociativo que por defecto contiene el contenido de $_GET, $_POST y $_COOKIE.

Versión Descripción
5.3.0 Se introdujo request_order. Esta directiva afecta al contenido de $_REQUEST.
4.3.0 Se eliminó la información $_FILES de $_REQUEST.
4.1.0 Se introdujo $_REQUEST.

Notas.

Esta es una ‘superglobal’ o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.

Cuando se ejecuta en la línea de comandos , no se incluirán las entradas argv y argc; ya que están presentes en el array $_SERVER

Las variables en $_REQUEST se proporcionan al script a través de los mecanismos de entrada GET, POST, y COOKIE y por lo tanto pueden ser manipulados por el usuario remoto y no debe confiar en el contenido. La presencia y el orden de las variables listadas en este array se definen según la directiva de configuración PHP variables_order.

y así por ejemplo el formulario

<h1>Formulario</h1>
<form action="procesa4.php" method="post">
Nombre <input type="text" name="nombre"> <br />
Apellido <input type="text" name="apellido"> <br />
<input type="submit" value="Aceptar">
</form>

produce la salida

Image11Este script llama a este otro,
<h1>Procesa</h1>
<?
    $nombre = $_REQUEST['nombre'];
    $apellido = $_REQUEST['apellido'];
?>
<h2>Su nombre es <?= $nombre ?></h2>
<h2>Su apellido es <?= $apellido ?></h2>
<h2>$_REQUEST</h2>
<xmp>
<?php print_r($_REQUEST); ?>
</xmp>
<h2>$_POST</h2>
<xmp>
<?php print_r($_POST); ?>
</xmp>
y que a su vez produce la siguiente salida,
Image22

$_ENV

(PHP 4 >= 4.1.0, PHP 5)

$_ENV  — Variables de entorno

Descripción.

Una variable tipo array asociativo de variables pasadas al script actual a través del método del entorno.

Estas variables son importadas en el espacio de nombres global de PHP desde el entorno bajo el que está siendo ejecutado el intérprete PHP. Muchas son entregadas por el intérprete de comandos bajo el que PHP está corriendo y diferentes sistemas suelen tener diferentes tipos de intérpretes de comandos, una lista definitiva es imposible. Por favor consulte la documentación de su intérprete de comandos para una lista de las variables de entorno que se definen.

Otras variables de entorno incluyen las variables CGI, colocadas allí independientemente de que PHP esté siendo ejecutado como módulo del servidor o procesador CGI.


<?php
<table border=0>
foreach ($_ENV as $clave=>$valor)
{
echo $clave." = ".$valor."";
}
</table>
?>

$_SESSION

(PHP 4 >= 4.1.0, PHP 5)

$_SESSION -— Variables de sesión

Descripción.

Es un array asociativo que contiene variables de sesión disponibles para el script actual. Ver la documentación de Funciones de sesión para más información sobre su uso.

Haremos un problema muy sencillo, cargaremos en un formulario el nombre de usuario y clave de un cliente, en la segunda página crearemos dos variables de sesión y en una tercera página recuperaremos los valores almacenados en las variables de sesión.
La primera página es un formulario HTML puro:

<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina2.php" method="post">
Ingrese nombre de usuario:
<input type="text" name="campousuario"><br>
Ingrese clave:
<input type="password" name="campoclave"><br>
<input type="submit" value="confirmar">
</form>
</body>
</html>

La segunda página es donde creamos e inicializamos las dos variables de sesión:

<?php
session_start();
$_SESSION['usuario']=$_REQUEST['campousuario'];
$_SESSION['clave']=$_REQUEST['campoclave'];
?>
<html>
<head>
<title>Problema</title>
</head>
<body>
Se almacenaron dos variables de sesión.<br><br>
<a href="pagina3.php">Ir a la tercer página donde se recuperarán
las variables de sesión</a>
</body>
</html>

Cuando creamos o accedemos al contenido de variables de sesión debemos llamar a la función session_start() antes de cualquier salida de marcas HTML.
La última página de este ejemplo tiene por objetivo acceder a las variables de sesión:


<?php
session_start();
?>
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
echo "Nombre de usuario recuperado de la variable de sesión:".$_SESSION['usuario'];
echo "<br><br>";
echo "La clave recuperada de la variable de sesión:".$_SESSION['clave'];
?>
</body>
</html>

De nuevo vemos que la primera línea de esta página es la llamada a la función session_start() que, entre otras cosas, rescata de un archivo de texto las variables de sesión creadas para ese usuario (recordemos que desde el navegador todas las veces retorna una cookie con la clave que generó PHP la primera vez que llamamos a una página del sitio).
Tengamos en cuenta que en cualquier otra página del sitio tenemos acceso a las variables de sesión sólo con llamar inicialmente a la función session_start().

$_COOKIE

(PHP 4 >= 4.1.0, PHP 5)

$_COOKIE — HTTP Cookies

Description.

Matriz asociativa donde se pasan las HTTP Cookies.

Para crear una cookie que sólo tenga existencia mientras no cerremos la ventana del navegador, pasaremos como fecha de expiración de la cookie, el valor cero. Una vez que la instancia del navegador se cierra, dicha cookie desaparecerá.

Este tipo de cookie puede ser muy útil para validar un usuario en un conjunto de páginas, si previamente ingresó correctamente su nombre de usuario y clave. Es decir, una vez validado el usuario, se verifica en páginas sucesivas si existe la cookie. Una vez que el usuario cierra el navegador, no hay posibilidad

El protocolo HTTP es desconectado. Esto significa que cada vez que solicitamos una página a un servidor representa una conexión distinta.

Una cookie es una pequeña cantidad de datos almacenada por el navegador del usuario cuando solicita una página a un servidor. El que envía que se genere la cookie es el servidor.

Una cookie consta de un nombre, un valor, una fecha de expiración y un servidor. Una cookie está limitada a 4KB.

Luego que una cookie es creada sólo el sitio que la creó puede leerla. Luego de creada una cookie, cada vez que el navegador del usuario visita el sitio, se envía dicha cookie. Otra cosa importante que hay que tener en cuenta es que el usuario del browser puede configurar el mismo para no permitir la creación de cookies, lo que significa que el uso de cookies debe hacerse con moderación y cuando la situación lo requiera. De todos modos, el 95% de los navegadores están configurados para permitir la creación de cookies.
Para la creación de una cookie desde PHP debemos llamar a la función setcookie.

Los parámetros de esta función son:
setcookie( <nombre de la cookie>, <valor de la cookie>, <fecha de expiración>, <carpeta del servidor>)

Con un problema sencillo entenderemos el uso de esta función. Supongamos que queremos que los usuarios que entran a nuestro sitio puedan configurar con qué color de fondo de página quiere que aparezca cada vez que ingresa al sitio. Al color seleccionado por el visitante lo almacenaremos en una cookie. En caso que no exista el color, por defecto es blanco.

La primera página mostrará un formulario con tres controles de tipo radio para la selección del color. También esta página verificará si existe la cookie creada, en caso afirmativo fijará el fondo de la página con el valor de la cookie. Tengamos en cuenta que la primera vez que ejecutemos este programa la página es de color blanco, luego variará según el color seleccionado en el formulario.

El código de la primera página es:

<?php
 if (isset($_COOKIE['color'])) echo " bgcolor=\"$_COOKIE[color]\""
?>
<form action="pagina2.php" method="post">
Seleccione de que color desea que sea la página:
<input type="radio" name="radio" value="rojo" />Rojo
<input type="radio" name="radio" value="verde" />Verde
<input type="radio" name="radio" value="azul" />Azul
<input type="submit" value="Crear cookie" />
</form>

El formulario no varía en nada respecto a otros vistos. Lo más importante es el bloque PHP que verifica si ya existe la cookie en el navegador del cliente. Es importante entender que la primera vez que ejecutemos esta página la cookie no existe, por lo que el if se verifica falso:

<?php
 if (isset($_COOKIE['color'])) echo " bgcolor=\"$_COOKIE[color]\""
?>

El vector asociativo $_COOKIE almacena todas las cookies creadas por el visitante. Si es la primera vez que peticionamos esta página, el vector $_COOKIE no tendrá elementos.
Es decir que la marca body no tiene inicializada la propiedad bgcolor.

La segunda página es la que crea la cookie propiamente dicha:

<?php
 if ($_REQUEST['radio']=="rojo")
   setcookie("color","#ff0000",time()+60*60*24*365,"/");
 elseif ($_REQUEST['radio']=="verde")
   setcookie("color","#00ff00",time()+60*60*24*365,"/");
 elseif ($_REQUEST['radio']=="azul")
   setcookie("color","#0000ff",time()+60*60*24*365,"/");
?>
<a href="pagina1.php">Ir a la otra página</a>

La llamada a la función setcookie debe hacerse antes de imprimir cualquier marca HTML, de lo contrario no funcionará.
Como podemos observar, la creación de la cookie se hace llamando a la función setcookie:

<?php
 if ($_REQUEST['radio']=="rojo")
   setcookie("color","#ff0000",time()+60*60*24*365,"/");
 elseif ($_REQUEST['radio']=="verde")
   setcookie("color","#00ff00",time()+60*60*24*365,"/");
 elseif ($_REQUEST['radio']=="azul")
   setcookie("color","#0000ff",time()+60*60*24*365,"/");
?>

El nombre de la cookie se llama «color» y el valor que almacenamos depende de qué control de tipo radio esté seleccionado en la página anterior. La fecha de expiración de la cookie la calculamos fácilmente llamando a la función time() que nos retorna la fecha actual en segundos y le sumamos el producto 60*60*24*365 (60 segundos * 60 minutos * 24 horas * 365 días) es decir que la cookie existirá en la máquina del visitante hasta el año próximo.

Cuando indicamos como directorio la sintaxis «/» significa que la cookie se crea a nivel del sitio y con cuaquier petición a dicho sitio, el navegador enviará la cookie al servidor.

Por último dispusimos en esta página un hipervínculo a la página anterior, para ver que, de ahora en más, cada vez que ejecutemos la pagina1.php, el color de fondo de la misma dependerá del valor de la cookie registrada.

Tutorial PHP : Introducción a las Variables.

Conceptos básicos En PHP las variables se representan con un signo de dólar seguido por el nombre de la variable. El nombre de la variable es sensible a minúsculas y mayúsculas. Los nombres de variables siguen las mismas reglas que otras etiquetas en PHP. Un nombre de variable válido tiene que empezar con una letra o un carácter de subrayado (underscore), seguido de cualquier número de letras, números y caracteres de subrayado. Como expresión regular se podría expresar como: ‘[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*‘ Para los propósitos de este manual, una letra es a-z, A-Z, y los bytes del 127 al 255 (0x7f-0xff).


<?php
$var = 'Roberto';
$Var = 'Juan';
echo "$var, $Var";      // imprime "Roberto, Juan"

$4site = 'aun no';      // inválido; comienza con un número
$_4site = 'aun no';     // válido; comienza con un carácter de subrayado
$täyte = 'mansikka';    // válido; 'ä' es ASCII (Extendido) 228
?>

De forma predeterminada, las variables siempre se asignan por valor. Esto significa que cuando se asigna una expresión a una variable, el valor completo de la expresión original se copia en la variable de destino. Esto quiere decir que, por ejemplo, después de asignar el valor de una variable a otra, los cambios que se efectúen a una de esas variables no afectará a la otra.

PHP también ofrece otra forma de asignar valores a las variables: asignar por referencia. Esto significa que la nueva variable simplemente referencia (en otras palabras, «se convierte en un alias de» ó «apunta a») la variable original. Los cambios a la nueva variable afectan a la original, y viceversa.

Para asignar por referencia, simplemente se antepone un signo ampersand (&) al comienzo de la variable cuyo valor se está asignando (la variable fuente). Por ejemplo, el siguiente segmento de código produce la salida ‘Mi nombre es Bob’ dos veces:

<?php
$foo = 'Bob';                // Asigna el valor 'Bob' a $foo
$bar = &$foo;                // Referenciar $foo vía $bar.
$bar = "Mi nombre es $bar";  // Modifica $bar...
echo $bar;
echo $foo;                   // $foo también se modifica.
?>

No es necesario inicializar variables en PHP, sin embargo, es una muy buena práctica. Las variables no inicializadas tienen un valor predeterminado de acuerdo a su tipo dependiendo del contexto en el que son usadas – las booleanas se asumen como FALSE, los enteros y flotantes como cero, las cadenas (p.ej. usadas en echo) se establecen como una cadena vacía y las matrices se convierten en un array vacío.

Tutorial PHP(53): Resolución de ámbito.

Tutorial PHP(52): Herencia de Objetos.

Tutorial PHP(51): Visibilidad.

Tutorial PHP(50): Constructores y Destructores.

Tutorial PHP(49): Autocarga de clases.

Autocarga de clases

Muchos desarrolladores que escriben aplicaciones orientadas a objetos crean un fichero fuente PHP para cada definición de clase. Una de las mayores molestias es tener que hacer una larga lista de includes al comienzo de cada script (uno por cada clase).

En PHP 5 esto ya no es necesario. Se puede definir una función __autoload() que es automáticamente invocada en caso de que se esté intentando utilizar una clase/interfaz que todavía no haya sido definida. Al invocar a esta función el motor de scripting da una última oportunidad para cargar la clase antes que PHP falle con un error.
Sugerencia

spl_autoload_register() proporciona una alternativa más flexible para la carga automática de clases. Por esta razón, el uso de __autoload() no se recomienda y puede quedar obsoleta o ser eliminada en el futuro.

Antes de 5.3.0, las excepciones lanzadas en la función __autoload no podían ser capturadas en el bloque catch y resultaba en un error fatal. Desde 5.3.0+ las excepciones lanzadas en la función __autoload pueden ser capturadas en el bloque catch, con una consideración. Si se lanza una excepción personalizada, la clase de dicha excepción debe estar disponible. La función __autoload puede usarse recursivamente para autocargar la clase de la excepción personalizada.

La autocarga no está disponible si se utiliza PHP en el modo interactivo CLI.

Si el nombre de la clase se utiliza, por ejemplo, en call_user_func(), puede contener algunos caracteres peligrosos tales como ../. Se recomienda no utilizar la entrada del usuario en tales funciones, o al menos verificar dicha entrada en __autoload().

Ejemplo #1 Ejemplo de autocarga

Este ejemplo intenta cargar las clases MiClase1 y MiClase2 desde los ficheros MiClase1.php y MiClase2.php respectivamente.

<?php
function __autoload($nombre_clase) {
    include $nombre_clase . '.php';
}

$obj  = new MiClase1();
$obj2 = new MiClase2();
?>

Ejemplo #2 Otro ejemplo de autocarga

Este ejemplo intenta cargar la interfaz ITest.

<?php
function __autoload($nombre) {
    var_dump($nombre);
}

class Foo implements ITest {
}

/*
string(5) "ITest"

Fatal error: Interface 'ITest' not found in ...
*/
?>

Ejemplo #3 Autocarga con manejo de excepciones para 5.3.0+

Este ejemplo lanza una excepción y demuestra los bloques try/catch.

<?php
function __autoload($nombre) {
    echo "Intentando cargar $nombre.\n";
    throw new Exception("Imposible cargar $nombre.");
}

try {
    $obj = new ClaseNoCargable();
} catch (Exception $e) {
    echo $e->getMessage(), "\n";
}
?>

El resultado del ejemplo sería:

Intentando cargar ClaseNoCargable.
Imposible cargar ClaseNoCargable.

Ejemplo #4 Autocarga con manejo de excepciones para 5.3.0+ – Excepción personalizada ausente

Este ejemplo lanza una excepción para una excepción personalizada no cargable.

<?php
function __autoload($nombre) {
    echo "Intentando cargar $nombre.\n";
    throw new ExcepciónAusente("Imposible cargar $nombre.");
}

try {
    $obj = new ClaseNoCargable();
} catch (Exception $e) {
    echo $e->getMessage(), "\n";
}
?>

El resultado del ejemplo sería:

Intentando cargar ClaseNoCargable.
Intentando cargar ExcepciónAusente.

Fatal error: Class ‘ExcepciónAusente’ not found in testExcepcionAusente.php on line 4

Ver también

unserialize()
unserialize_callback_func
spl_autoload()
spl_autoload_register()

Tutorial PHP(48): Constantes de clase.

Tutorial PHP(47): Propiedades de clase.

Propiedades de la clase.

Las variables pertenecientes a clases se llaman «propiedades». También se les puede llamar usando otros términos como «atributos» o «campos», pero para los propósitos de esta referencia se va a utilizar «propiedades». Éstas se definen usando una de las palabras clave public, protected, o private, seguido de una declaración normal de variable. Esta declaración puede incluir una inicialización, pero esta inicialización debe ser un valor constante, es decir, debe poder ser evaluada en tiempo de compilación y no debe depender de información en tiempo de ejecución para ser evaluada.

Véase Visibilidad para más información sobre el significado de public, protected, y private.

Con el fin de mantener la compatibilidad con PHP 4, PHP 5 continuará aceptando el uso de la palabra clave var en la declaración de propiedades en lugar de (o además de) public, protected, o private. Sin embargo, var ya no es necesaria. Entre las versiones 5.0 y 5.1.3 de PHP, el uso de var fue considerado obsoleto y emitía una advertencia de nivel E_STRICT, pero a partir de PHP 5.1.3 ya no está obsoleta y no emitirá la advertencia.

Si se declara una propiedad utilizando var en lugar de public, protected, o private, PHP tratará dicha propiedad como si hubiera sido definida como public.

Dentro de los métodos de una clase, las propiedades no estáticas pueden ser accedidas utilizando -> (el operador de objeto): $this->propiedad (donde propiedad es el nombre de la propiedad). Las propiedades estáticas pueden ser accedidas utilizando ::: self::$propiedad. Véase la palabra clave ‘static’ para más información sobre la diferencia entre propiedades estáticas y no estáticas.

La pseudo-variable $this está disponible dentro de cualquier método de clase cuando éste es invocado dentro del contexto de un objeto. $this es una referencia al objeto que se invoca (usualmente el objeto al que pertenece el método, pero posiblemente sea otro objeto, si el método es llamado estáticamente desde el contexto de un objeto secundario).

Ejemplo #1 Declaración de propiedades

<?php
class ClaseSencilla
{
   // Declaraciones de propiedades inválidas:
   public $var1 = 'hola ' . 'mundo';
   public $var2 = <<<EOD
hola mundo
EOD;
   public $var3 = 1+2;
   public $var4 = self::myStaticMethod();
   public $var5 = $myVar;

   // Declaraciones de propiedades válidas:
   public $var6 = myConstant;
   public $var7 = array(true, false);

   // Esto se permite sólo en PHP 5.3.0 y posteriores.
   public $var8 = <<<'EOD'
hola mundo
EOD;
}
?>

Nota: Existen varias funciones interesantes para manipular clases y objetos. Quizá pueda ser interesante echar un vistazo a las Funciones de clases/objetos.

A diferencia de heredocs, nowdocs puede ser utilizado en cualquier contexto de datos estáticos, incluyendo la declaración de propiedades.

Ejemplo #2 Ejemplo del uso de nowdoc para inicializar una propiedad

<?php
class foo {
   // A partir de PHP 5.3.0
   public $bar = <<<'EOT'
bar
EOT;
}
?>

Nota: El soporte para nowdoc fue agregado en PHP 5.3.0.