You are on page 1of 39

Área de Servicios – Dpto.

de Informática Curso de PHP

INTRODUCCIÓN
Las siglas PHP representan "Personal Home Page". PHP es un lenguaje de
programación pensado para utilizarse en desarrollos web, por lo que es
ideal para brindar mayor dinamismo a una página Web: acceso a bases de
datos, creación de foros, libros de visita, rotación de banners, etc.
PHP se inicia como un pasatiempo de Rasmus Lerdorf pero hoy en día,
gracias a su naturaleza gratuita, cuenta con miles de adeptos y existen
actualizaciones casi constantes. Varias empresas han observado el
potencial de PHP y le han otorgado su apoyo.
PHP es un lenguaje encapsulado dentro de documentos html, por ello se
pueden colocar instrucciones php dentro de las páginas. Gracias a esto el
diseñador de un sitio WEB puede trabajar de forma independiente al
programador. PHP es un lenguaje interpretado por el servidor (tecnología
del lado del servidor).

Al ser PHP un lenguaje que se ejecuta en el servidor no es necesario


que el navegador que se está utilizando lo soporte, su uso es
independiente del navegador. Sin embargo para que una página PHP
funcione, el servidor donde se encuentra dicha página debe soportar
PHP.
El lenguaje PHP es un lenguaje de programación de estilo clásico. Esto
significa es un lenguaje de programación que posee variables, sentencias
condicionales, bucles, funciones, etc. No es un lenguaje de marcas como
podría ser HTML, XML o WML. Está mas cercano a JavaScript o a C, para
aquellos que conocen estos lenguajes. Este lenguaje hereda su sintaxis de
C/Java y posee gran cantidad de funciones que permiten realizar todas las
acciones que soporta el lenguaje.
Pero a diferencia de Java o JavaScript que se ejecutan en el navegador,
PHP se ejecuta en el servidor, por eso nos permite acceder a los
recursos que tenga el servidor como por ejemplo una base de datos. El
programa PHP es ejecutado en el servidor y el resultado enviado al
navegador. El resultado es normalmente una página HTML pero igualmente
podría ser una pagina WML.

En la siguiente figura se muestra un gráfico que ilustra el


funcionamiento del lenguaje PHP:

Averiguar si una página tiene o no código PHP, es extremadamente simple,


basta con verificar su extensión, que puede ser: php, phtml, php3, php4

1
Área de Servicios – Dpto. de Informática Curso de PHP

ALGUNAS VENTAJAS DE PHP


9 Sencillo de aprender.
9 Similar sintaxis que lenguaje C y PERL
9 Se puede incrustar código PHP con etiquetas HTML.
9 Excelente soporte de acceso a base de datos.
9 El código PHP es mucho más legible que otros.
9 Posee una excelente biblioteca de funciones que permiten realizar
cualquier labor (acceso a base de datos, encriptación, envió de
correo, gestión de un e-commerce, xml, creación de PDF ... )
9 Al poderse encapsular dentro de código html se puede recoger el
trabajo del diseñador gráfico e incrustar el código php
posteriormente.
9 Hay multitud de aplicaciones php para resolver problemas concretos
(tiendas virtuales, periódicos, ... ) listas para usar.
9 Es multiplataforma, funciona en todas las plataformas que soporten
apache.
9 Es software libre.
9 Se puede hacer de todo lo que se pueda transmitir por vía HTTP.
9 Se pueden hacer grandes cosas con pocas líneas de código. Lo que
hace que merezca la pena aprenderlo.
9 Esta siendo utilizado con éxito en varios millones de sitios web.
9 Soporta en cierta medida la orientación a objeto. Clases y
herencia.

FUNCIONAMIENTO DE PHP
PHP es un lenguaje de script interpretado en el servidor web para la
generación de páginas web dinámicas. Es similar al ASP de Microsoft o el
JSP de Sun. Algunas de sus principales diferencias frente a estas otras
tecnologías son: rapidez; facilidad de aprendizaje; soporte
multiplataforma, tanto de diversos Sistemas Operativos, como servidores
HTTP y bases de datos; y el hecho de que se distribuye de forma gratuita
bajo una licencia abierta.
Para funcionar Php necesita su motor de scripting (script engine) que
ejecuta las partes en código antes de que el servidor de la red envíe la
página al usuario. Actualmente se ha llegado a la versión 3.0 del motor
Php (funciona prácticamente en todos los servidores de la red) disponible
en el sitio www.php.net.
Cuando un usuario solicita una página Php, el motor ejecuta el código que
está en esta página. Durante la ejecución, el código da unas
informaciones en formato html. Finalmente se envía el archivo
(completamente en formato html) al usuario.
Si intentáras visualizar el código fuente de una página en Php podés
comprobar que no aparece ninguna línea del código Php. La ventaja es
precisamente ésta, ningún usuario externo, excluido el webmaster, puede
acceder al código y modificarlo. Para el usuario externo, la página en
Php es exactamente igual que una página cualquiera en Html.

2
Área de Servicios – Dpto. de Informática Curso de PHP

SINTAXIS BÁSICA

Delimitadores de script
Estos modos de abrir y cerrar las etiquetas son:

<? y ?>
<% y %>
<?php y ?>
<script languaje="php"> esta es para Front Page

Separación de instrucciones
Las instrucciones se separan igual que en C o Perl - terminando cada
sentencia con un punto y coma.
La etiqueta de cierre (?>) también implica el fin de la sentencia, así lo
siguiente es equivalente:

<?php
echo "Esto es una prueba";
?>

<?php echo "Esto es una prueba" ?>

Comentarios
PHP soporta comentarios tipo 'C', 'C++' y shell de Unix. Por ejemplo:

<?php
echo "Esto es una prueba"; // Esto es un comentario tipo c++ para una
línea
/* Esto es un comentario multilínea
otra línea más de comentario*/
echo "Esto es aún otra prueba";
echo "Una Prueba Final"; # Este es un comentario tipo shell
?>

Primer ejemplo

<html>
<head>
<title>Ejemplo PHP</title>
</head>
<body>
<?php echo "Hola, este es un ejemplo con PHP!"; ?>
</body>
</html>

TIPOS DE DATOS SOPORTADOS POR PHP


El tipo de una variable normalmente no lo indica el programador; en su
lugar, lo decide PHP en tiempo de ejecución dependiendo del contexto en
el que se utilice esa variable.

3
Área de Servicios – Dpto. de Informática Curso de PHP

Si se quisiese obligar a que una variable se convierta a un tipo


concreto, se podría forzar la variable o usar la función settype(). Para
ello.

Settype()
int settype ( string var, string type)

Establece el tipo de la varible var como type.


Los valores posibles para type son:
• "integer"
• "double"
• "string"
• "array"
• "object"

Esta función retorna TRUE si se lleva a cabo con éxito; en otro caso
devuelve FALSE.

PHP soporta los siguientes tipos:


• array
• objeto
• entero
• numero entero punto flotante
• cadena

Array
Las tablas (o array en inglés), son muy importantes en PHP, ya que
generalmente, las funciones que devuelven varios valores, como las
funciones ligadas a las bases de datos, lo hacen en forma de tabla.

<?php

$ciudad[] = "París";
$ciudad[] = "París";
$ciudad[] = "Roma";
$ciudad[] = "Sevilla";
$ciudad[] = "Londres";

print ("yo vivo en " . $ciudad[2] . "<BR>\n");


?>

Esta es una forma de asignar elementos a una tabla, pero una forma más
formal es utilizando la función array

<?php
$ciudad = array("París", "Roma", "Sevilla", "Londres");
//contamos el número de elementos de la tabla
$numelentos = count($ciudad);
//imprimimos todos los elementos de la tabla
for ($i=0; $i < $numelentos; $i++)
{
print ("La ciudad $i es $ciudad[$i] <BR>\n");
}
?>

4
Área de Servicios – Dpto. de Informática Curso de PHP

Arrays Multidimensionales

Los arrays multidimensionales son bastante simples actualmente. Para cada


dimensión del array, se puede añadir otro valor [clave] al final:

<?php
$f=10;
$a[1] = $f; # ejemplos de una sola dimensión
$a["foo"] = $f;
$a[1][0] = $f; # bidimensional
$a["foo"][2] = $f; # (se pueden mezclar índices numéricos y
asociativos)
$a[3]["bar"] = $f; # (se pueden mezclar índices numéricos y
asociativos)
$a["foo"][4]["bar"][0] = $f; # tetradimensional!
?>

<?
$a = array(
"manzana" => array(
"color" => "rojo",
"sabor" => "dulce",
"forma" => "redondeada"
),
"naranja" => array(
"color" => "naranja",
"sabor" => "ácido",
"forma" => "redondeada"
),
"plátano" => array(
"color" => "amarillo",
"sabor" => "paste-y",
"forma" => "aplatanada"
)
);
echo $a["manzana"]["sabor"]; # devolverá "dulce"
?>

OPERADORES EN PHP
Al desarrollar cualquier programa empleamos normalmente operadores que
nos sirven para realizar diversas operaciones que le otorgan un cierto
grado de complejidad a nuestros programas, ya que, de otro modo el
programa realizaría siempre lo mismo y por tanto no seria un programa
útil.

