Vous êtes sur la page 1sur 70

Desarrollo de

aplicaciones PHP para


bases de datos
Almera 2007

Lenguajes de Desarrollo.
PHP
Antonio Becerra Tern
abecerra@ual.es
Departamento de Lenguajes y Computacin
Universidad de Almera

Desarrollo de
aplicaciones PHP
para bases de
datos
Almera 2007

Lenguajes de Desarrollo.
PHP
Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticacin y sesiones
13. Cookies en PHP
14. Gestin de envo de archivos en PHP

Desarrollo de
aplicaciones PHP
para bases de datos
Almera 2007

Lenguajes de Desarrollo.
PHP
Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticacin y sesiones
13. Cookies en PHP
14. Gestin de envo de archivos en PHP

10. Paso de variables entre


scripts PHP
Paso de variables por URL

En un sitio Web, las pginas y los scripts utilizados son


muy
numerosos. Muy a menudo, vamos a necesitar que
nuestros
distintos scripts estn conectados unos con otros, y,
<asobretodo,
href="destino.php?variable1=valor1&variable2=valor2
que se sirvan y se pasen variables
Micomunes.
enlace</a>
Estas variables no tienen el smbolo $ delante
Una vez realizado el paso, nuestras variables pertenecen
al entorno de la pgina destino.php
Activada/desactivada la opcin de configuracin
register_globals del archivo php.ini

10. Paso de variables entre


scripts PHP
Paso de variables por URL

phporiegenurl.php
<HTML>
<HEAD>
<TITLE>phporigenurl.php</TITLE>
</HEAD>
<BODY>
<?PHP
$username = "abecerra";
?>
<a href="destino.php?saludo=hola&texto=
Esto es una variable texto&username=
<?php echo $username;?>">
Paso variables saludo y texto a la pgina
destino.php</a>
</BODY>
</HTML>

10. Paso de variables entre


scripts PHP
Paso de variables por URL

destino.php
<HTML>
<HEAD>
<TITLE>destino.php</TITLE>
</HEAD>
<BODY>
<?
echo "Variable \$saludo: $saludo <br>\n";
echo "Variable \$texto: $texto <br>\n";
echo "Variable \$username: $username
<br>\n";
?>
register_globals On en php.in
</BODY>
</HTML>

URL

10. Paso de variables entre


scripts PHP
Paso de variables con $_GET
destinoget.php

<HTML>
register_globals
<HEAD>
<TITLE>destinoget.php</TITLE>
</HEAD>
<BODY>
<?
// Captura de las variables pasadas por la

Off en php.in

phporiegenurl.php
...
$saludo = $_GET['saludo'];
<a href="destinoget.php?
$texto = $_GET['texto'];
saludo=hola&texto=
$username = $_GET['username'];
Esto es una variable
echo "Variable \$saludo: $saludo <br>\n";texto&username=
<?php echo $username;?>">
echo "Variable \$texto: $texto <br>\n";
echo "Variable \$username: $username ...

<br>\n";
?>
</BODY>
</HTML>

10. Paso de variables entre


scripts PHP
Paso de variables con $_GET
destinoget.php

<HTML>
register_globals
<HEAD>
<TITLE>destinoget.php</TITLE>
</HEAD>
<BODY>
<?
// Captura de las variables pasadas por la
URL

$saludo = $_GET['saludo'];
$texto = $_GET['texto'];
$username = $_GET['username'];

echo "Variable \$saludo: $saludo <br>\n";


echo "Variable \$texto: $texto <br>\n";
echo "Variable \$username: $username
<br>\n";
?>
</BODY>
</HTML>

Off en php.in

Desarrollo de
aplicaciones PHP
para bases de datos
Almera 2007

Lenguajes de Desarrollo.
PHP
Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticacin y sesiones
13. Cookies en PHP
14. Gestin de envo de archivos en PHP

11. Formularios en PHP


Procesar variables de formularios en PHP

Presentar una primera pgina con el formulario clsico a rellenar


