Desarrollo de
aplicaciones PHP para
bases de datos
Almería 2007
Lenguajes de Desarrollo. PHP
Antonio Becerra Terón
[email protected]
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>
register_globals On en php.ini
</HTML>
10. Paso de variables entre
scripts PHP
Paso de variables con $_GET
destinoget.php
<HTML>
<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>
register_globals Off en php.ini
phporiegenurl.php
...
<a href="destinoget.php?saludo=hola&texto=
Esto es una variable texto&username=
<?php echo $username;?>">
...
10. Paso de variables entre
scripts PHP
Paso de variables con $_GET
destinoget.php
<HTML>
<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>
register_globals Off en php.ini
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
información del formulario
POST: usuario envía 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
<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>
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
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>
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
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>
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
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>
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
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>
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
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
<html>
<head>
<title>Restringir por edad</title>
</head>
<body>
<form action="edad2.php" method="post">
Escribe tu edad:
<input type="text" name="edad" size = "2">
<input type="submit" value="Entrar">
</form>
</body>
</html>
edad2.php
<html>
<head>
<title>Restringir por edad</title>
</head>
<body>
<?
$edad = $_POST["edad"];
echo "Tu edad: $edad<p>";
if ($edad < 18) {
echo "No puedes entrar";
}else{
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
<HTML>
<BODY>
<FORM METHOD="post" ACTION="mis_datos.php">
<input type="hidden" name="edad" value="55">
<p>Tu nombre
<input type="text" name="nombre" size="30"
value="antonio becerra"></p>
<p>Tu sistema favorito
<select size="1" name="sistema">
<option selected value="Linux">Linux</option>
<option value="Unix">Unix</option>
<option value="Macintosh">Macintosh</option>
<option value="Windows">Windows</option>
</select></p>
<p>¿Te gusta el futbol ?
<input type="checkbox" name="futbol"
value="ON"></p>
<p>¿Cual es tu sexo?</p>
<blockquote>
<p>Hombre<input type="radio"
value="hombre" checked
name="sexo"></p>
<p>Mujer
<input type="radio" name="sexo"
value="mujer"></p>
</blockquote>
<p>Aficiones</p>
<p>
<textarea rows="5" name="aficiones"
cols="28"></textarea></p>
<p><input type="submit"
value="Enviar datos" name="enviar">
<input type="reset"
value="Restablecer" name="B2"></p>
</FORM>
</BODY>
<HTML>
11. Formularios en PHP
Formulario habitual
11. Formularios en PHP
Formulario habitual
mis_datos.php
<?PHP
$enviar = $_POST['enviar'];
$nombre = $_POST['nombre'];
$sexo = $_POST['sexo'];
$edad = $_POST['edad'];
$sistema = $_POST['sistema'];
$futbol = $_POST['futbol'];
$aficiones = $_POST['aficiones'];
if ($enviar) {
echo "Hola <b>" . $nombre .
"</b> que tal estás<BR>\n";
echo "Eres " . $sexo . "<BR>\n";
echo "Tienes " . $edad . "<BR>\n";
echo "Tu sistema favorito es " . $sistema .
"<BR>\n";
if ($futbol) {
echo "Te gusta el futbol <BR>\n";
}
else {
echo "NO te gusta el futbol <BR>\n";
}
if ($aficiones != "") {
echo "Tus aficiones son: <BR>\n";
echo nl2br($aficiones);
} else {
echo "NO tienes aficiones <BR>\n";
}
}
echo "<br>";
echo “
<a href=phpformunormal.php>VOLVER AL
FORMULARIO</a>"
?>
11. Formularios en PHP
Formulario habitual
11. Formularios en PHP
Formulario más complejo
phpformucomplex.php
<?php
if (isset($_POST['Accion']))
{
print '<pre>';
print_r($_POST);
echo
"<a href= $_SERVER[PHP_SELF] >
Por favor, intentálo de nuevo</a>";
print '</pre>';
}
else
{
?>
<form
action="<?php echo
$_SERVER['PHP_SELF']; ?>"
method="POST">
Nombre: <input type="text"
name="personal[nombre]"><br>
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
Schwabenbräu</option>
</select><br>
<input type="hidden" name="Accion"
value="enviado">
<input type="submit" name="Enviar"
value="Envíame!">
</form>
<?PHP
}
?>
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
<HTML>
<HEAD>
<TITLE>Inicio de sesión</TITLE>
</HEAD>
<BODY bgcolor="Aqua">
<FORM name="form1" method="POST"
action="phpautenticacion.php">
<TABLE width="400">
<TR>
<td colspan="2">
<div align="center"><B>Introduzca un nombre de usuario
y una contraseña</B></DIV>
</TD>
</TR>
<TR>
<TD>
<DIV align="right">Nombre de usuario:</DIV>
</TD>
<TD>
<INPUT type="text" name="username">
</TD>
</TR>
<TR>
<TD>
<DIV align="right">Contraseña</DIV>
</TD>
<TD>
<INPUT type="pasword" name="password"
maxlength="15">
</TD>
</TR>
<TR>
<TD colspan="2">
<CENTER>
<INPUT type="submit" name="submit" value="Enviar">
</CENTER>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
<HTML>
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>
}
</HTML>
if (strlen($password) < 5)
{
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
register_globals On en php.ini
bool session_start ( void )
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
Proceso de
autenticación
Definir el entorno
de sesión
miinicio.php
Página de
inicio de usuario
No inicio de sesión
logout.php
mipagina2.php
Destruir el entorno
de la sesión
Segunda página de
inicio de usuario
Presentar ejemplo por pantalla
12. Scripts de autenticación y
sesiones en PHP
Ejemplo de control de autenticación
phplogin.php
<HTML>
<HEAD>
<TITLE>Inicio de sesión</TITLE>
</HEAD>
<BODY bgcolor="Aqua">
<FORM name="form1" method="POST"
action="phpsesion.php">
<TABLE width="400">
<TR>
<td colspan="2">
<div align="center"><B>
Introduzca un nombre de usuario
y una contraseña</B></DIV>
</TD>
</TR>
<TR>
<TD>
<DIV align="right">Nombre de usuario:</DIV>
</TD>
<TD>
<INPUT type="text" name="username">
</TD>
</TR>
<TR>
<TD>
<DIV align="right">Contraseña</DIV>
</TD>
<TD>
<INPUT type="password" name="password"
maxlength="15">
</TD>
</TR>
<TR>
<TD colspan="2">
<CENTER>
<INPUT type="submit" name="submit" value="Enviar">
</CENTER>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
<HTML>
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
<?PHP
// Iniciar la sesión
session_start();
// Obtener el entorno de la sesión y comprobar
// que esté definido.
<DIV align="center"><B>Bienvenido a la página de
inicio de <?PHP echo
$_SESSION['username'];?><B></DIV>
...
<CENTER>
<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
<DIV align="center">
<B>Bienvenido a la zona privada de
<?PHP echo $_SESSION['username'];?><B></DIV>
...
<CENTER>
<B> ¡¡ Mi Página 2 !! </B>
</CENTER>
...
if (!isset($_SESSION['username']))
<CENTER>
{
<a href="miinicio.php">Página de Inicio de
session_destroy();
<?PHP echo $_SESSION['username']; ?></a>
die ("Por favor,
<a href=phplogin.php>inicie, primero, la sesión");</CENTER>
...
}
<a href="logout.php">Cerrar la sesión</a>
?>
</CENTER>
<HTML>
<HEAD>
<TITLE> Mi página 2</TITLE>
</HEAD>
<BODY>
<TABLE width="330" border="10" align="center" cellpadding="5"
cellspacing="2">
<TR>
<TD>
mipagina2.php
<?PHP
// Iniciar la sesión
session_start();
// Obtener el entorno de la sesión y
// comprobar que esté definido.
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
[email protected]
Departamento de Lenguajes y Computación
Universidad de Almería
Descargar

LenguajesPHPII - Universidad de Almería