Operadores aritméticos
+ Suma dos valores
- Resta dos valores (o pasa a negativo un valor)
* Multiplica dos valores
/ Divide dos valores
% Resto de dividir dos valores
++ Incremento en una unidad
-- Decremento en una unidad

5
Área de Servicios – Dpto. de Informática Curso de PHP

Operadores de asignación
= Asigna a la parte derecha el valor izquierdo
+= Realiza la suma de la derecha con la izquierda y la asigna a la
derecha
-= Realiza la resta de la derecha con la izquierda y la asigna a la
derecha
*= Realiza la multiplicación de la derecha con la izquierda y la
asigna a la derecha
/= Realiza la división de la derecha con la izquierda y la asigna a la
derecha
%= Se obtiene el resto y se asigna
.= Concatena el valor de la izquierda con la derecha y lo asigna a la
derecha

Operadores lógicos
! Operador NO o negacion.Si era true pasa a false y viceversa
And Operador Y, si ambos son verdaderos vale verdadero
Or Operador O, vale verdadero si alguno de los dos es verdadero
Xor Verdadero si alguno de los dos es true pero nunca ambos
&& True si ambos lo son
|| True si alguno lo es

Operadores condicionales
== Comprueba si dos números son iguales
!= Comprueba si dos números son distintos
> Mayor que, devuelve true en caso afirmativo
< Menor que, devuelve true en caso afirmativo
>= Mayor o igual
<= Menor o igual

ESTRUCTURAS DE CONTROL EN PHP


Gracias a las estructuras de control, podemos realizar comprobaciones y
ejecutar códigos especiales para hacer de nuestros scripts algo
verdaderamente útil.
Las estructuras de control permiten ejecutar bloque de códigos
dependiendo de unas condiciones. Para PHP el 0 es equivalente a Falso y
cualquier otro número es Verdadero. Dentro de las estructuras de control
encontramos condicionales e iteraciones.

IF...ELSE
La sentencia IF...ELSE permite ejecutar un bloque de instrucciones si la
condición es Verdadera y otro bloque de instrucciones si ésta es Falsa.
Es importante tener en cuenta q instrucciones si ésta es Falsa. Es
importante tener en cuenta que la condición que evaluemos ha de estar
encerrada entre paréntesis (esto es aplicable a todas la sentencias de
control).
if (condición) {
Este bloque se ejecuta si la condición es VERDADERA
} else {

6
Área de Servicios – Dpto. de Informática Curso de PHP

Este boque se ejecuta si la condición es FALSA


}
Existe una forma sencilla de usar la sentencia IF cuando no tenemos que
usar el ELSE y solo tenenemos que ejecutar una línea de código.
if ($a > 4) echo "$a es mayor que 4";

IF...ELSEIF...ELSE
La sentencia IF...ELSEIF...ELSE permite ejecuta varias condiciones en
cascada. Para este caso veremos un ejemplo, en el que utilizaremos los
operadores lógicos.
<?php
if ($nombre == ""){
echo "Tú no tienes nombre";
} elseif (($nombre=="eva") OR ($nombre=="Eva")) {
echo "
echo "Tu nombre es EVA";<
} else {
echo "Tu nombre es " . $nombre;
}

SWITCH...CASE...DEFAULT
Una alternativa a IF...ELSEIF...ELSE, es la sentencia SWITCH, la cuál
evalúa y compara cada expresión de la sentencia CASE con la expresión que
evaluamos, si llegamos al final de la lista de CASE y encuentra una
condición Verdadera , ejecuta el código de bloque que haya en DEFAULT. Si
encontramos una condición verdadera debemos ejecutar un BREAK para que la
sentencia SWITCH no siga buscando en la lista de CASE. Veamos un ejemplo.
<?php
switch ($dia) {
case "Lunes":
echo "Hoy es Lunes";
break;
c
case "Martes":
echo "Hoy es Martes";
break;
case "Miercoles":
echo "Hoy es Miercoles";
break;
case "Jueves":
echo "Hoy es Jueves";
break;
case "Viernes":
echo "Hoy es Viernes";
break;
case "Sábado":
echo "Hoy es Sábado";

7
Área de Servicios – Dpto. de Informática Curso de PHP

break;
case "Domingo":
echo "Hoy es Domingo";
break;
default:
default:
echo "Esa cadena no corresponde a ningún día de la semana";
}
?>

WHILE
La sentencia WHILE ejecuta un bloque de código mientras se cumpla una
determinada condición.
<?php
$num = 1;
while ($num < 5) {
echo $num;
$num++
}
?>
Podemos romper un bucle WHILE utilizando la sentencia BREAK.
<?php
$num = 1;
while ($num < 5) {
echo $num;
if ($num == 3){
echo "Aquí nos salimos \n";
break
}
$num++
}
?>

DO...WHILE
Esta sentencia es similar a WHILE, salvo que con esta sentencia primero
ejecutamos el bloque de código y después se evalúa la condición, por lo
que el bloque de código se ejecuta siempre al menos una vez.
<?php
$num = 1;
do {
echo $num;
if ($num == 3){
echo "Aquí nos salimos \n";
break
}
$num++

8
Área de Servicios – Dpto. de Informática Curso de PHP

} while ($num < 5);


?>

FOR
El bucle FOR no es estrictamente necesario, cualquier bucle FOR puede ser
sustituido fácilmente por otro WHILE. Sin embargo, el bucle FOR resulta
muy útil cuando debemos ejecutar un bloque de código a condición de que
una variable se encuentre entre un valor mínimo y otro máximo. El bucle
FOR también se puede romper mediante la sentencia BREAK.
<?php
for ($num = 1; Snum <=5; $num++){
echo $num;
if ($num == 3){
echo "Aquí nos salimos \n";
break
}
}
?>

FUNCIONES
El uso de funciones nos da la capacidad de agrupar varias instrucciones
bajo un solo nombre y poder llamarlas a estas varias veces desde
diferentes sitios, ahorrándonos la necesidad de escribirlas de nuevo.
<?php
function Nombre(parametro1, parametro2...)
{
instrucción1;
instrucción2;
instrucción3;
instrucción4;

return valor_de_retorno;
}

?>

Opcionalmente podemos pasarle parámetros a las funciones que se trataran


como variable locales y así mismo podemos devolver un resultado con la
instrucción return valor; Esto produce la terminación de la función
retornando un valor.

<!-- Ejemplo14.php -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php

function media_aritmetica($a, $b)

9
Área de Servicios – Dpto. de Informática Curso de PHP

{
$media=($a+$b)/2;
return $media;
}

echo media_aritmetica(4,6),"<br>";
echo media_aritmetica(3242,524543),"<br>";

?>
</body>
</html>

Modifique el ejemplo14.php para que la función la incluya desde un


archivo externo con las funciones en él.

Parámetros
Parámetros por defecto
Si deseamos que la función por defecto ponga el texto en color azul, por
ejemplo, la redefiniríamos de la siguiente manera:

function outputcol($strCadena, $strColor="0000FF") {


// Saca una cadena con el color deseado
Echo("<FONT COLOR=\"#$strColor\">$strCadena</FONT>");
}

y la podríamos invoocar con:


outputcol("Defecto");
outputcol("Verde", "00FF00");
Dando el resultado:
<FONT COLOR="#0000FF">Defecto</FONT>
<FONT COLOR="#00FF00">Verde</FONT>

Evidentemente, siempre que una función tenga n parámetros por defecto,


éstos deberán ser los n últimos parámetros declarados.

Parámetros por referencia


En PHP por defecto los parámetros se pasan por valor, es decir, que si
los modificamos dentro de la función, a la vuelta de la función las
variables pasadas como parámetro no se modificaron (a dichas variables se
les denomina parámetros actuales de la función).
Si deseamos que las variables del llamante sean modificadas (los
mencionados parámetros actuales), hay que pasar los parámetros por
referencia:

<!-- Funcion1.php -->


function Concatena(&$strDest, $strSrc) {
// Esta función concatena dos cadenas y las devuelve
// en la primera cadena pasada
// $strDest se le pasa como parámetro por referencia.
$strDest = $strDest . $strSrc;
// Como $strSrc no se pasa por referencia, la siguiente
// instrucción no afecta al parámetro actual
$strSrc = "";
}
$strOrigen = "Mundo";
$strDestino = "Hola ";

10
Área de Servicios – Dpto. de Informática Curso de PHP

Echo("Origen es $strOrigen y destino es $strDestino<BR>");


Concatena($strDestino, $strOrigen);
Echo("Origen es $strOrigen y destino es $strDestino<BR>");

Que ofrece el resultado:


Origen es Mundo y destino es Hola
Origen es Mundo y destino es Hola Mundo

Como se ve, para pasar un parámetro por referencia, basta con poner "&"
delante del nombre del parámetro en la declaración de la función, es
decir, poner "&" delante del nombre del parámetro formal.
También se puede pasar un parámetro por referencia aunque en la función
no esté declarado como tal, anteponiendo el ampersand "&" al parámetro
actual (al invocar la función).