Las variables del formularios son recogidas en una segunda pgin
que las procesa

<FORM action="lo_que_sea.php" method="POST/GET">


script PHP que procesa la
informacin del formulario

POST: usuario enva datos


GET: usuario recoge datos

register_globals Off en php.ini

11. Formularios en PHP


Procesar variables de formularios en PHP
phpformu1.php
<HTML>
<HEAD>
<TITLE>phpformu1.php</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST"
ACTION="phpdestino.php">
Nombre<br>
<INPUT TYPE="TEXT"
NAME="nombre"><br>
Apellidos<br>
<INPUT TYPE="TEXT"
NAME="apellidos"><br>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP
phpformu1.php
<HTML>
<HEAD>
<TITLE>phpformu1.php</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST"
ACTION="phpdestino.php">
Nombre<br>
<INPUT TYPE="TEXT"
NAME="nombre"><br>
Apellidos<br>
<INPUT TYPE="TEXT"
NAME="apellidos"><br>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP
phpformu1.php
<HTML>
<HEAD>
<TITLE>phpformu1.php</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST"
ACTION="phpdestino.php">
Nombre<br>
<INPUT TYPE="TEXT"
NAME="nombre"><br>
Apellidos<br>
<INPUT TYPE="TEXT"
NAME="apellidos"><br>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP
phpformu1.php
<HTML>
<HEAD>
<TITLE>phpformu1.php</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST"
ACTION="phpdestino.php">
Nombre<br>
<INPUT TYPE="TEXT"
NAME="nombre"><br>
Apellidos<br>
<INPUT TYPE="TEXT"
NAME="apellidos"><br>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP

phpformu1.php
phpdestino.php
<HTML>
<HTML>
<HEAD>
<HEAD>
<TITLE>phpformu1.php</TITLE>
<TITLE>phpdestino.php</TITLE>
</HEAD>
</HEAD>
<BODY>
<BODY>
<FORM METHOD="POST"
<?PHP
ACTION="phpdestino.php"> $nombre = $_POST['nombre'];
Nombre<br>
$apellidos = $_POST['apellidos'];
<INPUT TYPE="TEXT"
echo "Variable \$nombre: $nombre <br>\
NAME="nombre"><br>
echo "Variable \$apellidos: $apellidos <b
Apellidos<br>
?>
<INPUT TYPE="TEXT"
</BODY>
NAME="apellidos"><br>
</HTML>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP

phpformu1.php
phpdestino.php
<HTML>
<HTML>
<HEAD>
<HEAD>
<TITLE>phpformu1.php</TITLE>
<TITLE>phpdestino.php</TITLE>
</HEAD>
</HEAD>
<BODY>
<BODY>
<FORM METHOD="POST"
<?PHP
ACTION="phpdestino.php"> $nombre = $_POST['nombre'];
Nombre<br>
$apellidos = $_POST['apellidos'];
<INPUT TYPE="TEXT"
echo "Variable \$nombre: $nombre <br>\
NAME="nombre"><br>
echo "Variable \$apellidos: $apellidos <b
Apellidos<br>
?>
<INPUT TYPE="TEXT"
</BODY>
NAME="apellidos"><br>
</HTML>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP

phpformu1.php
phpdestino.php
<HTML>
<HTML>
<HEAD>
<HEAD>
<TITLE>phpformu1.php</TITLE>
<TITLE>phpdestino.php</TITLE>
</HEAD>
</HEAD>
<BODY>
<BODY>
<FORM METHOD="POST"
<?PHP
ACTION="phpdestino.php"> $nombre = $_POST['nombre'];
Nombre<br>
$apellidos = $_POST['apellidos'];
<INPUT TYPE="TEXT"
echo "Variable \$nombre: $nombre <br>\
NAME="nombre"><br>
echo "Variable \$apellidos: $apellidos <b
Apellidos<br>
?>
<INPUT TYPE="TEXT"
</BODY>
NAME="apellidos"><br>
</HTML>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP

