Tutorial PHP: MySQL
Tutorial PHP: MySQL
mysqli::__construct
mysqli_connect
Descripción.
Estilo orientado a objetos
$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
$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ámetrohost
.
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
Estilo por procedimientos
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.
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
Estilo por procedimientos
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.
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>
Si suponemos que se introduce, Vicente y 30, entonces
la salida producida será:
$_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
Si 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
- Este 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,
-
$_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
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(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(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.