Variables en funciones
Variables locales
Para definir una variable local, simplemente se asigna un valor a la
variable:

function Iva($fValue) {
// $fIVA es una variable local
$fIVA = $fValue * 0.21;
Echo("El IVA de $fValue es $fIVA<BR>");
}
Iva(2350);

Variables estáticas
Si queremos que la variable local conserve el valor de invocación a
invocación de la función, basta declararla como estática:

<!-- Funcion2.php -->


function Counter() {
static $count = 0;
$count2 = 0;
$count2++;
Echo("Count vale $count y count2 vale $count2<BR>");
$count++;
}
Counter();
Counter();
Counter();

muestra en la página:
Count vale 0 y count2 vale 1
Count vale 1 y count2 vale 1
Count vale 2 y count2 vale 1

La inicialización de la variable sólo tiene lugar la primera vez que se


invoca Counter.

Acceso a variables globales


Este es uno de los puntos en los que PHP se diferencia de C y es un punto
importante y causa de bastantes quebraderos de cabeza para el primerizo
en PHP.

11
Área de Servicios – Dpto. de Informática Curso de PHP

Para acceder a una variable global desde dentro de una función es


imprescindible declararla dentro de la función como global $variable, ya
que de otro modo PHP pensará que se desea hacer referencia a una variable
local:

<!-- Funcion3.php -->


function TouchGlobal() {
global $strCadena;
$strCadena = "¡Tocada!";
$nValue = 7;

Echo("Dentro de TouchGlobal ahora \$strCadena vale " .


$strCadena " . "y \$nValue vale $nValue<BR>");
}
$strCadena = "Hola mundo";
$nValue = 4;
Echo("\$strCadena vale $strCadena y \$nValue vale $nValue<BR>");
TouchGlobal();
Echo("\$strCadena ahora vale $strCadena y \$nValue sigue ".
"valiendo $nValue<BR>");

Como se ve, no es necesario que la variable global esté en el fichero


físicamente delante de la función, basta con que haya sido inicializada
antes de llamar a la función. Los cambios realizados a una variable
global dentro de una función, permanecen cuando se vuelve de la función.
Otra forma de acceder a las variables globales es mediante una indexación
asociativa del array $GLOBALS.

Retorno de un valor
Para devolver un valor se emplea la cláusula return.

<!-- Funcion4.php -->


function Factorial($nValue) {
if ($nValue <= 1) {
return 1;
}else {
return Factorial($nValue-1)*$nValue;
}
}
$nNumber = 7;
Echo("El factorial de $nNumber es " . Factorial($nNumber));

En PHP las funciones pueden llamarse a sí mismas (recursivas), e incluso


se pueden declarar funciones dentro de funciones o clases dentro de
funciones.

Evaluación de variables con eval


La función eval($strExpr) permite evaluar la expresión $strExpr, de
manera que si contiene código PHP válido, éste será interpretado. Esto
permite cosas muy flexibles como por ejemplo callbacks:

<!-- Funcion5.php -->


function mycallback($strParam) {
Echo("Dentro del callback<BR> con parámetro $strParam");
}

function myfunc($fnCallback) {

12
Área de Servicios – Dpto. de Informática Curso de PHP

// Creamos una tabla


echo("<TABLE><TR><TD>Callback1:</TD><TD>");
// Llamamos al callback
eval($fnCallback);
// Cerramos la tabla
Echo("</TD></TR><TABLE>");
}
$strCode = 'global $strParam; mycallback($strParam);';
$strParam = "Soy el parámetro del callback";
myfunc($strCode);

Podemos emplear otra técnica para hacer callbacks más sencillos con:
function mycallback() {
Echo("Dentro del callback.<BR>");
}
$strCallback = "mycallback";
// Llamamos al callback
$strCallback();

Variables variables
No, el título no está equivocado, las variables variables son formas de
indireccionamiento a la hora de referirse a variables.
Si tenemos dos variables $strVarName y $nValue y hacemos que $strVarName
contenga la cadena "nValue", al referirnos a $$strVarName (nótese el
doble dólar "$$") nos estamos refiriendo a la variable que tiene como
nombre el contenido de $strVarName, es decir, a $nValue.
Lo anterior plasmado en un ejemplo sería:

$nValue = 5;
$strVarName = "nValue";
echo("Mostrando el valor de $strVarName: $$strVarName.<BR>");
$$strVarName = 5;
echo("Ahora $strVarName vale $$strVarName.<BR>");

En los casos en los que haya ambigüedad, puede emplearse el agrupador {},
por ejemplo, para $$myarray[0]), podríamos referirnos:

1.Al primer elemento del array que tiene como nombre el contenido de
la variable $myarray.
2.A la variable que tiene como nombre el contenido de $myarray[0].
Si empleásemos el operador de agrupación para evitar la ambigüedad, el
primer caso lo escribiríamos ${$myArray}[0] y ${$myArray[0]} en el
segundo.

Die, exit
Se emplean para terminar la ejecución del script abruptamente.
•Die($msg) muestra el mensaje $msg antes de salir.
•Exit() sale de la ejecución del script.

Librerias
El uso de librerías es tremendamente útil, nos permiten agrupar varias
funciones y variables en un mismo fichero, de manera que luego podemos
incluir esta librería en distintas páginas y disponer de esas funciones
fácilmente.

13
Área de Servicios – Dpto. de Informática Curso de PHP

<!-- librería1.inc -->


<?php
function CabeceraPagina()
{
?>
<FONT SIZE="+1">Esta cabecera estará en todas sus páginas.</FONT><BR>
<hr>
<?
}

function PiePagina()
{
?>
<hr>
<FONT SIZE="-1">Este es el pie de página.</FONT><BR>
<?
}
?>

Ahora vamos a crear 2 páginas que usan la librería definida anteriormente


para conseguir que las dos paginas tengan la misma cabecera y pie de
pagina.
La instrucción para incluir una librería en nuestra página es
include("nombre de librería")

<!-- ejemplo15.php -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php include("libreria1.inc") ?>
<?php CabeceraPagina(); ?>
Página 1
<BR><BR><BR><BR><BR>

Contenido blalbl blalb alb<BR><BR>


más cosas...<BR><BR>

fin<BR><BR>

<?php PiePagina(); ?>


</body>
</html>

<!-- Ejemplo16.php -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php include("libreria1.inc") ?>
<?php CabeceraPagina(); ?>

Esta es otra página<BR><BR>


completamente distinta<BR><BR>
pero comparte el pie y la cabecera con la otra.<BR><BR>

14
Área de Servicios – Dpto. de Informática Curso de PHP

<?php PiePagina(); ?>


</body>
</html>

Usando fecha y hora en PHP


En este capitulo veremos como usar, mostrar y utilizar las fechas desde
PHP.
La función Date() es la que usaremos para mostrar las fechas u horas.
Antes de ver un ejemplo tengo que presentarles una tabla, que contiene
los códigos de formato de fecha.

Código Display
A am o pm
A AM o PM
H Hora (de 1 a 12)
H Hora (de 0 a 23)
I Minutos
S Segundos
J Dia (sin los ceros)
D Dia (con los ceros)
D Abreviacion del dia (en ingles)
L Nombre del dia (en ingles)
Z Numero de dia del año (desde 1 hasta 365)
M Numero del Mes
M Abreviacion del mes (en ingles)
F Nombre del mes (en ingles)
Y Año (formato de 2 digitos)
Y Año (formato de 4 digitos)

Para mostrar cualquiera de los datos anteriores usamos la función Date()


de esta forma: Date("codigo")

<?php
echo Date("d/m/y");
?>

En el navagador se vería asi...


05/10/02

El código dentro de la función Date() se usa entre comillas, como fue


escrito en el ejemplo. Les mostraré un ejemplo mas, donde mostraremos mas
datos al mismo tiempo.

