Está en la página 1de 70

Desarrollo de

aplicaciones PHP para


bases de datos
Almería 2007

Lenguajes de Desarrollo. PHP

Antonio Becerra Terón


abecerra@ual.es

Departamento de Lenguajes y Computación


Universidad de Almería
Desarrollo de
aplicaciones PHP
para bases de datos
Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticación y sesiones
13. Cookies en PHP
14. Gestión de envío de archivos en PHP
Desarrollo de
aplicaciones PHP para
bases de datos
Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticación y sesiones
13. Cookies en PHP
14. Gestión de envío de archivos en PHP
10. Paso de variables entre
scripts PHP

Paso de variables por URL


En un sitio Web, las páginas y los scripts utilizados son muy
numerosos. Muy a menudo, vamos a necesitar que nuestros
distintos scripts estén conectados unos con otros, y,
sobretodo, que se sirvan y se pasen variables comunes.

<a href="destino.php?variable1=valor1&variable2=valor2&...">
Mi enlace</a>

• Estas variables no tienen el símbolo $ delante


• Una vez realizado el paso, nuestras variables pertenecen
al entorno de la página destino.php
• Activada/desactivada la opción de configuración
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 página 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";
?>
</BODY>
</HTML> register_globals On en php.ini
10. Paso de variables entre
scripts PHP

Paso de variables con $_GET


destinoget.php
<HTML> register_globals Off en php.ini
<HEAD>
<TITLE>destinoget.php</TITLE>
</HEAD>
<BODY>
<?
// Captura de las variables pasadas por la URL
$saludo = $_GET['saludo']; phporiegenurl.php
$texto = $_GET['texto']; ...
<a href="destinoget.php?saludo=hola&texto=
$username = $_GET['username']; Esto es una variable texto&username=
echo "Variable \$saludo: $saludo <br>\n"; <?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 Off en php.ini
<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>
Desarrollo de
aplicaciones PHP para
bases de datos
Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticación y sesiones
13. Cookies en PHP
14. Gestión de envío de archivos en PHP
11. Formularios en PHP

Procesar variables de formularios en PHP


• Presentar una primera página con el formulario clásico a rellenar
• Las variables del formularios son recogidas en una segunda página
que las procesa

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

script PHP que procesa la POST: usuario envía datos


información del formulario 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>\n";
NAME="nombre"><br> echo "Variable \$apellidos: $apellidos <br>\n"
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>\n";
NAME="nombre"><br> echo "Variable \$apellidos: $apellidos <br>\n"
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>\n";
NAME="nombre"><br> echo "Variable \$apellidos: $apellidos <br>\n"
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>\n";
NAME="nombre"><br> echo "Variable \$apellidos: $apellidos <br>\n"
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>\n";
NAME="nombre"><br> echo "Variable \$apellidos: $apellidos <br>\n"
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

Restricción de acceso por edad


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

Restricción de acceso por edad


11. Formularios en PHP

Restricción de acceso por edad


11. Formularios en PHP

Formulario habitual
phpformunormal.php <blockquote>
<HTML> <p>Hombre<input type="radio"
<BODY> value="hombre" checked
<FORM METHOD="post" ACTION="mis_datos.php"> name="sexo"></p>
<input type="hidden" name="edad" value="55"> <p>Mujer
<p>Tu nombre <input type="radio" name="sexo"
<input type="text" name="nombre" size="30" value="mujer"></p>
value="antonio becerra"></p> </blockquote>
<p>Tu sistema favorito <p>Aficiones</p>
<select size="1" name="sistema"> <p>
<option selected value="Linux">Linux</option> <textarea rows="5" name="aficiones"
<option value="Unix">Unix</option> cols="28"></textarea></p>
<option value="Macintosh">Macintosh</option> <p><input type="submit"
<option value="Windows">Windows</option> value="Enviar datos" name="enviar">
</select></p> <input type="reset"
<p>¿Te gusta el futbol ? value="Restablecer" name="B2"></p>
<input type="checkbox" name="futbol" </FORM>
value="ON"></p> </BODY>
<p>¿Cual es tu sexo?</p> <HTML>
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 estás<BR>\n"; echo “
echo "Eres " . $sexo . "<BR>\n"; <a href=phpformunormal.php>VOLVER AL
echo "Tienes " . $edad . "<BR>\n"; FORMULARIO</a>"
echo "Tu sistema favorito es " . $sistema . ?>
"<BR>\n";
if ($futbol) {
echo "Te gusta el futbol <BR>\n";
}
11. Formularios en PHP

Formulario habitual
11. Formularios en PHP

Formulario más complejo