phpformu1.php
phpdestino.php
<HTML>
<HTML>
<HEAD>
<HEAD>
<TITLE>phpformu1.php</TITLE>
<TITLE>phpdestino.php</TITLE>
</HEAD>
</HEAD>
<BODY>
<BODY>
<FORM METHOD="POST"
<?PHP
ACTION="phpdestino.php"> $nombre = $_POST['nombre'];
Nombre<br>
$apellidos = $_POST['apellidos'];
<INPUT TYPE="TEXT"
echo "Variable \$nombre: $nombre <br>\
NAME="nombre"><br>
echo "Variable \$apellidos: $apellidos <b
Apellidos<br>
?>
<INPUT TYPE="TEXT"
</BODY>
NAME="apellidos"><br>
</HTML>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP

phpformu1.php
phpdestino.php
<HTML>
<HTML>
<HEAD>
<HEAD>
<TITLE>phpformu1.php</TITLE>
<TITLE>phpdestino.php</TITLE>
</HEAD>
</HEAD>
<BODY>
<BODY>
<FORM METHOD="POST"
<?PHP
ACTION="phpdestino.php"> $nombre = $_POST['nombre'];
Nombre<br>
$apellidos = $_POST['apellidos'];
<INPUT TYPE="TEXT"
echo "Variable \$nombre: $nombre <br>\
NAME="nombre"><br>
echo "Variable \$apellidos: $apellidos <b
Apellidos<br>
?>
<INPUT TYPE="TEXT"
</BODY>
NAME="apellidos"><br>
</HTML>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP
phpformu1.php
<HTML>
<HEAD>
<TITLE>phpformu1.php</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST"
ACTION="phpdestino.php">
Nombre<br>
<INPUT TYPE="TEXT"
NAME="nombre"><br>
Apellidos<br>
<INPUT TYPE="TEXT"
NAME="apellidos"><br>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

11. Formularios en PHP


Procesar variables de formularios en PHP
phpdestino.php
<HTML>
<HEAD>
<TITLE>phpdestino.php</TITLE>
</HEAD>
<BODY>
<?PHP
$nombre = $_POST['nombre'];
$apellidos = $_POST['apellidos'];
echo "Variable \$nombre: $nombre <br>\n";
echo "Variable \$apellidos: $apellidos <br>\n"
?>
</BODY>
</HTML>

11. Formularios en PHP


Restriccin de acceso por edad

edad2.php
edad.php
<html>
<html>
<head>
<head>
<title>Restringir por edad</tit
<title>Restringir por edad</title>
</head>
</head>
<body>
<body>
<?
<form action="edad2.php" method="post">
$edad = $_POST["edad"];
Escribe tu edad:
<input type="text" name="edad" size = echo "Tu edad: $edad<p>";
if ($edad < 18) {
"2">
<input type="submit" value="Entrar"> echo "No puedes entrar";
}else{
</form>
echo "Bienvenido";
</body>
}
</html>
?>
</body>
</html>

11. Formularios en PHP


Restriccin de acceso por edad

11. Formularios en PHP


Restriccin de acceso por edad

11. Formularios en PHP


Formulario habitual

<blockquote>
phpformunormal.php
<p>Hombre<input type="radio"
<HTML>
value="hombre" checked
<BODY>
name="sexo"></p>
<FORM METHOD="post" ACTION="mis_datos.php">
<p>Mujer
<input type="hidden" name="edad" value="55">
<input type="radio" name="sexo"
<p>Tu nombre
value="mujer"></p>
<input type="text" name="nombre" size="30"
</blockquote>
value="antonio becerra"></p>
<p>Aficiones</p>
<p>Tu sistema favorito
<p>
<select size="1" name="sistema">
<textarea rows="5" name="aficio
<option selected value="Linux">Linux</option>
cols="28"></textarea></p>
<option value="Unix">Unix</option>
<p><input type="submit"
<option value="Macintosh">Macintosh</option>
value="Enviar datos"
<option value="Windows">Windows</option>
name="enviar">
</select></p>
<input type="reset"
<p>Te gusta el futbol ?
value="Restablecer"
<input type="checkbox" name="futbol"
name="B2"></p>
value="ON"></p>
</FORM>
<p>Cual es tu sexo?</p>