<?php
echo "Son exactamente las : ",Date("h:i:s"),"... y hoy es: ",Date("d-m-
Y");

15
Área de Servicios – Dpto. de Informática Curso de PHP

echo "<BR>";
echo "Es el día numero <B>",Date("z"),"</B> del año";
?>

Como siempre les muestro el código ejecutado...


Son exactamente las : 12:41:22... y hoy es: 05-10-2002
Es el día numero 277 del año

Mas adelante veremos como usar la función date(), y hacer operaciones de


modificación de los datos.

Ahora les hablare unas líneas sobre la función Time()


La función Time(), nos devuelve el numero de segundos que pasaron desde
el 1/1/1970 hasta este instante. Esta forma de expresar el tiempo (fecha
y hora) es llamada timestamp

¿Se entiende? vemos que pasa si hacemos el siguiente código.


<? echo Time(); ?>

Ejecutado y procesado, produce lo siguiente...


1033832482

¿Que es eso? Eso es exactamente lo que dije arriba. Ese numero extraño
son la cantidad de segundos que pasaron desde el 1/1/1970 hasta esta
instante.

FORMULARIOS

Envío y recepción de datos


El lenguaje PHP nos proporciona una manera sencilla de manejar
formularios, permitiéndonos de esta manera procesar la información que el
usuario ha introducido.
Al diseñar un formulario debemos indicar la página PHP que procesará el
formulario, así como en método por el que se le pasará la información a
la página.

<!-- Ejemplo17.php -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>
Introduzca su nombre:
<FORM ACTION="procesa.php" METHOD="GET">
<INPUT TYPE="text" NAME="nombre"><BR>
<INPUT TYPE="submit" VALUE="Enviar" NAME=”Enviar”>
</FORM>
</body>
</html>

Al pulsar el botón Enviar el contenido de cuadro de texto es enviado a la


página que indicamos en el atributo ACTION de la etiqueta FORM.
PHP crea una variable por cada elemento del FORM, esta variable creada
tiene el mismo nombre que el cuadro de texto de la página anterior y el

16
Área de Servicios – Dpto. de Informática Curso de PHP

valor que hayamos introducido. En este ejemplo se ha creado una variable


llamada $nombre con el valor que haya introducido el navegante.

<!-- procesa.php -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>
El nombre que ha introducido es: <?php echo $nombre ?>
<br>
</FORM>
</body>
</html>

Método GET y POST


En la página anterior hemos comentado que los datos de un formulario se
envían mediante el método indicado en el atributo METHOD de la etiqueta
FORM, los dos métodos posibles son GET y POST.
La diferencia entre estos dos métodos radica en la forma de enviar los
datos a la página, mientras que el método GET envía los datos usando la
URL, el método POST los envía por la entrada estándar STDIO.

<!-- Ejemplo18.php -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>

<FORM ACTION="procesa2.php" METHOD="GET">


Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR>
Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>

<!-- Ejemplo19.php -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>
<FORM ACTION="procesa2.php" METHOD="POST">
Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR>
Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>

procesa2.php
<!-- procesa2.php -->

17
Área de Servicios – Dpto. de Informática Curso de PHP

<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>
El nombre que ha introducido es: <?php echo $nombre," ",$apellidos ?>
<br>
</body>
</html>

El resultado final es el mismo, solo que con el método GET podemos ver
los parámetros pasados ya que están codificados en la URL.
A veces para que quede la información menos expuesta se usa el método
POST. Con el método GET se pueden codificar hasta 512 caracteres en la
URL, de manera que si hay que pasar mucha información este método no nos
servirá.

Envio de e-mails
PHP nos ofrece la posibilidad de enviar emails de una manera sencilla y
fácil, para ello el lenguaje nos proporciona la instrucción mail( )

<?php
mail(destinatario, tema, texto del mensaje);
?>

En el parámetro destinatario pondremos la dirección de email a donde se


enviará el mensaje, en el parámetro tema el tema o subject del mensaje y
el parámetro texto del mensaje el cuerpo del mensaje en formato texto
plano.
Existe una sintaxis extendida de la instrucción mail( ) que nos permite
añadir información adicional a la cabecera del mensaje.
<?php
mail(destinatario, tema, texto del mensaje, información adicional de
cabecera);
?>

En la información de cabecera podremos incluir parámetros adicionales al


mensaje como Reply-To:, From:, Content-type:... que nos permiten tener un
mayor control sobre el mensaje.

<!-- Ejemplo20.php -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de envio de email</H1>
Introduzca su direccion de email:
<FORM ACTION="email.php" METHOD="GET">
<INPUT TYPE="text" NAME="direccion"><BR><BR>
Formato: <BR>
<INPUT TYPE="radio" NAME="tipo" VALUE="plano" CHECKED> Texto plano<BR>
<INPUT TYPE="radio" NAME="tipo" VALUE="html"> HTML<BR><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>

18
Área de Servicios – Dpto. de Informática Curso de PHP

</html>

email.php
<!-- email.php -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de envio de email</H1>
<? if ($direccion!=""){
if ($tipo=="plano"){
// Envio en formato texto plano

mail($direccion,"Ejemplo de envio de email","Ejemplo de envio de


email de texto plano\n\nWebEstilo.\nhttp://www.webestilo.com/\n
Manuales para desarrolladores web.\n","FROM: Pruebas
<webmaster@hotmail.com>\n");
} else {
// Envio en formato HTML
mail($direccion, "Ejemplo de envio de email
","<html><head><title>WebEstilo. Manual de
PHP</title></head><body>Ejemplo de envio de email de
HTML<br><br>WebEstilo.<br>http://www.webestilo.com/<br>
<u>Manuales</u> para <b>desarrolladores</b>
web.</body></html>","Content-type: text/html\n", "FROM: Pruebas
<webmaster@hotmail.com>\n");
}
echo "Se ha enviado un email a la direccion: ",$direccion," en formato
<b>",$tipo,"</b>.";
}
?>
<br>
</FORM>
</body>
</html>

BASE DE DATOS

Creación de la base de datos


Para la realización de este curso sobre PHP con acceso a base de datos
hemos elegido la base de datos MySQL por ser gratuita y por ser también
la mas empleada en entornos UNIX, para lo cual el servidor donde tenemos
alojadas las páginas nos tiene que proporcionar herramientas para crearla
o acceso al Telnet para que la creemos por nosotros mismos.
El comando para crear una base de datos MySQL es el siguiente: mysqladmin
-u root create base_datos
Con este comando conseguimos crear la una base de datos en el servidor de
bases de datos de nuestro servidor.
Una vez conseguido esto debemos crear las tablas en la base de datos, la
descripción de las tablas contienen la estructura de la información que
almacenaremos en ellas. Para lo cual usaremos en lenguaje de consultas
SQL común para todas las bases de datos relacionales.
En este ejemplo creamos una tabla llamada prueba con 3 campos: un campo
identificador, que nos servirá para identificar unívocamente una fila con

19
Área de Servicios – Dpto. de Informática Curso de PHP

el valor de dicho campo, otro campo con el nombre de una persona y por
último un campo con el apellido de la persona.
Para crear la tabla puede usar la herramienta de administración de MySQL
de su servidor web o puede escribir un fichero de texto con el contenido
de la sentencia SQL equivalente y luego decirle al motor de base de datos
que la ejecute con la siguiente instrucción:
mysql -u root base_datos <prueba.sql

prueba.sql
CREATE TABLE prueba (ID_Prueba int(11) DEFAULT '0' NOT NULL
auto_increment,
Nombre varchar(100),
Apellidos varchar(100),
PRIMARY KEY (ID_Prueba),
UNIQUE ID_Prueba (ID_Prueba)
);

Conexión a la base de datos


Una vez que tenemos creada la base de datos en nuestro servidor, el
siguiente paso es conectarnos a la misma desde una página PHP. Para ello
PHP nos proporciona una serie de instrucciones para acceder a bases de
datos MySQL.
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
function Conectarse()

if (!($link=mysql_connect("localhost","usuario","Password")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("base_datos",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

$link=Conectarse();
echo "Conexión con la base de datos conseguida.<br>";

mysql_close($link); //cierra la conexion


?>
</body>
</html>

Al ejecutar la instrucción mysql_connect creamos un vínculo entre la base


de datos y la pagina PHP, este vínculo será usado posteriormente en las
consultas que hagamos a la base de datos.
Finalmente, una vez que hemos terminado de usar el vínculo con la base de
datos, lo liberaremos con la instrucción mysql_close para que la conexión
no quede ocupada.

20
Área de Servicios – Dpto. de Informática Curso de PHP

Consultas a la base de datos


Una vez que nos hemos conectado con el servidor de bases de datos, ya
podemos realizar consultas a las tablas de la base de datos.
Para facilitar la programación hemos separado la función de conexión en
una librería a parte, de tal manera que la incluiremos en todas las
páginas que accedan a la base de datos.
conex.phtml
<!-- Manual de PHP de WebEstilo.com -->
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","usuario","Password")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("base_datos",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>

<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<?php
include("conex.phtml");
$link=Conectarse();
$result=mysql_query("select * from prueba",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD>&nbsp;Nombre</TD><TD>&nbsp;Apellidos&nbsp;</TD></TR>
<?php

while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td></tr>",
$row["Nombre"],$row["Apellidos"]);
}
mysql_free_result($result);
mysql_close($link);
?>
</table>
</body>
</html>

En este ejemplo hemos utilizado 3 instrucciones nuevas: mysql_query,


mysql_fetch_array y mysql_free_result. Con la instrucción mysql_query
hemos hecho una consulta a la base de datos en el lenguaje de consultas
SQL, con la instrucción mysql_fetch_array extraemos los datos de la

21
Área de Servicios – Dpto. de Informática Curso de PHP

consulta a un array y con mysql_free_result liberamos la memoria usada en


la consulta.

Operaciones de base de datos


Insertar registros
Hasta ahora nos hemos conectado a una base de datos y hemos hecho
consultas a la misma, ahora presentaremos como introducir nuevo registros
en la base de datos.
Para ello usaremos un formulario y en el ACTION del FORM <FORM
ACTION="programaPHP"> indicaremos que debe ser procesado una pagina PHP,
esta página lo que hará será introducir los datos del formulario en la
base de datos.

ejem07d.phtml
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<FORM ACTION="procesar.phtml">
<TABLE>
<TR>
<TD>Nombre:</TD>
<TD><INPUT TYPE="text" NAME="nombre" SIZE="20" MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Apellidos:</TD>
<TD><INPUT TYPE="text" NAME="apellidos" SIZE="20" MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="accion" VALUE="Grabar">
</FORM>
<hr>
<?php
include("conex.phtml");
$link=Conectarse();
$result=mysql_query("select * from prueba",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD>&nbsp;<B>Nombre</B></TD>
<TD>&nbsp;<B>Apellidos</B>&nbsp;</TD></TR>
<?php

while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td> <td>&nbsp;%s&nbsp;</td></tr>",
$row["Nombre"], $row["Apellidos"]);
}
mysql_free_result($result);
mysql_close($link);
?>
</table>
</body>
</html>

procesar.phtml

22
Área de Servicios – Dpto. de Informática Curso de PHP

<?php
include("conex.phtml");
$link=Conectarse();
$nombre=$_GET['nombre'];
$apellidos=$_GET['apellidos'];
mysql_query("insert into prueba (Nombre,Apellidos) values
('$nombre','$apellidos')",$link);
header("Location: ejem07d.phtml");
?>

La primera página PHP ejem07d.phtml es un formulario que nos permite


introducir nombre y apellido para añadirlo a la base de datos, seguido de
una consulta que nos muestra el contenido de la tabla prueba. El
formulario llama a la pagina procesar.phtml que añadirá los datos a la
tabla.
La segunda página procesar.phtml se conecta a la base de datos y añade un
nuevo registro con la instrucción insert del lenguaje de base de datos
SQL. Una vez el registro se ha añadido se vuelve a cargar la página
ejem07d.phtml

Eliminar registros
Y finalmente, para cerrar el ciclo, nos queda el borrado de registros. El
borrado de registros el uno de los procesos más sencillos.
Para indicar que elemento vamos a borrar hemos usado un enlace a la
página borra.phtml pasándole el ID_Prueba de cada registro, de esta
manera la página borra.phtml sabe que elemento de la tabla ha de borrar.

ejem07e.phtml
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>

<?php
include("conex.phtml");
$link=Conectarse();
$result=mysql_query("select * from prueba",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>Apellidos</B>&nbsp;</TD>
<TD>&nbsp;<B>Borrar</B>&nbsp;</TD></TR>
<?php

while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td><a
href=\"borra.phtml?id=%d\">Borra</a></td></tr>",
$row["Nombre"],$row["Apellidos"],$row["ID_Prueba"]);
}
mysql_free_result($result);
mysql_close($link);
?>
</table>
</body>
</html>

23
Área de Servicios – Dpto. de Informática Curso de PHP

borra.phtml
<?php
include("conex.phtml");
$link=Conectarse();
$id=$_GET['id'];
mysql_query("delete from prueba where ID_Prueba = $id",$link);
header("Location: ejem07e.phtml");
?>

La página borra.phtml se conecta a la base de datos y borra el registro


indicado en la variable $id que ha sido pasado desde la página
ejem07e.phtml. Una vez el registro se ha borrado se vuelve a cargar la
página ejem07e.phtml.

Restringir el acceso
En esta sección vamos a explicar cómo podemos restringir el acceso a
según qué páginas, para que solo las personas autorizadas puedan acceder
a ciertas partes del nuestro sitio web.
Atención: El acceso restringido a páginas usando las variables globales
$PHP_AUTH_USER, $PHP_AUTH_PW y $PHP_AUTH_TYPE solo funciona si PHP ha
sido instalado como un módulo de Apache, si ha sido instalado como un CGI
los ejemplos de ésta sección no funcionarán.
Para conseguir la autentificación en las páginas usaremos el sistema de
autentificación del protocolo HTTP, este sistema se basa en las variables
globales $PHP_AUTH_USER y $PHP_AUTH_PW.
$PHP_AUTH_USER. Nombre de usuario introducido.
$PHP_AUTH_PW. Contraseña introducida.
Para que el navegador nos muestre la ventana de petición de nombre de
usuario y contraseña basta con enviar la siguiente cabecera:

<?php // Manual de PHP de WebEstilo.com


if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}
else {
echo "Ha introducido el nombre de usuario: $PHP_AUTH_USER<br>";
echo "Ha introducido la contraseña: $PHP_AUTH_PW<br>";
}
?>

Esto provoca que se muestre la ventana de nombre de usuario y contraseña


y los datos introducidos se asignen a las variables $PHP_AUTH_USER y
$PHP_AUTH_PW.
A partir de aquí realizaremos las comprobaciones necesarias para
asegurarnos que los datos introducidos son los correctos.
En el siguiente ejemplo pediremos autorización y comprobaremos si el
nombre de usuario es Joe y la contraseña 123, si es así tendremos acceso
al resto de la página.
<?php // Manual de PHP de WebEstilo.com

if (($PHP_AUTH_USER!="Joe") || ($PHP_AUTH_PW!="123")) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');

24
Área de Servicios – Dpto. de Informática Curso de PHP

echo 'Authorization Required.';


exit;
}
?>
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
Ha conseguido el acceso a la <B>zona restringida</B>.
</body>
</html>

Distinción de usuarios
En la anterior página todo el mundo que tenía acceso a la parte
restringida entraba con el mismo nombre de usuario y contraseña, esto
evidentemente no es una buena solución, es mejor que cada persona tenga
un nombre de usuario y contraseña, ya que de esta forma podemos
inhabilitar a un usuario sin ver comprometida la seguridad de nuestro
sitio.
En esta página veremos la forma de realizar esto, teniendo un fichero
separado con los nombres de usuario y las contraseñas válidas. Dicho
fichero podría tener el siguiente formato: nombre_de_usuario|contraseña.
Por ejemplo:
passwords.txt
Joe|1235
Pedro|qwer
Noe|Gty45e
kermit|rwe4v

En este ejemplo se pide la autorización al comienzo de la página si no se


ha establecido con anterioridad y se comprueba con el fichero de
contraseñas que hemos llamado passwords.txt, si el nombre de usuario y
contraseña coincide con alguna entrada del fichero se nos permite ver el
resto de la página.

<?php // Manual de PHP de WebEstilo.com


if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}

$fich = file("passwords.txt");
$i=0; $validado=false;
while ($fich[$i] && !$validado) {
$campo = explode("|",$fich[$i]);
if (($PHP_AUTH_USER==$campo[0]) && ($PHP_AUTH_PW==chop($campo[1])))
$validado=true;
$i++;
}

if (!$validado) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');

25
Área de Servicios – Dpto. de Informática Curso de PHP

echo 'Authorization Required.';


exit;
}
?>
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
Ha conseguido el acceso a la <B>zona restringida</B> con el usuario <?php
echo $PHP_AUTH_USER?>.
</body>
</html>