phpformucomplex.php
<?php Email: <input type="text"
if (isset($_POST['Accion'])) name="personal[email]"><br>
{ Cerveza: <br>
print '<pre>'; <select multiple name="beer[ ]">
print_r($_POST); <option value="warthog">Warthog</option>
echo <option
"<a href= $_SERVER[PHP_SELF] > value="guinness">Guinness</option>
Por favor, intentálo de nuevo</a>"; <option value="stuttgarter">Stuttgarter
print '</pre>'; Schwabenbräu</option>
} </select><br>
else <input type="hidden" name="Accion"
{ value="enviado">
?> <input type="submit" name="Enviar"
<form value="Envíame!">
action="<?php echo </form>
$_SERVER['PHP_SELF']; ?>" <?PHP
method="POST"> }
Nombre: <input type="text" ?>
name="personal[nombre]"><br>
11. Formularios en PHP

Formulario más complejo


11. Formularios en PHP

Ejercicio de Formulario
Desarrollo de
aplicaciones PHP para
bases de datos
Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticación y sesiones
13. Cookies en PHP
14. Gestión de envío de archivos en PHP
12. Scripts de autenticación y
sesiones en PHP

Scripts de autenticación
Autenticación basada en contraseñas
phpinicio_sesion.php <TR>
<HTML> <TD>
<HEAD> <DIV align="right">Contraseña</DIV>
<TITLE>Inicio de sesión</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 usuario <CENTER>
y una contraseña</B></DIV> <INPUT type="submit" name="submit" 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 autenticación y
sesiones en PHP

Scripts de autenticación
12. Scripts de autenticación y
sesiones en PHP

Scripts de autenticación
if (!(strcmp($password,"antonio")))
phpautenticacion.php {
<HTML> echo "Bienvenido a su página de inicio " .
<HEAD> "<b>" .
<TITLE>Página de autenticación</TITLE> $username . "</b><br>";
</HEAD> }
<BODY bgcolor="Gray"> else
<?PHP {
$username = $_POST['username']; die("No ha introducido la contraseña
$password = $_POST['password']; correcta");
if (empty($password)) }
{ ?>
die("No se ha introducido la contraseña"); </BODY>
}
if (strlen($password) < 5) </HTML>
{
die("La contraseña introducida es demasiado corta");
}
12. Scripts de autenticación y
sesiones en PHP

Scripts de autenticación
12. Scripts de autenticación y
sesiones en PHP

Autenticación HTTP

Sólo disponible cuando PHP se ejecuta como módulo de Apache


Función header()
Autenticación controlada por variables predefinidas PHP

$_SERVER[‘PHP_AUTH_USER’]
$_SERVER[‘PHP_AUTH_PW’]
$_SERVER[‘AUTH_TYPE’]
12. Scripts de autenticación y
sesiones en PHP

Autenticación 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>Autorización Requerida</h1>';
exit;
}
else
{
echo "<p>Hola " . $_SERVER['PHP_AUTH_USER'] . ".</p>";
echo "<p>Has introducido " . $_SERVER['PHP_AUTH_PW'] . " como contraseña.</p>";
}
?>
12. Scripts de autenticación y
sesiones en PHP

Autenticación HTTP
12. Scripts de autenticación y
sesiones en PHP

Autenticación 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>
<html>
Ha conseguido el acceso a la <B>zona
<head>
restringida</B> de
<title>Ejemplo de Autenticación HTTP
<? echo $_SERVER['PHP_AUTH_USER'];?>
con PHP</title>
</body>
</html>
12. Scripts de autenticación y
sesiones en PHP

Autenticación HTTP
12. Scripts de autenticación y
sesiones en PHP

Control y manejo de sesiones


Hemos utilizado variables que sólo existían en el script
ejecutado. ¿Cuál es el problema?
Cargamos otra página 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 explotación

Sesión = intervalo de tiempo empleado por un usuario


en recorrer nuestras páginas, hasta que:
• abandona nuestro sitio,
• deja de actuar sobre él durante un tiempo prolongado,
• cierra el navegador

PHP nos permite almacenar variables de sesión que, una


vez definidas, podrán ser utilizadas durante la actividad
del usuario por cualquiera de los scripts de nuestro sitio Web
12. Scripts de autenticación y
sesiones en PHP

Funciones para control de sesiones


Inicio y registro de la sesión

register_globals On/Off en php.ini bool session_start ( void )

register_globals On en php.ini bool session_register ( mixed nombre [, mixed ...])

register_globals Off en php.ini $_SESSION[‘nombrevarsesion’ ] = valor

Idetificación de sesión
register_globals On/Off en php.ini string session_id ( [string id])
12. Scripts de autenticación y
sesiones en PHP

Funciones para control de sesiones


Asignación de nombre a la sesión

register_globals On/Off en php.ini string session_name ( [string nombre])

<?php
// Cambiar el nombre de la sesión a WebsiteID
$nombre_anterior = session_name("WebsiteID");
echo "El anterior nombre de la sesión era $nombre_anterior<p>";
echo "Mientras que el nuevo es " . session_name();
?>
12. Scripts de autenticación y
sesiones en PHP

Funciones para control de sesiones


Comprobación de registro de sesión

register_globals On en php.ini bool session_is_registered ( string nombre )

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