11. Formularios en PHP


Formulario habitual

11. Formularios en PHP


Formulario habitual
mis_datos.php
else {
<?PHP
echo "NO te gusta el futbol <BR>\n";
$enviar = $_POST['enviar'];
}
$nombre = $_POST['nombre'];
if ($aficiones != "") {
$sexo = $_POST['sexo'];
echo "Tus aficiones son: <BR>\n";
$edad = $_POST['edad'];
echo nl2br($aficiones);
$sistema = $_POST['sistema'];
} else {
$futbol = $_POST['futbol'];
echo "NO tienes aficiones <BR>\n";
$aficiones = $_POST['aficiones'];
}
if ($enviar) {
}
echo "Hola <b>" . $nombre .
echo "<br>";
"</b> que tal ests<BR>\n";
echo
echo "Eres " . $sexo . "<BR>\n";
<a
echo "Tienes " . $edad . "<BR>\n";
href=phpformunormal.php>VOLVER
echo "Tu sistema favorito es " . $sistema
.
AL FORMULARIO</a>"
"<BR>\n";
?>
if ($futbol) {
echo "Te gusta el futbol <BR>\n";
}

11. Formularios en PHP


Formulario habitual

11. Formularios en PHP


Formulario ms complejo
phpformucomplex.php
<?php
if (isset($_POST['Accion']))
{
print '<pre>';
print_r($_POST);
echo
"<a href=
$_SERVER[PHP_SELF] >
Por favor, intentlo de
nuevo</a>";
print '</pre>';
}
else
{
?>
<form
action="<?php echo
$_SERVER['PHP_SELF']; ?>"
method="POST">

Email: <input type="text"


name="personal[email]"><br>
Cerveza: <br>
<select multiple name="beer[ ]">
<option
value="warthog">Warthog</option>
<option
value="guinness">Guinness</option
>
<option
value="stuttgarter">Stuttgarter
Schwabenbru</option>
</select><br>
<input type="hidden" name="Accion"
value="enviado">
<input type="submit"
name="Enviar" value="Envame!">
</form>
<?PHP

11. Formularios en PHP


Formulario ms complejo

11. Formularios en PHP


Ejercicio de Formulario

Desarrollo de
aplicaciones PHP
para bases de datos
Almera 2007

Lenguajes de Desarrollo.
PHP
Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticacin y sesiones
13. Cookies en PHP
14. Gestin de envo de archivos en PHP

12. Scripts de autenticacin


y sesiones en PHP
Scripts de autenticacin
Autenticacin basada en contraseas
phpinicio_sesion.php
<TR>
<HTML>
<TD>
<HEAD>
<DIV align="right">Contrasea</DIV>
<TITLE>Inicio de sesin</TITLE>
</TD>
</HEAD>
<TD>
<BODY bgcolor="Aqua">
<INPUT type="pasword" name="password"
<FORM name="form1" method="POST"
maxlength="15">
action="phpautenticacion.php">
</TD>
<TABLE width="400">
</TR>
<TR>
<TR>
<td colspan="2">
<TD colspan="2">
<div align="center"><B>Introduzca un nombre de<CENTER>
usuario
y una contrasea</B></DIV>
<INPUT type="submit" name="submit"
</TD>
value="Enviar">
</TR>
</CENTER>
<TR>
</TD>
<TD>
</TR>
<DIV align="right">Nombre de usuario:</DIV>
</TABLE>
</TD>
</FORM>
<TD>
</BODY>
<INPUT type="text" name="username">
<HTML>
</TD>
</TR>

12. Scripts de autenticacin


y sesiones en PHP
Scripts de autenticacin

12. Scripts de autenticacin


y sesiones en PHP
Scripts de autenticacin

if (!(strcmp($password,"antonio")))
phpautenticacion.php
{
<HTML>
echo "Bienvenido a su pgina de
<HEAD>
inicio " . "<b>" .
<TITLE>Pgina de autenticacin</TITLE>
$username . "</b><br>";
</HEAD>
}
<BODY bgcolor="Gray">
else
<?PHP
{
$username = $_POST['username'];
die("No ha introducido la contrasea
$password = $_POST['password'];
correcta");
if (empty($password))
}
{
?>
die("No se ha introducido la contrasea");
</BODY>
}
</HTML>
if (strlen($password) < 5)
{
die("La contrasea introducida es demasiado corta");
}

12. Scripts de autenticacin


y sesiones en PHP
Scripts de autenticacin

12. Scripts de autenticacin


y sesiones en PHP
Autenticacin HTTP

lo disponible cuando PHP se ejecuta como mdulo de Apac


Funcin header()
Autenticacin controlada por variables predefinidas PHP

$_SERVER[PHP_AUTH_USER]
$_SERVER[PHP_AUTH_PW]
$_SERVER[AUTH_TYPE]

12. Scripts de autenticacin


y sesiones en PHP
Autenticacin HTTP
php-autenticacion.php
<?php
if (!isset($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate: Basic realm="Acceso a Zona Restringida"');
header('HTTP/1.0 401 Unauthorized');
echo '<h1>Autorizacin Requerida</h1>';
exit;
}
else
{
echo "<p>Hola " . $_SERVER['PHP_AUTH_USER'] . ".</p>";
echo "<p>Has introducido " . $_SERVER['PHP_AUTH_PW'] . " como
contrasea.</p>";
}
?>

12. Scripts de autenticacin


y sesiones en PHP
Autenticacin HTTP

12. Scripts de autenticacin


y sesiones en PHP
Autenticacin HTTP
php-autenticacion-abecerra.php
<?php
if (($_SERVER['PHP_AUTH_USER']!="abecerra") ||
($_SERVER['PHP_AUTH_PW']!="123"))
{
header('WWW-Authenticate: Basic realm="Acceso
restringido"');
header('HTTP/1.0 401 Unauthorized');
echo '<H2>Authorization Required.</H2>';
exit;
</head>
}
<body>
?>
Ha conseguido el acceso a la <B>zona
<html>
restringida</B> de
<head>
<? echo
<title>Ejemplo de Autenticacin HTTP
$_SERVER['PHP_AUTH_USER'];?>
con PHP</title>
</body>
</html>

12. Scripts de autenticacin


y sesiones en PHP
Autenticacin HTTP

12. Scripts de autenticacin


y sesiones en PHP
Control y manejo de sesiones
Hemos utilizado variables que slo existan en el script
ejecutado. Cul es el problema?
Cargamos otra pgina distinta y los valores de estas variables
se pierden a menos que pasemos estos valores por la URL,
o en un formulario para su posterior explotacin

Sesin = intervalo de tiempo empleado por un usuario


en recorrer nuestras pginas, hasta que:
abandona nuestro sitio,
deja de actuar sobre l durante un tiempo prolongado,
cierra el navegador
PHP nos permite almacenar variables de sesin que, una
vez definidas, podrn ser utilizadas durante la actividad
del usuario por cualquiera de los scripts de nuestro sitio Web

12. Scripts de autenticacin


y sesiones en PHP
Funciones para control de sesiones
Inicio y registro de la
sesin

register_globals On/Off en php.ini


bool session_start ( void )

bool session_register ( mixed nombre [, mixed ...])


register_globals On en php.ini

$_SESSION[nombrevarsesion ] = valo
register_globals Off en php.ini

Idetificacin de
sesin

register_globals On/Off en php.ini


string session_id ( [string id])

12. Scripts de autenticacin


y sesiones en PHP
Funciones para control de sesiones
Asignacin de nombre a la
sesin
string session_name ( [string nombre])
register_globals On/Off en php.ini

<?php
// Cambiar el nombre de la sesin a WebsiteID
$nombre_anterior = session_name("WebsiteID");
echo "El anterior nombre de la sesin era $nombre_anterior<p
echo "Mientras que el nuevo es " . session_name();
?>

12. Scripts de autenticacin


y sesiones en PHP
Funciones para control de sesiones
Comprobacin de registro de
sesin

bool session_is_registered ( string nombre )


register_globals On en php.ini

if (isset($_SESSION[nombrevarsesion ])
register_globals Off en php.ini

Borrado de la
sesin

register_globals On/Off en php.ini


bool session_destroy ( void )

12. Scripts de autenticacin


y sesiones en PHP
Funciones para control de sesiones
Eliminar variables de
sesin

register_globals On en php.ini void session_unset ( void )

unset($_SESSION[nombresvarsesion ]
register_globals Off en php.ini

12. Scripts de autenticacin


y sesiones en PHP
Ejemplos de control de sesiones

12. Scripts de autenticacin


y sesiones en PHP
Ejemplos de control de sesiones
phpunset.php
<?php
session_name("abecerra");
session_start();
unset($_SESSION['abecerra']);
echo "Acabo de eliminar la variable
de sesin <b>" . session_name() ."</b>";
?>

12. Scripts de autenticacin


y sesiones en PHP
Ejemplo de control de autenticacin
No inicio de sesin

phplogin.php
Proceso de
autenticacin

miinicio.php

phpsesion.php
Definir el entorno
de sesin

Pgina de
inicio de usuario

No inicio de sesin
logout.php
Destruir el entorno
de la sesin

mipagina2.php
Segunda pgina de
inicio de usuario

Presentar ejemplo por pantalla

12. Scripts de autenticacin


y sesiones en PHP
Ejemplo de control de autenticacin
phplogin.php
<TR>
<HTML>
<TD>
<HEAD>
<DIV align="right">Contrasea</DIV>
<TITLE>Inicio de sesin</TITLE>
</TD>
</HEAD>
<TD>
<BODY bgcolor="Aqua">
<INPUT type="password" name="password"
<FORM name="form1" method="POST" maxlength="15">
action="phpsesion.php">
</TD>
<TABLE width="400">
</TR>
<TR>
<TR>
<td colspan="2">
<TD colspan="2">
<div align="center"><B>
<CENTER>
Introduzca un nombre de usuario
<INPUT type="submit" name="submit"
y una contrasea</B></DIV>
value="Enviar">
</TD>
</CENTER>
</TR>
</TD>
<TR>
</TR>
<TD>
</TABLE>
<DIV align="right">Nombre de usuario:</DIV>
</FORM>
</TD>
</BODY>
<TD>
<HTML>
<INPUT type="text" name="username">
</TD>
</TR>

12. Scripts de autenticacin


y sesiones en PHP
Ejemplo de control de autenticacin
phpsesion.php
<a href=phplogin.php>Vuelva a
<?PHP
intentarlo");
// Obteniendo las variables externas }
// del inicio de sesion
// Enviando a la pgina de inicio del
$username = $_POST['username'];
usuario
$password = $_POST['password'];
$url = "Location:miinicio.php";
// Definicin del entorno de sesion
header($url);
session_start();
?>
$_SESSION['username']=$username;
// Autenticando la contrasea
if (empty($password))
{
unset($_SESSION['username']);
die("No se ha introducido la contrasea.
<a href=phplogin.php>Vuelva a intentarlo");
}
if (strlen($password) < 5)
{
unset($_SESSION['username']);
die("La contrasea introducida es demasiado corta.

12. Scripts de autenticacin


y sesiones en PHP
Ejemplo de control de autenticacin
miinicio.php
<DIV align="center"><B>Bienvenido a la
<?PHP
pgina de
// Iniciar la sesin
inicio de <?PHP echo
session_start();
$_SESSION['username'];?><B></DIV>
// Obtener el entorno de la sesin y comprobar
...
// que est definido.
<CENTER>
<B> Mi Pgina de Inicio !! </B>
if (!isset($_SESSION['username']))
</CENTER>
{
...
session_destroy();
<CENTER>
die ("Por favor,
<a href="mipagina2.php">Pgina 2</a>
<a href=phplogin.php>inicie, primero, la sesin");
</CENTER>
}
...
?>
<CENTER>
<HTML>
<a href="logout.php">Cerrar la sesin</a>
<HEAD>
</CENTER>
<TITLE> Mi pgina de inicio</TITLE>
</HEAD>
<BODY bgcolor="Silver" text="Red">
<TABLE width="330" border="10" align="center"
cellpadding="5"
cellspacing="2">
<TR>

12. Scripts de autenticacin


y sesiones en PHP
Ejemplo de control de autenticacin
<DIV align="center">
<B>Bienvenido a la zona privada de
<?PHP echo $_SESSION['username'];?
><B></DIV>
...
<CENTER>
<B> Mi Pgina 2 !! </B>
</CENTER>
if (!isset($_SESSION['username']))
...
{
<CENTER>
session_destroy();
<a href="miinicio.php">Pgina de Inicio de
die ("Por favor,
echo $_SESSION['username']; ?></a>
<a href=phplogin.php>inicie, primero, la <?PHP
sesin");
</CENTER>
}
...
?>
<a href="logout.php">Cerrar la sesin</a>
<HTML>
</CENTER>
<HEAD>
<TITLE> Mi pgina 2</TITLE>
</HEAD>
<BODY>
<TABLE width="330" border="10" align="center"
cellpadding="5"
cellspacing="2">
<TR>
mipagina2.php
<?PHP
// Iniciar la sesin
session_start();
// Obtener el entorno de la sesin y
// comprobar que est definido.

12. Scripts de autenticacin


y sesiones en PHP
Ejemplo de control de autenticacin
logout.php
<?PHP
// Iniciar la sesin
session_start();
// Obtener el entorno de la sesin y
// comprobar que est definido
if (isset($_SESSION['username']))
{
// Caso de que la sesin est definida
unset($_SESSION['username']);
session_destroy();
$url = "Location:phplogin.php";
header($url);
}
else
{
die("Slo los usuarios registrados pueden cerrar la sesin.
<a href=phplogin.php>Inicie primero la sesin");
}
?>

12. Scripts de autenticacin


y sesiones en PHP
Ejercicio de carrito de la compra

Desarrollo de
aplicaciones PHP
para bases de datos
Almera 2007

Lenguajes de Desarrollo.
PHP
Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticacin y sesiones
13. Cookies en PHP
14. Gestin de envo de archivos en PHP

13. Cookies en PHP


Control y manejo de cookies
Pequeos archivos de texto que contienen informacin
para identificar al cliente y personalizar su navegacin

Ingredientes de una cookie:

nombre
valor
fecha de caducidad
dominio desde el que se puede leer la cookie
ruta dentro del servidor
seguridad
Limitaciones de las cookies:
300 cookies en total
4KBytes por cookie
20 cookies por servidor o dominio

13. Cookies en PHP


Creacin de cookies
Llamadas a las cookies antes que cualquier salida
cabeceras http antes que <html> y <head>

ool setcookie ( string nombre, string valor, int expirar, string ruta
string dominio, bool segura)

Ejemplos de cookies
<?

<?
setcookie("saludo",
setcookie("saludo"
"hola");
<?
);
?>una hora. 1 hora = 3600
// Esta cookie dura
?>
segundos
setcookie("visitas", "1", time()+3600);

13. Cookies en PHP


Ejemplos de cookies
<?
// Esta cookie dura un ao
setcookie("visitas", "1", time()
+60*60*24*365);
?>
php-setcookie.php
<?
$valor = "algo desde algun lugar";
setcookie("cookiedeprueba",$valor, time() + 3600); /*
expira en una hora */
?>

13. Cookies en PHP


Lectura de cookies
$_COOKIE[nombre_cookie]

Ejemplos de cookies
php-leercookie.php
<?
// Imprime una cookie
echo $_COOKIE['cookiedeprueba'] . "<br>";
// Otra forma de depurar las cookies
echo "<pre>";
print_r($_COOKIE);
echo "</pre>";
?>

13. Cookies en PHP


Eliminacin de cookies
Crear la cookie con valor vaco y tiempo de vida pasado

Ejemplos de cookies
php-borrarcookie.php
<?
setcookie("cookiedeprueba","", time() - 3600);
/* expir hace una hora */
echo "Acabo de eliminar la cookie
cookiedeprueba";
?>

13. Cookies en PHP


Ejemplo interesante de cookies (restriccin de acceso)
php-accesocookie.php
<?php
if (!isset($_COOKIE['intentos']))
$intentos = 1;
else
$intentos = $_COOKIE['intentos'] + 1;
setcookie('intentos',$intentos,time() + 60);
if ($intentos <= 3)
{
Un minuto ms tarde
echo "<tt>Eres el intento nmero: " . $intentos . "<br>";
echo "Por tanto, puedes pasar</tt>";
}
else
echo "<tt>Prueba un poco mas tarde, crack</tt>";
?>

Desarrollo de
aplicaciones PHP
para bases de datos
Almera 2007

Lenguajes de Desarrollo.
PHP
Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticacin y sesiones
13. Cookies en PHP
14. Gestin de envo de archivos en PHP

14. Gestin de archivos en


PHP
php-file.php
<html>
<head>
<title>Ejemplo de envio de archivos en PHP</title>
</head>
<body>
<form enctype="multipart/form-data" action="phpupload.php"
method="post">
<input type="hidden" name="MAX_FILE_SIZE"
value="100000">
Enviando este archivo: <input name="archivousuario
type="file">
<br>
<input type="submit" value="Enviar Archivo">
</form>
</body>
</html>

14. Gestin de archivos en


PHP
Control de upload
$_FILES
$_FILES
$_FILES
$_FILES
$_FILES

[archivousuario][name]
[archivousuario][type]
[archivousuario][size]
[archivousuario][tmp_name]
[archivousuario][error]

Funciones de gestin de archivos


bool is_uploaded_file ($_FILES [archivousuario]
[tmp_name])
bool move_uploaded_file (nombre_archivo_servidor,
destino)

14. Gestin de archivos en


PHP
Control de upload
php-upload.php
<html>
<head>
<title>Ejemplo de envio de archivos en PHP</title>
</head>
<body>
<?php
if (is_uploaded_file($_FILES['archivousuario']['tmp_name']))
{
echo "He recibido el archivo: " . $_FILES['archivousuario']
['name'] . "<br>";
echo "Su tamao es de: " . $_FILES['archivousuario']['size'] .
"<br>";
echo "Su nombre temporal en el servidor es: .
$_FILES['archivousuario']['tmp_name'] . "<br>";
$nombre_archivo = "/temp/uploads/" . $_FILES['archivousuario']
['name'];
move_uploaded_file($_FILES['archivousuario']['tmp_name'],

14. Gestin de archivos en


PHP
Control de upload
php-upload.php
else
{
echo "Possible ataque de carga de archivo. Nombre Archivo: "
. $_FILES['archivousuario']['name'] . "<br>";
if ($_FILES['archivousuario']['error']==UPLOAD_ERR_INI_SIZE)
echo "El tamao excede lo especificado en el archivo
php.ini";
if ($_FILES['archivousuario']['error']==
UPLOAD_ERR_FORM_SIZE)
echo "El tamao excede lo especificado para este caso";
if ($_FILES['archivousuario']['error']==UPLOAD_ERR_PARTIAL)
echo "El tamao no ha subido completamente";
}
?>
</body>

14. Gestin de archivos en


PHP
Control de upload

14. Gestin de archivos en


PHP
Ejercicio de envo mltiple de archivos

Desarrollo de aplicaciones
PHP para bases de datos
Almera 2007

Lenguajes de Desarrollo.
PHP
Antonio Becerra Tern
abecerra@ual.es
Departamento de Lenguajes y Computacin
Universidad de Almera