SESIONES

Introducción
En los programas que hemos visto hasta ahora, hemos utilizado variables
que sólo existían en el archivo que estaba siendo ejecutado. Cuando
cargábamos otra página distinta, los valores de estas variables se
perdían a menos que nos tomásemos la molestia de pasarlos por la URL o
inscribirlos en las cookies o en un formulario para su posterior
explotación. Estos métodos, aunque útiles, no son del todo prácticos,
por ejemplo en el caso que una variable sea utilizada en varios scripts
diferentes y distantes los unos de los otros.
Podríamos pensar que ese problema puede quedar resuelto con las cookies
ya que se trata de variables que pueden ser invocadas en cualquier
momento. El problema, es que las cookies no son aceptadas ni por la
totalidad de los usuarios ni por la totalidad de los navegadores.
Nos resulta necesario el poder declarar ciertas variables que puedan ser
reutilizadas tantas veces como queramos dentro de una misma sesión.
Imaginemos un sitio multilingüe en el que cada vez que queremos imprimir
un mensaje en cualquier página necesitamos saber en qué idioma debe
hacerse. Podríamos introducir un script identificador de la lengua del
navegador en cada uno de los archivos o bien declarar una variable que
fuese valida para toda la sesión y que tuviese como valor el idioma
reconocido en un primer momento.
Pensemos también en un carrito de la compra de una tienda virtual donde
el cliente va navegando por las páginas del sitio y añadiendo los
artículos que quiere comprar a un carrito. Este carrito podría ser
perfectamente una variable de tipo array (tabla) que almacena para cada
referencia la cantidad de artículos contenidos en el carrito. Esta
variable debería ser obviamente conservada continuamente a lo largo de
todos los scripts.
Este tipo de situaciones son solventadas a partir de las variables de
sesión. Una sesión es considerada como el intervalo de tiempo empleado
por un usuario en recorrer nuestras páginas hasta que abandona nuestro
sitio o deja de actuar sobre él durante un tiempo prolongado o hasta que
cierra el navegador.
PHP nos permite almacenar variables llamadas de sesión que, una vez
definidas, podrán ser utilizadas durante este lapso de tiempo por
cualquiera de los scripts de nuestro sitio. Estas variables serán
especificas del usuario de modo que varias variables sesión del mismo
tipo con distintos valores pueden estar coexistiendo para cada una de las