Borrado de la sesión
register_globals On/Off en php.ini bool session_destroy ( void )
12. Scripts de autenticación y
sesiones en PHP

Funciones para control de sesiones


Eliminar variables de sesión

register_globals On en php.ini void session_unset ( void )

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


12. Scripts de autenticación y
sesiones en PHP

Ejemplos de control de sesiones


12. Scripts de autenticación 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 sesión <b>" . session_name() ."</b>";
?>
12. Scripts de autenticación y
sesiones en PHP

Ejemplo de control de autenticación


No inicio de sesión

phplogin.php phpsesion.php miinicio.php

Proceso de Definir el entorno Página de


autenticación de sesión inicio de usuario

No inicio de sesión

logout.php mipagina2.php

Destruir el entorno Segunda página de


de la sesión inicio de usuario

Presentar ejemplo por pantalla


12. Scripts de autenticación y
sesiones en PHP

Ejemplo de control de autenticación


phplogin.php <TR>
<HTML> <TD>
<HEAD> <DIV align="right">Contraseña</DIV>
<TITLE>Inicio de sesión</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" value="Enviar">
y una contraseña</B></DIV> </CENTER>
</TD> </TD>
</TR> </TR>
<TR> </TABLE>
<TD> </FORM>
<DIV align="right">Nombre de usuario:</DIV> </BODY>
</TD> <HTML>
<TD>
<INPUT type="text" name="username">
</TD>
</TR>
12. Scripts de autenticación y
sesiones en PHP

Ejemplo de control de autenticación


phpsesion.php <a href=phplogin.php>Vuelva a intentarlo");
<?PHP }
// Obteniendo las variables externas // Enviando a la página de inicio del usuario
// del inicio de sesion $url = "Location:miinicio.php";
$username = $_POST['username']; header($url);
$password = $_POST['password']; ?>
// Definición del entorno de sesion
session_start();
$_SESSION['username']=$username;
// Autenticando la contraseña
if (empty($password))
{
unset($_SESSION['username']);
die("No se ha introducido la contraseña.
<a href=phplogin.php>Vuelva a intentarlo");
}
if (strlen($password) < 5)
{
unset($_SESSION['username']);
die("La contraseña introducida es demasiado corta.
12. Scripts de autenticación y
sesiones en PHP

Ejemplo de control de autenticación


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

Ejemplo de control de autenticación


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

Ejemplo de control de autenticación


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

Ejercicio de carrito de la compra


Desarrollo de
aplicaciones PHP para
bases de datos
Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticación y sesiones
13. Cookies en PHP
14. Gestión de envío de archivos en PHP
13. Cookies en PHP

Control y manejo de cookies


Pequeños archivos de texto que contienen información
para identificar al cliente y personalizar su navegación

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

Creación de cookies

Llamadas a las cookies antes que cualquier salida


cabeceras http – antes que <html> y <head>

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

Ejemplos de cookies
<? <?
setcookie("saludo"); setcookie("saludo", "hola");
?> <? ?>
// Esta cookie dura una hora. 1 hora = 3600 segundos
setcookie("visitas", "1", time()+3600);
?>
13. Cookies en PHP

Ejemplos de cookies
<?
// Esta cookie dura un año
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

Eliminación de cookies
Crear la cookie con valor vacío 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 (restricción 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 más tarde
echo "<tt>Eres el intento número: " . $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
Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos
10. Paso de variables entre scripts PHP
11. Formularios en PHP
12. Scripts de autenticación y sesiones
13. Cookies en PHP
14. Gestión de envío de archivos en PHP
14. Gestión 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="php-upload.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. Gestión de archivos en PHP

Control de upload
$_FILES [‘archivousuario’][‘name’]
$_FILES [‘archivousuario’][‘type’]
$_FILES [‘archivousuario’][‘size’]
$_FILES [‘archivousuario’][‘tmp_name’]
$_FILES [‘archivousuario’][‘error’]
Funciones de gestión de archivos

bool is_uploaded_file ($_FILES [‘archivousuario’][‘tmp_name’])

bool move_uploaded_file (nombre_archivo_servidor, destino)


14. Gestión 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 tamaño 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'],
$nombre_archivo);
}
14. Gestión 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 tamaño excede lo especificado en el archivo php.ini";
if ($_FILES['archivousuario']['error']== UPLOAD_ERR_FORM_SIZE)
echo "El tamaño excede lo especificado para este caso";
if ($_FILES['archivousuario']['error']==UPLOAD_ERR_PARTIAL)
echo "El tamaño no ha subido completamente";
}
?>
</body>
</html>
14. Gestión de archivos en PHP

Control de upload
14. Gestión de archivos en PHP

Ejercicio de envío múltiple de archivos


Desarrollo de aplicaciones PHP
para bases de datos
Almería 2007

Lenguajes de Desarrollo. PHP

Antonio Becerra Terón


abecerra@ual.es

Departamento de Lenguajes y Computación


Universidad de Almería

También podría gustarte