PHP y MySQL
PHP y MySQL
El objeto
o La Clase - Programacin Orientada a Objetos en PHP - 1 de 3
o La Clase - Programacin Orientada a Objetos en PHP - 2 de 3
o La Clase - Programacin Orientada a Objetos en PHP - 3 de 3
o La Herencia en PHP
o Las clases abstractas y las clases finales en PHP
o Los mtodos mgicos en PHP
o Namespaces en PHP
o Ejercicios de Programacion Orientada a Objetos en PHP - 1 de 3
o Ejercicios de Programacion Orientada a Objetos en PHP - 2 de 3
o Ejercicios de Programacion Orientada a Objetos en PHP - 3 de 3
Configuracin
o PHP.ini
o Archivo de configuracin MySQL: My.ini
Seguridad y Rendimiento
o Fallos de seguridad XSS en PHP
o Derechos de la base de datos - PhpMyAdmin
o Inyeccin SQL (addslashes) en PHP
o Comprobacin de la sesin en PHP
o Rendimiento en PHP y MySQL
FIN
Regresar al ndice
Objetivo:
El objetivo es explicar cmo crear de manera dinmica e interactiva un sitio Web, con ayuda de
ejemplos.
Los requisitos previos son: conocimientos de HTML y algunas nociones de JavaScript, con algunos
ejercicios.
Cuando ejecuta una URL (Uniform Resource Locator), por ejemplo http://www.google.es, qu ocurre
en el navegador (Internet Explorer, Firefox, Chrome...)?
La URL se enva a un servidor Web a travs de la red. Este servidor procesa la solicitud y reenva el
flujo HTML al navegador.
Existen dos tipos de sitios Web: los sitios Web estticos y los dinmicos.
Los sitios Web estticos solo contienen cdigo clientes, es decir, un cdigo que puede interpretar su
navegador. Por ejemplo: HTML y JavaScript.
En cambio, los sitios Web dinmicos contienen lenguaje servidor porque el servidor Web interpreta
este lenguaje y enva al navegador el flujo HTML. Por ejemplo, PHP, Java (no confundir con
JavaScript) y Active Server Pages.NET (ASP.NET) son lenguajes del lado servidor.
Cuando almacena informacin en su sitio Web, por ejemplo un inicio de sesin y una contrasea, un
blog, artculos, etc., est obligado a utilizar una base de datos para almacenar la informacin y
utilizar un lenguaje servidor que pueda leer o escribir la informacin en la base de datos.
Cuando ejecuta una URL desde un sitio Web dinmico (por ejemplo: http://google.es), se ejecutan
dos procesos diferentes:
1) El servidor Web (Apache es el ms frecuente) lee su URL y ejecuta el cdigo servidor (en nuestro
ejemplo, PHP) que va a crear un cdigo HTML. A continuacin el servidor enva a su navegador el
flujo HTML que se ha creado.
2) Su navegador recibe el flujo HTML y lo interpreta de manera grfica, mostrando la pgina HTML.
De este modo, cuando quiera probar en su equipo un sitio Web esttico, simplemente haga doble
clic en la pgina HTML para abrirla en su navegador.
Pero si quiere probar un sitio Web dinmico con PHP, obligatoriamente debe instalar en su equipo
un servidor Web (por ejemplo, Apache) y ejecutar su pgina PHP con una URL de tipo:
http://127.0.0.1/test.php
Tener en cuenta
Para crear un sitio Web esttico, solo necesita un navegador (Internet Explorer, Firefox, Chrome...) y
un editor de texto, por ejemplo Notepad++ o Sublime Text.
Para crear un sitio Web dinmico, necesita un navegador, un servidor Web que ejecute las pginas
PHP y un servidor de base de datos.
En este soporte utilizaremos el servidor Web Apache y el servidor de base de datos MySQL, que son
las herramientas ms utilizadas para crear sitios Web de poca envergadura. Son gratuitos y estn
disponibles como un paquete. Se instalan fcilmente en UNIX, Windows y Mac.
Los paquetes ms utilizados son WAMP (XAMP en Linux, MAMP en Mac) y EasyPHP. En este libro
utilizaremos EasyPHP 13.1 de Windows.
Para
ms
informacin
puede
consultar
las
pginas
Web
www.php.net,
http://php.net/manual/es/index.php y www.easyphp.org (desde este ltimo enlace puede descargar
la ltima versin de EasyPHP).
Instalacin de EasyPHP
Regresar al ndice
De manera
13.1VC11.
predeterminada,
EasyPHP
se
instalar
en:
C:\ProgramFiles\EasyPHP-DevServer-
Una vez instalado, haga clic en Mostrar los iconos ocultos y ver el icono en el rea de notificacin
de la barra de tareas:
Apache le enva esta pgina Web y la URL es http://127.0.0.1/. Esta direccin, tambin llamada
localhost, corresponde a la direccin de su servidor Web en modo local. Solo quien utilice este
equipo visualizar esta pgina y las pginas PHP que va a crear.
Observe que hay tres carpetas por defecto, que estn vacas y que se pueden eliminar si lo desea.
Ahora solo le queda elegir un editor de archivos para escribir sus pginas PHP.
Vamos a utilizar Notepad++. Es gratuito, se instala fcilmente y contiene una funcin muy prctica,
que consiste en asignar colores dependiendo de la sintaxis, para visualizar los errores de sintaxis
HTML o PHP.
En el siguiente ejemplo, la funcin echo crea <p>Hola!</p> en HTML y el navegador recibe todo el
flujo HTML de la pgina:
Haga clic con el botn derecho del ratn y elija en su navegador la opcin Ver cdigo fuente de la
pgina. Solo visualizar el cdigo HTML, nunca el cdigo servidor en PHP. No se preocupe si no lo ha
entendido todo, porque vamos a explicar ms adelante cmo se escribe una pgina PHP.
<head>
<title>Ejemplo de pgina PHP</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
Hola, hace <?php echo buen tiempo; ?>
</body>
</html>
En Internet Explorer este cdigo va a generar la siguiente imagen en Chrome:
Haga clic con el botn derecho del ratn y escoja Ver cdigo fuente de la pgina; obtendr el siguiente cdigo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejemplo de pgina PHP</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-859-1" />
</head>
<body>
Hola, hace buen tiempo </body>
</html>
Este es el cdigo HTML que el navegador ha recibido e interpretado. Observe que no se puede ver el cdigo
servidor entre las etiquetas php.
Tambin puede generar de forma dinmica el ttulo de la pgina HTML, es decir, el contenido de la etiqueta
<title>.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
Monolnea:
<?php
// comentario monolnea
// echo no veremos nada;
?>
Multilnea:
<?php
/* comentario multilnea
echo no veremos;
echo nada;
*/
?>
Una variable es una informacin que se almacena temporalmente en la memoria, es decir, es una zona de la
memoria que almacena informacin en una pgina PHP y que se destruye automticamente cuando la pgina ya no
se ejecuta.
Una variable PHP comienza siempre con $, seguida de una letra y de una secuencia de letras, cifras o del signo _.
Por ejemplo, $edad.
Atencin: PHP distingue entre maysculas y minsculas, por lo que $nombre es distinto de $Nombre.
Una variable siempre tiene un nombre y un valor.
Por ejemplo, $edad = 25, el valor 25 se asigna a la variable $edad gracias al signo =.
No es necesario definir y buscar el tipo de variable. Se hace automticamente.
De este modo, puede escribir:
<?php
$edad = 25; //variable de tipo numrico
//despus
$edad = toto; //variable de tipo texto
?>
Esto no origina ningn error. El tipo de variable puede cambiar. En el ejemplo anterior cambia del tipo integer al
tipo string (ver el siguiente prrafo).
2. Tipos de variables
Hay dos categoras de variables:
Escalar:
o Los nmeros enteros llamados integer son 1, 2, 3... y los nmeros negativos, -1, -2, -3...
o Los nmeros decimales llamados float son los nmeros positivos o negativos con comas (1.35665).
Atencin: el punto se utiliza como separador.
o La cadena de caracteres string: cualquiera con dobles comillas ("hola") o comillas simples (hola).
o Los booleanos: solo tienen dos tipos de valores: verdadero o falso, clasificados como true o false.
Compuesta:
o Las tablas: permiten almacenar varias variables. Podr consultarlo en las publicaciones de
Funciones y estructuras de control - Las tablas.
o Los objetos: son ms complejos y se describen en la publicacin El objeto.
Cuando se aade la barra invertida delante del apstrofo, se va a evitar que este se interprete como el final de la
instruccin echo.
De esta manera, en el segundo caso la cadena "Qu pasa con un apstrofo como este?" estar en la variable
$variable1.
Lo mismo ocurre con las comillas:
<?php $variable1 = Mis "sper" amigos; ?>
o
<?php $variable1 = "Mis \"sper\" amigos"; ?>
La barra invertida anula el comportamiento de cierre de instruccin del apstrofo o de las comillas dobles. Tambin
puede servir pra anular el comportamiento del $.
Si quiere mostrar $variable1 = pepe, escriba:
<?php
$variable1 = pepe;
echo "\$variable1 = $variable1";
?>
Para terminar, puede acceder a un carcter de una cadena con la siguiente sintaxis:
$var[x] o $var es el nombre de la variable que contiene la cadena de caracteres y x es la posicin del carcter que
debe recuperar. Tenga en cuenta que para PHP el primer carcter est en la posicin 0.
El siguiente ejemplo, primero muestra h y a continuacin a.
<?php
$variable1 = hola;
echo $variable1[0];
echo $variable1[3];
?>
4. La concatenacin
Es un conjunto de cadena de caracteres. PHP permite la concatenacin usando la coma o el punto.
<?php
echo hola .lee esta ayuda;
?>
Equivale a:
<?php
echo hola ,lee esta ayuda;
?>
Da como resultado:
Hola lee esta ayuda
Si quiere concatenar la cadena "hola" y "aqu hay un apstrofo ", no podr escribir:
<?php
echo hola .aqu hay un apstrofo ;
?>
El apstrofo cierra la cadena de caracteres que ha empezado en "aqu", por lo que PHP genera un error.
Para evitar este problema:
O bien escapa en el apstrofo:
<?php
echo Hola .aqu hay un apstrofo \ ;
?>
O bien abre y cierra con comillas dobles la cadena de caracteres:
<?php
echo "hola"."aqu hay un apstrofo ";
?>
Si introduce en una variable la cadena "aqu hay un apstrofo ":
<?php
$variable = "aqu hay un apstrofo ";
echo "hola".$variable;
?>
Para mostrar una variable en una cadena de caracteres con ayuda de echo, escriba lo siguiente:
<?php
$variable = "aqu hay un apstrofo ";
echo "hola $variable";
?>
PHP interpreta la variable y muestra: "Hola aqu hay un apstrofo ", pero no "hola $variable".
Si quiere mostrar "hola$variable", no utilice $:
<?php
$variable = "aqu hay un apstrofo ";
echo "hola \$variable";
?>
Para terminar, y para una mayor claridad del cdigo, utilizaremos la sintaxis:
<?php
$variable = "aqu hay un apstrofe ";
echo "hola ".$variable;
?>
Esto permite mostrar en Notepad++ la $variable en color azul, y por tanto resaltar las variables del texto.
5. Transtipado
Se utiliza para transformar un tipo de variable en otro.
Por ejemplo, si tiene un nmero decimal en una variable y desea transformarlo en un entero, solo debe convertirlo
en entero. Esta conversin se denomina cast.
<?php
$variable = 15.325;
echo "El valor entero es:".(int)$variable;
?>
Da como resultado:
El valor entero es:15
En este ejemplo la variable $variable se transforma en tipo int y se concatena con la cadena de caracteres "El valor
entero es:".
Por tanto, la sintaxis es:
(tipo)$variable
Y el tipo es igual a:
Puede aadir espacios entre los parntesis, antes y despus del tipo.
<?php
$variable = 15.325;
echo "El valor entero es:".( integer )$variable;
?>
Da como resultado:
El valor entero es:15
Otro ejemplo consiste en transformar un nmero entero en cadena de caracteres:
<?php
$variable = 15.325;
echo "El valor del tipo de cadena de caracteres es:
".(string)$variable;
?>
Da como resultado:
El valor del tipo de cadena de caracteres es: 15.325
En el siguiente ejemplo, se transforma un nmero entero en booleano:
<?php
$variable = 15.35;
$varbool = (bool)$variable;
echo "El tipo de variable \$varbool es:".gettype($varbool);?>
Da como resultado:
El tipo de variable $varbool es: booleano
Regresar al ndice
Una constante permite definir un dato, dndole un valor permanente vlido para el resto del
programa.
Esta constante es muy til si quiere utilizar regularmente un valor sin tener que escribirlo cada vez.
Por ejemplo, si utiliza normalmente PI y no quiere escribir cada vez el mismo valor 3,1415926535
puede crear una constante llamada PI por valor de 3,1415926535 y as podr utilizar PI en el cdigo
del programa.
<?php
define(NOMBRE_DE_LA_CONSTANTE,valor de la constante);
?>
<?php
define(PI,3,1415926535);
echo PI
?>
Da como resultado:
3,1415926535
El nombre y la constante se escriben siempre en maysculas. El valor puede ser una cadena de
caracteres, un valor numrico o un booleano.
Para saber si una constante est definida, puede utilizar la funcin defined. Esta funcin devuelve
true si la constante est definida, y false si no lo est.
<?php
define(PI,3,1415926535);
$var_definie = defined(PI);
echo $var_definie;
?>
Da como resultado:
True
Regresar al ndice
1. If
Las instrucciones del tipo condicin permiten ejecutar el cdigo si una condicin es verdadera.
Por ejemplo, si el nombre es Roberto, muestre Bienvenido:
<?php
$nombre = Roberto; //declaracin de la variable $nombre
if ($nombre == Roberto) //comprueba la variable $nombre
{
echo Bienvenido;
}
?>
El valor Roberto se asigna a la variable $nombre y se comprueba con ayuda de la instruccin if.
Por tanto, la sintaxis es:
if (condition) { instruccin }
Tenga en cuenta que:
es igual a se designa ==
es diferente de se designa !=
?>
Da como resultado:
Hasta pronto
El cdigo comprueba si la variable $nombre es Roberto, pero como no es el caso, el cdigo entra en else (si no), y
ejecuta echo "Hasta pronto";.
La ltima instruccin en las condiciones es else if, llamada si no si.
Esto permite probar otras condiciones que no han sido comprobadas por if.
Por ejemplo, si el nombre es Roberto, se muestra Bienvenido ; si no, si es Pepe se muestra Hola ; si no, Hasta
pronto:
<?php
$nombre = Pepe; //declaracin de la variable $nombre
if ($nombre == Roberto) //comprueba la variable $nombre
{
echo Bienvenido;
}
else if ($nombre == Pepe) //comprueba la variable $nombre
{
echo Hola;
}
else
{
echo Hasta pronto;
}
?>
Da como resultado:
Hola
El cdigo comprueba si $nombre es igual a Roberto y si tambin es igual a Pepe.
Como efectivamente es igual a Pepe, el cdigo ejecuta echo "Hola";.
Puede aadir tantas instrucciones else if como quiera.
Si se comprueba la condicin ($nombre == "Roberto"), las otras condiciones else if ni siquiera se comprueban, por
tanto si entra en if se asegura de no pasar nunca por else if ni else.
Por el contrario, si escribe:
<?php
$nombre = Roberto; //declaracin de la variable $nombre
if ($nombre == Roberto) //comprueba la variable $nombre
{
echo Bienvenido;
}
<?php
$nombre = Roberto; //declaracin de la variable $nombre
if ($nombre == Roberto) //comprueba la variable $nombre
{
echo Hola;
}
else if ($nombre == Juan)
{
echo Hasta pronto;
}
?>
En el siguiente ejemplo, si no utiliza la instruccin break:
<?php
$nombre = Roberto; //declaracin de la variable $nombre
switch ($nombre) //comprueba la variable $nombre
{
case Roberto: echo Hola<br />;
case Juan: echo Hasta pronto;
}
?>
El valor Roberto se asigna a la variable $nombre y esta variable se comprueba con ayuda de la instruccin switch.
El ejemplo anterior muestra lo siguiente:
Hola
Hasta pronto
La instruccin case permite comparar cada valor con la variable $nombre y ejecuta las instrucciones despus de los
:.
Para terminar, puede aadir la instruccin default para ejecutar el cdigo en caso de no haber encontrado ninguna
similitud con las instrucciones case.
Por ejemplo:
<?php
$nombre = Pepe; //declaracin de la variable $nombre
switch ($nombre) //comprueba la variable $nombre
{
case Roberto:
echo "Hola";
break;
case Juan:
echo "Hasta pronto";
break;
default:
echo "Nadie tiene este nombre";
}
?>
Da como resultado:
Regresar al ndice
1. For
Por ejemplo, si quiere mostrar diez veces Hola, solo tiene que escribir el bucle for.
<?php
for ($i = 1; $i <= 10; $i++)
{
echo Hola <br />;
}
?>
La variable $i representa el contador del bucle. No est obligado a recurrir a la variable $i, pero por
norma general es el nombre que se emplea.
$i++ es igual a $i=$i+1 y represtenta el aumento de $i. Puede escribir $i=$i+2 para aumentar o
$i=$i-1 para disminuir.
Por ejemplo, puede escribir los nmeros de 100 a 150 con el siguiente cdigo:
<?php
for ($i = 100; $i <= 150; $i++)
{
echo $i.<br />;
}
?>
<br /> permite saltar una lnea entre cada nmero para no tener que mostrarlos todos.
Por ejemplo, si quiere mostrar cinco veces Hola, solo debe escribir un bucle for:
<?php
for ($i = 1; $i <= 10; $i++)
{
echo Hola <br />;
if ($i == 5) {
break;
}
}
?>
Da como resultado :
Hola
Hola
Hola
Hola
Hola
2. While
El bucle while significa mientras que, es decir, el bucle se ejecutar siempre y cuando una
condicin sea verdadera.
Por ejemplo, para mostrar diez veces Hola, solo debe escribir un bucle while:
<?php
$i = 1;
while ($i <= 10)
{
$i=$i+1;
echo Hola <br />;
}
?>
La variable $i represtenta el contador del bucle. Pero mientras $i sea inferior o igual a 10, se
repetir el bucle.
$i=nmero inicial
while ($i <= nmero final)
{
aumento
instrucciones
}
Tenga en cuenta que el valor de salida de $i se pone antes del bucle y que este valor debe respetar
la condicin del bucle ($i <= nmero final) para entrar en el bucle.
Si escribe:
<?php
$i = 11;
while ($i <= 10)
{
$i=$i+1;
echo Hola <br />;
}
?>
Nunca pasar en el bucle porque $i vale 11 en un principio, no se satisface la condicin del bucle.
El bucle while es igual al bucle for; en algunas ocasiones le resultar muy til si desconoce el
nmero de veces que va a ejecutar un bucle, sobre todo si va a leer el bucle while en la base de
datos y la condicin de salida del bucle depende del valor ledo en la base de datos.
3. Do while
El bucle Do while significa hacer mientras, es decir, el bucle se ejecutar siempre y cuando una
condicin sea verdadera. Se diferencia del bucle while en que la expresin se ejecuta al menos una
vez.
Por ejemplo, para mostrar diez veces Hola, debe escribir el bucle Do while:
<?php
$i = 1;
do
{
$i=$i+1;
echo Hola <br />;
} while ($i <= 10)
?>
La variable $i representa el contador del bucle. Pero esta vez debe leer: ejecutar el bucle si $i es
inferior o igual a 10.
$i=nmero inicial
do
{
aumento
instrucciones
} while ($i <= nmero final)
4. Foreach