26
Área de Servicios – Dpto. de Informática Curso de PHP

sesiones que están teniendo lugar simultáneamente. Estas sesiones tienen


además su propio identificador de sesión que será único y específico.
Hemos dicho anteriormente que la variables de sesión se diferencian de
las variables clásicas en que éstas residen en el servidor, son
especificas de un solo usuario definido por un identificador y pueden ser
utilizadas en la globalidad de nuestras páginas.
Para iniciar una sesión podemos hacerlo de dos formas distintas:
1. Declaramos abiertamente la apertura de sesión por medio de la
función
session_start(): Esta función crea una nueva sesión para un nuevo
visitante o bien recupera la que está siendo llevada a cabo.
2. Declaramos una variable de sesión por medio de la función
session_register('variable'): Esta función, además de crear o
recuperar la sesión para la página en la que se incluye también
sirve para introducir una nueva variable de tipo sesión.

Las sesiones han de ser iniciadas al principio de nuestro script. Antes


de abrir cualquier etiqueta o de imprimir cualquier cosa. En caso
contrario recibiremos un error.
El proceso en cualquier lenguaje de programación podría ser algo así:
a. Si existe la retomamos, si no existe creamos una nueva.
b. Generar un identificador único
c. Luego, deberemos asociar esta sesión a todas las URLs y acciones
de formulario.
Uno de los errores más comunes cuando se utilizan sesiones es dejar
líneas en blanco antes de la inicialización de PHP o enviar alguna salida
a la pantalla.

Ejemplo1
Registrando una variable

<?php
session_register("contador");
$HTTP_SESSION_VARS["contador"]++;
?>
Este ejemplo podría escribirse de la siguiente forma, si habilitamos la
opción register_globals en el archivo php.ini

<?php
session_register("contador");
$contador++;
?>

Otras funciones útiles para la gestión de sesiones son:

Función Descripción

Nos devuelve el identificador


Session_id()
de la sesión
Da por abandonada la sesión
Session_destroy()
eliminando variables e

27
Área de Servicios – Dpto. de Informática Curso de PHP

identificador.

Session_unregister('variable') Abandona una variable sesión

Guarda el identificador de
$PHPSESSID
sesión del usuario.
Obtiene o asigna el nombre a la
Session_name
sesión actual.

Ejemplo 2:
El siguiente, es un ejemplo clásico de utilización de una sesión: un
contador. Este contador deberá aumentar de una unidad cada vez que
recargamos la página o o presionamos el link:

<?
session_name('misesion');
session_register('contador');
?>
<HTML>
<HEAD>
<TITLE>contador.php</TITLE>
</HEAD>
<BODY>
<?
If (isset($_SESSION['contador'])==0)
{$_SESSION['contador']=0;}
++$_SESSION['contador'];
?>
<a href="contador.php">Contador</a><br>
Has recargado esta página <?php echo $_SESSION['contador'];?> veces
<?php echo 'Ahora el nombre es '.session_name().' y la sesión
'.$_REQUEST['misesion'].'<br>'; ?>
</BODY>
</HTML>

La condición if tiene en cuenta la posibilidad de que la variable


$contador no haya sido todavía inicializada. La función isset se encarga
de dar un valor cero cuando una variable no ha sido inicializada.

¿Qué son las sesiones?


Si existe una consulta repetida en las listas de PHP, es la relativa al
uso de las sesiones. El uso de sesiones es un método ampliamente
extendido en cualquier aplicación de cierta entidad. Básicamente una
sesión es la secuencia de páginas que un usuario visita en un sitio web.
Desde que entra en nuestro sitio, hasta que lo abandona.
El término sesión en PHP, session en inglés, se aplica a esta secuencia
de navegación, para ello crearemos un identificador único que asignamos a
cada una de estas sesiones de navegación. A este identificador de sesión
se le denomina, comúnmente, como la sesión.
El proceso en cualquier lenguaje de programación podría ser algo así:

Existe una sesión?


Si existe la retomamos

28
Área de Servicios – Dpto. de Informática Curso de PHP

Si no existe creamos una nueva


Generar un identificador único

Y para que no perdamos el hilo de la navegación del usuario deberemos


asociar esta sesión a todas las URLs y acciones de formulario. Podemos
también crear un cookie que incluya el identificador de sesión, pero es
conveniente recordar que la disponibilidad o no de las cookies depende
del usuario, y no es conveniente fiarse de lo que un usuario pueda o no
tener habilitado.
Lo contado hasta ahora es teoría pura y es aplicable a cualquier lenguaje
de programación C, Perl, etc. Los que programamos en PHP4 tenemos la
suerte de que toda la gestión de sesiones la hace el mismo PHP.
Por lo tanto lo comentado a partir de aquí es solo aplicable a PHP4. Si
aún desarrollas PHP3, tendrás que crear tus propias librerías de gestión
de sesiones o recurrir a alguna de las existentes, como la de PHPLIB .

Inicialización de la sesión
Para utilizar sesiones en PHP lo primero es inicializarlas. Podemos
hacerlo explícitamente, mediante la función session_start(), o al
registrar una variable en una sesión mediante
session_register('miVariable'). En ambos casos se crea una nueva sesión,
si no existe, o se retoma la sesión actual. Veamos un sencillo ejemplo:
<?php // Manual de PHP de WebEstilo.com

session_start();
echo "He inicializado la sesión";
?>

Esta es la forma más básica, si el usuario tiene los cookies activados,


PHP habrá insertado de forma automática la sesión y ésta será pasada de
una página a otra sin hacer nada más. Desde un punto de vista práctico la
sesión es operativa, pero no vemos nada. Podemos obtener la sesión en
cualquier momento mediante la función session_id(). Inserta en las
sucesivas páginas la siguiente línea para ver si la sesión está
disponible:
<?php // Manual de PHP de WebEstilo.com

session_start();
echo 'La sesión actual es: '.session_id();
?>

En este caso session_start() comprueba en los cookies que existe una


sesión y continua con ella, session_id() devuelve el identificador
actual.

Ejemplo práctico

Veamos otro ejemplo que, tal vez, te lo aclare un poco más:


<?php // Manual de PHP de WebEstilo.com

session_register('contador');
echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale:
'.++$_SESSION['contador']. '</a>';
?>

29
Área de Servicios – Dpto. de Informática Curso de PHP

Como dije anteriormente la sesión se crea o recoge mediante


session_start(), o también cuando se registra una variable de sesión
mediante session_register().
Si no has utilizado nunca las sesiones, el concepto de variable de
sesión, puede resultar un poco abstracto. Básicamente es una variable,
como cualquiera de las que gestiona PHP4, pero que reside en un espacio
específico en el servidor, junto con el identificador de sesión, y que
pertenece únicamente a un usuario.
En nuestro ejemplo anterior, registramos la variable $contador en la
primera línea del script. En la segunda línea, entre otras cosas, cada
vez que recarguemos la página o hagamos click sobre el enlace, el valor
de $contador se incrementará en 1.
En esta línea hacemos uso de la variable reservada $PHP_SELF, que hace
referencia al propio script en ejecución y una constante propia de PHP4,
$SID, que contiene el nombre de la sesión y el identificador de la misma.
Podemos averiguar también el nombre de la sesión, o modificarlo, mediante
la función session_name(). Veamos una prueba práctica:

<?php // Manual de PHP de WebEstilo.com


session_name('misesion');
session_register('contador');
echo '<a href="'.$PHP_SELF.'?'.SID.'">Contador vale:
'.++$_SESSION['contador'].'</a><br>';
echo 'Ahora el nombre es '.session_name().' y la sesión
'.$misesion.'<br>';
?>

La asignación del nombre de sesión debe realizarse antes que ninguna otra
función con sesiones, antes que session_start() o session_register().

Error común
Uno de los errores más comunes cuando se utilizan sesiones es dejar
líneas en blanco antes de la inicialización de PHP o enviar alguna salida
a la pantalla. Para probarlo crea una línea en blanco o con cualquier
cosa antes de <?php.
Si tienes los cookies activados, te encontrarás un error de este tipo:
Warning: Cannot send session cookie - headers already sent by (output
started at /home/session.php:2) in /home/session.php on line 4
PHP está informando de que no puede activar los cookies en el navegador
del usuario, porque las cabeceras ya han sido enviadas. Simplemente por
la existencia de una línea en blanco. Como medida práctica, no dejes
espacios ni antes del inicio del script, ni después de la finalización.
Te ahorrará muchos disgustos.

Si después de todo lo comentado aún no entiendes para que sirven las


sesiones, veamos un ejemplo práctico. Imagina que quisieras crear un
sistema de cesta de la compra...

Carrito de compra
Si después de todo lo comentado aún no entiendes para que sirven las
sesiones, veamos un ejemplo práctico. Imagina que quisieras crear un
sistema de cesta de la compra, en su forma básica podría ser algo así:
<?php // Manual de PHP de WebEstilo.com
session_start();
session_register('itemsEnCesta');
$item=$_POST['item'];

30
Área de Servicios – Dpto. de Informática Curso de PHP

$cantidad=$_POST['cantidad'];
$itemsEnCesta=$_SESSION['itemsEnCesta'];

if ($item){
if (!isset($itemsEnCesta)){
$itemsEnCesta[$item]=$cantidad;
}else{
foreach($itemsEnCesta as $k => $v){
if ($item==$k){
$itemsEnCesta[$k]+=$cantidad;
$encontrado=1;
}
}
if (!$encontrado) $itemsEnCesta[$item]=$cantidad;
}
}
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?>
<html>
<body>
<tt>
<form action="<?=$PHP_SELF."?".$SID?>" method="post">
Dime el producto <input type="text" name="item" size="20"><br>
Cuantas unidades <input type="text" name="cantidad" size="20"><br>
<input type="submit" value="Añadir a la cesta"><br>
</form>
<?
if (isset($itemsEnCesta)){
echo'El contenido de la cesta de la compra es:<br>';
foreach($itemsEnCesta as $k => $v){
echo 'Artículo: '.$k.' ud: '.$v.'<br>';
}
}
?>
</tt>
</body>
</html>

Una breve explicación. En la línea 4 comprobamos si el usuario ha pasado


algún artículo, desde el formulario. En la 5 si el array itemsEnCesta no
existe, lo creamos con el nuevo producto y la cantidad indicada. Si el
array existe recorremos su contenido, entre las líneas 8 y 13, y si
encontramos un artículo igual, añadimos la cantidad en la línea 10. Si no
lo encontramos, es un nuevo artículo, por lo tanto, añadimos el nuevo
producto con la correspondiente cantidad a itemsEnCesta en la línea 14.
Y a continuación imprimimos el formulario y los resultados, si los
hubiera, a partir de la línea 18, donde empieza el HTML.
¿Te imaginas las posibilidades de un sistema de almacenamiento de
información de estas características?. No necesitas ficheros, ni bases de
datos, ni tienes que andar pasando valores de una página a otra. PHP va
gestionando estos datos por nosotros, hasta el momento en que decidamos
almacenar la información donde más nos interese.
Estas son las funcionalidades básicas de las sesiones, espero que te haya
resultado ilustrativo y no olvides consultar el resto de funciones
asociadas al uso de sesiones en el manual de PHP.

31
Área de Servicios – Dpto. de Informática Curso de PHP

SEGURIDAD
PHP es un potente lenguaje e interprete, que puede estar instalado tanto
en el servidor web como un modulo o como un binario CGI. PHP permite
acceder a archivos, ejecutar comandos y abrir comunicaciones de red en el
servidor. Todas estas características hacen que lo que se ejecute en el
servidor web sea inseguro por defecto. PHP ha sido diseñado para ser un
lenguaje seguro, solo es necesaria una correcta selección de las opciones
de configuración para conseguir la exacta combinación de libertad y
seguridad que se necesita.
Ya que existen diferentes modos de utilizar PHP, existen multitud de
opciones de configuración que permiten controlar su funcionamiento. Una
gran selección de opciones garantiza que se pueda usar PHP para
diferentes usos, pero también significa que existen combinaciones de
estas opciones y configuraciones del servidor que producen instalaciones
inseguras. Este capitulo explica las diferentes combinaciones de opciones
de configuración y las situaciones donde pueden ser usadas de manera
segura.

Binarios CGI -Posibles ataques


Esta configuración implica generalmente el instalar el binario ejecutable
de PHP en el directorio cgi-bin del servidor web. Aunque el binario PHP
puede ser usado como interprete independiente, PHP esta diseñado para
prevenir los ataques que esta configuración hace posible.
Por ejemplo, si accedemos al sistema de ficheros mediante la línea:
http://my.host/cgi-bin/php?/etc/passwd
En http, todo lo que se pase detrás del símbolo ? es la línea de
argumentos que el interfaz CGI interpreta. En un sistema Linux, con la
instrucción /etc/passwd, el sistema intenta ejecutar este comando y esto
puede ser un fallo en la seguridad.
Otro posible ataque, es que se intenta acceder a los ficheros del
servidor web a los que no se debe tener acceso. Para evitar esto, existen
opciones de configuración que redirigen todas las peticiones al
intérprete de PHP forzando un chequeo de acceso al fichero que se pide.

Algunas de estas opciones de seguridad son:

1. Si se activa la opción disable-force-cgi-redirect se obliga a que


tanto las peticiones del tipo http://my.host.cgi-
bin/php/dir/script.php3 como las peticiones del tipo
http://my.host/dir/script.php3 sean analizadas por el intérprete
PHP.

2. Otras opciones posibles en la configuración es combinar la


direcctiva Action y AddHandler mediante estas opciones se configura
la redirección de las llamadas para que sean interpretadas.

3. La tercera opción es utilizar las directivas doc_root y user_dir.


Estas directivas se utilizan en servidores Web que no disponen de
la facilidad del redireccionamiento. Supongamos que un script no se
ejecuta correctamente, en este caso, el código se muestra en
pantalla y esto puede violar la propiedad intelectual de ese
script. Para solucionar esto, se colocan todos los scripts PHP
ejecutables en un directorio, que indica la directiva doc_root

32
Área de Servicios – Dpto. de Informática Curso de PHP

asegurando así que todo lo que esté en ese directorio será


ejecutado y nunca mostrado al usuario.
Si esta directiva se combina con user_dir se permitirá ejecutar,
ante llamadas del tipo: http://my.host/~user/doc.php3 ficheros que
estén en el directorio que indica user_dir bajo el directorio
/home/user/.
4. Otra práctica muy segura es mantener la instalación del intérprete
fuera del arbol web. Si esto es así, se deberán hacer los ficheros
php ejecutables, modificando los atributos del fichero y además se
deberá incluir en la primera línea del script la dirección del
intérprete, por ejemplo: #!/usr/local/bin/php.

Problema de la autentificación de un Usuario con PHP


Atención: El acceso restringido a páginas usando las variables globales
$PHP_AUTH_USER, $PHP_AUTH_PW y $PHP_AUTH_TYPE solo funciona si PHP ha
sido instalado como un módulo de Apache. Para resolver este problema, se
utiliza la función Header(). Esta función envía una línea a la cabecera
HTML que se está generando. Y con esta función es posible enviar un
mensaje de "Autentificación Requerida " que forzará al usuario a
completar los datos solicitados.
El funcionamiento es muy sencillo. Una vez que el usuario ha completado
los datos que se le piden, se fuerza una nueva llamada al script con las
variables PHP_AUTH_USER, $PHP_AUTH_PW y $PHP_AUTH_TYPE que contendrán el
nombre del usuario, el pasword y el tipo de autentificación.

Ejemplo 1:
1. $PHP_AUTH_USER. Nombre de usuario introducido.

2. $PHP_AUTH_PW. Contraseña introducida.

Para que el navegador nos muestre la ventana de petición de nombre de


usuario y contraseña basta con enviar la siguiente cabecera:
<?php
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Autorización Requerida.';
exit;
}
else {
echo "Ha introducido el nombre de usuario: $PHP_AUTH_USER<br>";
echo "Ha introducido la contraseña: $PHP_AUTH_PW<br>";
}
?>

Ejemplo 2:
<?php
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm=\$quot;mi Realm\"");
Header("HTTP/1.0 401 Unauthorized")
echo "Texto para enviar si se utiliza el botón de Cancelar");
exit;
}

33
Área de Servicios – Dpto. de Informática Curso de PHP

else
{
echo " Hola $PHP_AUTH_USER <p>";
echo " Tu contraseña es $PHP_AUTH_PW <p>";
}
?>

Hay que tener mucho cuidado con el orden en el que se envían los
diferentes tipos de cabeceras. Esta cabecera de autentificación, debe ir
siempre delante de la del tipo HTTP/1.0 401.

Ejemplo 3:
<?php
function autentificacion()
{
Header( "WWW-authenticate: basic realm='Sistema de
autentificación'");
Header( "HTTP/1.0 401 Unauthorized");
echo "debe ingresar un usuario y una contraseña válida para
acceder a esta página\n";
exit;
}
if(!isset($PHP_AUTH_USER) || ($SeenBefore == 1 && !strcmp($OldAuth,
$PHP_AUTH_USER)) )
{
autentificacion();
}
Else
{
echo "Welcome: $PHP_AUTH_USER";
echo "Old: $OldAuth";
echo "<FORM ACTION=\"$PHP_SELF\" METHOD=POST>\n";
echo "<INPUT TYPE=HIDDEN NAME=\"SeenBefore\" VALUE=\"1\">\n";
echo "<INPUT TYPE=HIDDEN NAME=\"OldAuth\"
VALUE=\"$PHP_AUTH_USER\">\n";
echo "<INPUT TYPE=Submit VALUE=\"Re Authenticate\">\n";
echo "</FORM>\n";
}
?>

Ejemplo 4: Distinción de usuarios


Debemos crear previamente un archivo separado con los nombres de usuario
y las contraseñas válidas. Dicho archivo podría tener el siguiente
formato: nombre_de_usuario|contraseña. Por ejemplo: passwords.txt

Juan|1235
Pedro|qwer
Nestor|Gty45e
Carla|rwe4v

En este ejemplo se pide la autorización al comienzo de la página si no se


ha establecido con anterioridad y se comprueba con el fichero de
contraseñas que hemos llamado passwords.txt, si el nombre de usuario y
contraseña coincide con alguna entrada del fichero se nos permite ver el
resto de la página.

<?php

34
Área de Servicios – Dpto. de Informática Curso de PHP

if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Autorización Requerida.';
exit;
}

$fich = file("passwords.txt");
$i=0; $validado=false;
while ($fich[$i] && !$validado) {
$campo = explode("|",$fich[$i]);
if (($PHP_AUTH_USER==$campo[0]) && ($PHP_AUTH_PW==chop($campo[1])))
$validado=true;
$i++;
}

if (!$validado) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Autorización Requerida.';
exit;
}
?>
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
Ha conseguido el acceso a la <B>zona restringida</B> con el usuario <?php
echo $PHP_AUTH_USER?>.
</body>
</html>

COOKIES
La principal utilidad de las cookies (galletas) es la de solventar el
problema de la falta de estado en la navegación a través de las paginas
web.
Con las cookies, pequeñas porciones de información se quedan registradas
en el navegador permitiendo identificar a este a través de diferentes
páginas de un mismo sitio e incluso durante visitas entre distintos días.
Realmente las cookies no son mas que cadenas de texto que son enviadas
desde el servidor al cliente (navegador) y almacenadas en este, luego el
navegador envía estas cookies al servidor permitiendo así la
identificación del cliente en el servidor.

Funcionamiento
La cookie es enviada al navegador desde el servidor y si este la acepta
permanece en él.

Las páginas piden la cookie al navegador.

35
Área de Servicios – Dpto. de Informática Curso de PHP

El navegador las envía, permitiendo la identificación del usuario por


parte del servidor.

A continuación vamos a ver como usar las cookies para nuestro beneficio.

Cómo usarlas
El manejo de cookies en PHP se realiza mediante el uso de la función
setcookie, esta función esta disponible a partir de la versión 3 de PHP.
int setcookie (string Nombre [, string Valor [, int Expire [, string Path
[, string Dominio [, int Secure]]]]])
Setcookie() define una cookie que es enviada junto con el resto de la
información de la cabecera(header). Las cookies deben ser enviadas antes
de cualquier tag de html, por lo tanto deberemos realizar la llamada a
estas funciones antes de cualquier tag <HTML> o <HEAD>. Esta es una
restricción de las cookies no de PHP.
Todos los argumentos excepto el nombre son opcionales.
• Nombre. Nombre de la cookie. Si creamos una cookie solamente con
el nombre, en el cliente se eliminara la cookie que exista con ese
nombre. También podemos reemplazar cualquier argumento con una
cadena vacía ("").
• Value. Valor que almacenará la cookie en el cliente.
• Expire. El argumento expire es un argumento entero que indica la hora en que
se eliminara la cookie en el formato de hora que devuelven las funciones UNIX
time() y mktime(). Normalmente se usa time() + N. segundos de duración,
para especificar la duración de una cookie.
• Path. Subdirectorio en donde tiene valor la cookie.
• Dominio. Dominio en donde tiene valor la cookie. Si ponemos como dominio
www.domain.com la cookie no se transmite para domain.com, mientras que si
ponemos domain.com la cookie se transmite tanto para domain.com como para
www.domain.com
• Secure. El argumento secure indica que la cookie solo se transmitirá a través de
una conexión segura HTTPS.
Ejemplo
setcookie("usuario", "Luis", time()+3600,"/","webestilo.com");
En este ejemplo establecemos una cookie de nombre usuario que contiene el
valor Luis, que dura 1 hora (3600 segundos) válida para todo el dominio
webestilo.com

Ejemplo de uso de cookies


En este ejemplo vamos a ver como establecer una cookie y cómo se recupera
el valor establecido. Para ello pediremos al usuario que introduzca su
nombre, que guardaremos en una cookie.

36
Área de Servicios – Dpto. de Informática Curso de PHP

Primero pedimos al usuario que introduzca el valor de su nombre, usamos


un formulario que procesará la página procesar_cookie.phtml.

<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de cookie</H1>
Introduzca su nombre:
<FORM ACTION="procesar_cookie.phtml" METHOD="GET">
<INPUT TYPE="text" NAME="nombre"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>

Se establece la cookie ejemusuario con el valor introducido


anteriormente, y cuya duración es una hora.
setcookie("ejemusuario", $_GET['nombre'], time()+3600,"/","");
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de cookie</H1>

Se ha establecido una cookie de nombre <b>ejemusuario</b> con el valor:


<b><? print $_GET['nombre']; ?></b> que será válida durante 1 hora.
</body>
</html>

37
Área de Servicios – Dpto. de Informática Curso de PHP

INTRODUCCIÓN _________________________________________________________________ 1
ALGUNAS VENTAJAS DE PHP ______________________________________________________ 2
FUNCIONAMIENTO DE PHP _______________________________________________________ 2
SINTAXIS BÁSICA ________________________________________________________________ 3
Delimitadores de script ____________________________________________________________ 3
Separación de instrucciones _______________________________________________________ 3
Comentarios _______________________________________________________________________ 3
Primer ejemplo ____________________________________________________________________________ 3
TIPOS DE DATOS SOPORTADOS POR PHP _____________________________________________ 3
Array ______________________________________________________________________________ 4
Arrays Multidimensionales _________________________________________________________ 5
OPERADORES EN PHP ___________________________________________________________ 5
Operadores aritméticos ____________________________________________________________ 5
Operadores de asignación__________________________________________________________ 6
Operadores lógicos ________________________________________________________________ 6
Operadores condicionales__________________________________________________________ 6
ESTRUCTURAS DE CONTROL EN PHP _______________________________________________ 6
IF...ELSE___________________________________________________________________________ 6
IF...ELSEIF...ELSE __________________________________________________________________ 7
SWITCH...CASE...DEFAULT _________________________________________________________ 7
WHILE_____________________________________________________________________________ 8
DO...WHILE________________________________________________________________________ 8
FOR _______________________________________________________________________________ 9
FUNCIONES ____________________________________________________________________ 9
Parámetros _______________________________________________________________________ 10
Parámetros por defecto ____________________________________________________________________ 10
Parámetros por referencia __________________________________________________________________ 10
Variables en funciones ____________________________________________________________ 11
Variables locales __________________________________________________________________________ 11
Variables estáticas ________________________________________________________________________ 11
Acceso a variables globales _________________________________________________________________ 11
Retorno de un valor _______________________________________________________________________ 12
Evaluación de variables con eval _____________________________________________________________ 12
Variables variables ________________________________________________________________________ 13
Die, exit _________________________________________________________________________________ 13
Librerias__________________________________________________________________________ 13
Usando fecha y hora en PHP ________________________________________________________________ 15
FORMULARIOS _________________________________________________________________ 16
Envío y recepción de datos ________________________________________________________ 16
Método GET y POST _______________________________________________________________ 17

38
Área de Servicios – Dpto. de Informática Curso de PHP

Envio de e-mails __________________________________________________________________ 18


BASE DE DATOS ________________________________________________________________ 19

Creación de la base de datos ______________________________________________________ 19


Conexión a la base de datos_______________________________________________________ 20
Consultas a la base de datos ______________________________________________________ 21
Operaciones de base de datos_____________________________________________________ 22
Insertar registros _________________________________________________________________________ 22
Eliminar registros _________________________________________________________________________ 23
Restringir el acceso ________________________________________________________________________ 24
Distinción de usuarios______________________________________________________________________ 25
SESIONES _____________________________________________________________________ 26
Introducción______________________________________________________________________ 26
Ejemplo1 ________________________________________________________________________________ 27
Ejemplo 2: _______________________________________________________________________________ 28
¿Qué son las sesiones?____________________________________________________________ 28
Inicialización de la sesión _________________________________________________________ 29
Ejemplo práctico___________________________________________________________________________ 29
Error común ______________________________________________________________________ 30
Carrito de compra ________________________________________________________________ 30
SEGURIDAD ___________________________________________________________________ 32
Binarios CGI -Posibles ataques____________________________________________________ 32
Problema de la autentificación de un Usuario con PHP_____________________________ 33
Ejemplo 1: _______________________________________________________________________________ 33
Ejemplo 2: _______________________________________________________________________________ 33
Ejemplo 3: _______________________________________________________________________________ 34
Ejemplo 4: Distinción de usuarios_____________________________________________________________ 34
COOKIES ______________________________________________________________________ 35
Funcionamiento __________________________________________________________________ 35
Cómo usarlas _____________________________________________________________________ 36
Ejemplo _________________________________________________________________________________ 36
Ejemplo de uso de cookies __________________________________________________________________ 36

39

You might also like