Professional Documents
Culture Documents
Índice
Capítulo 1. Introducción. .......................................................................................... 2
1.- Conceptos básicos....................................................................................... 2
2.- Instalación y configuración de Apache-PHP................................................ 3
Página 1 de 46
Curso de PHP
Capítulo 1. Introducción.
Página 2 de 46
Curso de PHP
Página 3 de 46
Curso de PHP
Página 4 de 46
Curso de PHP
Página 5 de 46
Curso de PHP
el servidor nos devolverá el contenido del fichero tal cual, es decir, sin realizarle
ninguna modificación (ver Figura: 1):
<HTML>
<BODY>
Contenido de una página HTML
</BODY>
</HTML>
1
OJO. En HTML los acentos y otros caracteres del ASCII extendido tienen su sintaxis, pero aquí
no entraremos en ello.
Página 6 de 46
Curso de PHP
nuestras necesidades.
Siempre enviaremos código HTML al cliente (es decir, al ordenador que ha
realizado la petición de la página), de esta forma el explorador del cliente sólo
deberá saber interpretar el HTML.
Tras esta breve introducción al lenguaje PHP en la que hemos recordado su
funcionamiento pasaremos a ver el lenguaje PHP propiamente dicho.
2.- Sintaxis básica.
Como ha podido verse anteriormente el código PHP se inserta dentro de una
página HTML, pero dicho fichero deberá tener la extensión "PHP" para que el servidor
sepa que ha de interpretarla antes de enviarla al cliente. (Es posible configurar el PHP
para que interprete también las páginas HTML, pero es conveniente que no mezclemos
estos dos tipos de páginas).
Podemos indicar que el código que viene a continuación es PHP de varias formas,
pero la más común es la siguiente:
<?PHP
código PHP...
?>
Página 7 de 46
Curso de PHP
Ejercicio 2.1: Realizar una página PHP que nos muestre los días de la semana, cada
uno de ellos en una línea diferente.
Y finalmente tenemos include("fichero"); que nos permite incluir un
fichero dentro de nuestra página PHP. Es una sentencia muy útil cuando tenemos una
página PHP demasiado grande y queremos dividirla en varios trozos, o para cuando
determinado código PHP aparece en varias páginas y así nos evitamos tenerlo escrito
varias veces.
Ejemplo:
Si tenemos el siguiente fichero PHP:
<HTML>
<BODY>
<?PHP
Página 8 de 46
Curso de PHP
include("texto.txt");
?>
</BODY>
</HTML>
Fíjese que la identación del fichero que se incluye se mantiene (se incluye tal
cual).
Y otra sentencia que nos permite incluir ficheros es require("fichero");,
que a diferencia de "include" si se produce un error al incluir el fichero se para la
carga de la página. Con "include" se muestra un aviso (warning) pero se continúa.
Página 9 de 46
Curso de PHP
Ejercicio 2.2: Realizar una página con código PHP que muestre en pantalla y en siete
líneas un texto como el que aparece a continuación con los días de la semana. Usar
para ello.
El primer día de la semana es: lunes
El segundo día de la semana es: martes
El tercer día de la semana es: miércoles
: : :
: : :
4.- Variables.
Aunque en el apartado anterior ya hemos visto algunas variables vamos a
describirlas ahora con más detalle.
Todas las variables van precedidas del símbolo del dólar.
Página 10 de 46
Curso de PHP
Como podemos ver esto deberemos incluirlo junto a código HTML para que el
explorador nos muestre los resultados formateados, pues aunque usemos dos veces la
función "echo" el texto aparecerá seguido (observe que hemos dejado un espacio
después de la variable $numero para que lo separe del siguiente texto). Veamos otro
ejemplo:
<?PHP
$numero=23;
$cadena="esto es una cadena";
echo("Esto es un número: $numero<BR>");
echo("y esto una cadena: $cadena");
?>
En este ejemplo podemos ver que hemos usado la etiqueta <BR> de HTML.
Deberemos de tener muy claro el funcionamiento del lenguaje de etiquetas HTML pues
vamos a necesitar incluirlas dentro del código PHP.
Para terminar con las variables diremos que podemos crear "variables variables",
es decir, variables cuyo nombre es variable: la variable tomará su nombre de otra
variable que haya sido declarada previamente.
Veámoslo con un ejemplo:
Página 11 de 46
Curso de PHP
<?PHP
$a="buenos";
$$a="dias";
echo("$a $buenos<BR>");
echo("$a ${$a}");
?>
5.- Constantes.
La forma de definir una constante es con la función define(), y no llevan el
carácter dólar delante:
<?PHP
define("CONSTANTE","Valor");
echo("CONSTANTE");
?>
Página 12 de 46
Curso de PHP
- resta.
* multiplicación.
/ división.
% resto al realizar una división. (10 % 3 tendrá el valor 1).
++ incremento en una unidad de la variable.
-- decremento en una unidad de la variable.
De asignación:
= Asigna un valor a una variable: $variable = 23;
+= Le suma a una variable el contenido de otra: $var1 += $var2;
(sería lo mismo que: $var1 = $var1 + $var2).
-= Le resta a una variable el contenido de otra: $var1 -= $var2;
(sería lo mismo que: $var1 = $var1 - $var2).
Lógicos:
== devuelve TRUE si las expresiones de los dos lados del operador
tienen el mismo valor, en caso contrario devuelve FALSE.
=== devuelve TRUE si las expresiones de los dos lados del operador
tienen el mismo valor y a la vez son del mismo tipo, en caso contrario
devuelve FALSE.
!= devuelve TRUE si las expresiones de los dos lados del operador
tienen un valor distinto, en caso contrario devuelve FALSE.
< menor que... (no necesita más explicación)
> mayor que... (no necesita más explicación)
<= menor o igual que... (no necesita más explicación)
>= mayor o igual que... (no necesita más explicación)
and devuelve TRUE en caso de que las dos expresiones lógicas de
ambos lados del operador sean TRUE, y FALSE en caso contrario.
&& idéntico a "and", pero tiene mayor precedencia (ver tabla de
precedencias más adelante).
or devuelve TRUE en caso de que alguna de las dos expresiones
lógicas de ambos lados del operador sean TRUE, y FALSE en caso
contrario.
\\ idéntico a "or", pero tiene mayor precedencia (ver tabla de
precedencias más adelante).
xor devuelve TRUE en caso de una de las expresiones sea TRUE y la
otra FALSE, y FALSE en caso contrario. Es decir, TRUE si las dos
expresiones tienen distinto valor lógico y FALSE si las dos expresiones
tienen el mismo valor lógico (TRUE o FALSE).
! operador negación. Devuelve TRUE si la expresión de su derecha es
Página 13 de 46
Curso de PHP
Página 14 de 46
Curso de PHP
a) if-else
Ejecutará una serie de sentencias en función de si una condición es cierta o no. Su
sintaxis puede ser de dos formas, sin incluir el "else":
if (condición)
sentencia1
o incluyéndolo:
if (condición)
sentencia1
else
sentencia2
Página 15 de 46
Curso de PHP
Observaciones al ejemplo:
Es aconsejable usar los paréntesis que se consideren oportunos a la hora de
poner una condición, pues a veces el no incluir paréntesis nos ejecutará algo
distinto a lo esperado (debido a las precedencias).
Fíjese que para realizar una comparación se usan dos signos igual (==). Un
fallo común es usar sólo uno, que se usa para la asignación, en cuyo caso se
realizará la asignación y si el valor asignado es distinto de creo se considerará
la condición como TRUE y si el valor de la asignación es cero se considerará la
condición como FALSE.
En el ejemplo podría haberse el "else" en una sola línea, pero se ha puesto en
dos para que se vea el uso de las llaves para indicar el inicio y el final de una
sentencia compuesta.
Como dentro de un if-else podemos tener cualquier tipo de sentencia,
podremos tener otros if-else dentro, que a su vez podrán tener otros if-else, etc.
if ($numero == 1)
echo("El número es el uno");
else if ($numero == 2)
echo("El número es el dos");
else if ($numero == 3)
echo("El número es el tres");
else if ($numero == 4)
echo("El número es el cuatro");
else echo("El número es mayor que cuatro");
b) switch
Una forma más correcta e hacer lo visto en el ejemplo anterior sería usando la
estructura "switch". Ésta nos permite elegir entre varios valores, y por último hacer
una especie de "else", es decir, una alternativa en caso de no cumplirse ninguna de las
condiciones anteriores.
Su sintaxis es la siguiente:
switch (expresión)
{
case valor_1:
sentencia 1
break;
case valor_2:
sentencia 2
break;
…
case valor_n:
sentencia n
break;
Página 16 de 46
Curso de PHP
default:
sentencia n+1
}
En este caso no tenemos una condición, sino una expresión, y detrás de cada
"case" tendremos un valor posible de dicha expresión, entonces se ejecutarán las
sentencias para las que se cumpla que la expresión tenga el valor indicado tras su
"case" correspondiente.
Veamos un ejemplo para aclarar conceptos:
switch ($dia)
{
case 1:
echo("El día es LUNES");
break;
case 2:
echo("El día es MARTES");
break;
// Aquí seguirán los demás días de la semana.
case 7:
echo("El día es DOMINGO");
break;
default:
echo("El número no corresponde a ningún día de la semana");
}
En cada "case" se compara el valor de la variable "$dia" con el valor que hay
detrás de dicho "case". En caso de no ser igual se salta al siguiente "case", y si el
valor es igual entonces se ejecutan las sentencias que hay detrás del "case", pero ojo,
se ejecutarían TODAS las sentencias hasta el final del "switch" (aunque estén
incluidas dentro de otros "case"). Para evitar esto se debe poner la sentencia
"break;" detrás de la última sentencia de cada "case" y esto hace que la ejecución
salte a la siguiente instrucción que haya detrás del "switch".
Ejercicio 2.3: Escribir el código PHP necesario para que según el valor de una
variable muestre el nombre del mes correspondiente a dicho valor numérico. En caso
de que el valor no esté entre 1 y 12 se deberá mostrar un mensaje de error.
7.2.- Estructuras de control repetitivas.
Con estas estructuras podremos repetir un conjunto de sentencias el número de
veces que sea necesario para nuestro propósito. También se les llama "bucles" en
general.
a) while
La sintaxis es la siguiente:
while (condición)
Página 17 de 46
Curso de PHP
sentencia;
Como puede verse el código que se genera es siempre seguido, a no ser que se lo
indiquemos con el carácter de nueva línea: \n
$num=2;
while ($num<7) {
echo("El número es: $num\n");
$num=$num+1;
}
echo("Fin del bucle while");
Ejercicio 2.4: Crear el código PHP necesario para que muestre los números pares
entre el 10 y el 50 (incluidos). Usar la sentencia "while".
Ejercicio 2.5: Crear el código PHP necesario para que muestre los números múltiplos
Página 18 de 46
Curso de PHP
Ejercicio 2.6: Crear el código PHP necesario para que muestre los números entre los
números almacenados en dos variables: $inicio y $final y nos diga de cada uno si es
múltiplo de 2, de 3 o las dos cosas a la vez. Usar la sentencia "while".
b) for
La sintaxis es la siguiente:
for (inicialización; condición; incremento)
sentencia;
Ejercicio 2.7: Crear el código PHP necesario para que muestre los números pares
entre el 10 y el 50 (incluidos). Usar la sentencia "for".
Ejercicio 2.8: Crear el código PHP necesario para que muestre los números múltiplos
de 3 entre los números almacenados en dos variables: $inicio y $final. Usar la
sentencia "for".
Ejercicio 2.9: Crear el código PHP necesario para que muestre los números entre los
números almacenados en dos variables: $inicio y $final y nos diga de cada uno si es
múltiplo de 2, de 3 o las dos cosas a la vez. Usar la sentencia "for".
c) do ... while
La sintaxis es la siguiente:
do sentencia
while (condición);
Página 19 de 46
Curso de PHP
Este bucle funciona de forma idéntica al bucle "while" con la única diferencia
de que la condición se comprueba al final, por lo que la "sentencia" siempre se ejecutará
al menos una vez. En los bucles "while" y "for" podría darse el caso que nunca se
ejecute la sentencia que tiene dentro ninguna vez.
Veamos un ejemplo con "while":
$num=10;
while ($num<7) {
echo("El número es: $num");
$num=$num+1;
}
echo("Fin del bucle while");
Como puede verse, con el "while" no se ejecuta ninguna vez el bucle, mientras
que con el "do...while" se ejecuta una vez.
Ejercicio 2.10: Crear el código PHP necesario para que muestre los números pares
entre el 10 y el 50 (incluidos). Usar la sentencia "do...while".
Ejercicio 2.11: Crear el código PHP necesario para que muestre los números múltiplos
de 3 entre los números almacenados en dos variables: $inicio y $final. Usar la
sentencia "do...while".
Ejercicio 2.12: Crear el código PHP necesario para que muestre los números entre los
números almacenados en dos variables: $inicio y $final y nos diga de cada uno si es
múltiplo de 2, de 3 o las dos cosas a la vez. Usar la sentencia "do...while".
d) foreach
Esta estructura de control es muy similar a "for", pero sólo se utiliza sobre los
arrays y nos facilita en recorrer todos los elementos de un array sin necesidad de
conocer el índice que se usa en dicho array, e incluso nos informa del nombre del índice
de cada elemento.
Veamos un ejemplo:
Página 20 de 46
Curso de PHP
<?PHP
$diasSemana = array('lunes'=>1, 'martes'=>2, 'miércoles'=>3,
'jueves'=>4, 'viernes'=>5, 'sábado'=>6, 'domingo'=>7);
?>
que nos genera el siguiente código HTML (se ha usado "\n" para que el código
HTML generado sea más legible):
Número del día: 1<BR>
Número del día: 2<BR>
Número del día: 3<BR>
Número del día: 4<BR>
Número del día: 5<BR>
Número del día: 6<BR>
Número del día: 7<BR>
Nombre del día: lunes Número del día: 1<BR>
Nombre del día: martes Número del día: 2<BR>
Nombre del día: miércoles Número del día: 3<BR>
Nombre del día: jueves Número del día: 4<BR>
Nombre del día: viernes Número del día: 5<BR>
Nombre del día: sábado Número del día: 6<BR>
Nombre del día: domingo Número del día: 7<BR>
y en el explorador nos aparece (Se ha usado "<BR>" para que cada día salga en
una línea diferente):
Número del día: 1
Número del día: 2
Número del día: 3
Número del día: 4
Número del día: 5
Número del día: 6
Número del día: 7
Nombre del día: lunes Número del día: 1
Nombre del día: martes Número del día: 2
Nombre del día: miércoles Número del día: 3
Nombre del día: jueves Número del día: 4
Nombre del día: viernes Número del día: 5
Página 21 de 46
Curso de PHP
Página 22 de 46
Curso de PHP
8.- Funciones.
8.1.- Funciones definidas por el usuario.
Las funciones, como su propio nombre indica, realizan una "función" que en la
mayoría de los casos se debe realizar en varios lugares de una misma página Web, por
lo que se escriben una vez y luego se utilizan las veces que sean necesario.
Su sintaxis es la siguiente:
function nombre_de_la_función (parámetros_opcionales)
{
sentencias_de_la_función;
return valor_de_retorno_opcional;
}
Como siempre, vamos a ver un ejemplo. Definiremos una función que generará un
mensaje.
function mensaje()
{
echo("Hola.\n");
}
// Código PHP dentro de la página Web.
echo("Antes de la función.\n");
mensaje();
echo("Después de la función.\n");
Ahora vamos a ver una función que recibe un argumento numérico y devuelve el
doble de dicho valor:
function doble($num)
{
$num=2*$num;
return $num;
}
// Código PHP dentro de la página Web.
$valor=doble(3);
echo("$valor\n");
Página 23 de 46
Curso de PHP
Y para terminar veremos el ejemplo de una función que toma dos argumentos y
devuelve el resultado de su suma:
function suma($num1,$num2)
{
$resultado=$num1+$num2;
return $resultado;
}
// Código PHP dentro de la página Web.
$valor=suma(5,6);
echo("$valor\n");
Ejercicio 2.13: Crear una función que reciba dos números y genere la lista de números
pares que hay entre ellos. Llamarla para comprobar que funciona. Tener en cuenta que
los dos números que reciba como argumentos no tienen que ser: el primero el menor y
el segundo el mayor.
Ejercicio 2.14: Crear una función que reciba dos números y genere la lista de números
pares que hay entre ellos. Llamarla para comprobar que funciona. Tener en cuenta que
los dos números que reciba como argumentos no tienen que ser: el primero el menor y
el segundo el mayor. Y tener en cuenta también que si sólo recibe un argumento el otro
Página 24 de 46
Curso de PHP
valor será el cero (es decir, mostrará los valores pares entre el cero y el otro valor
recibido).
Ejercicio 2.15: Crear una función que reciba un argumento numérico y nos muestre la
tabla de multiplicar de ese valor (desde 0 hasta 10). En caso de no recibir dicho
argumento se mostrarán todas las tablas de multiplicar para los números desde el 1
hasta el 10.
8.2.- Funciones de biblioteca.
Como es natural, en PHP existen una serie de bibliotecas con funciones ya
definidas y que el usuario puede usar.
Estas funciones se encuentran clasificadas, y podemos encontrar una
documentación más detallada en la página de PHP:
http://www.php.net/manual/es/funcref.php
Entre estos grupos de funciones podemos nombrar algunas como:
Cadenas de texto.
echo(), print(), printf(), strlen(), strcmp(), rtrim(), ltrim(), trim(),
strtolower(), strtoupper(), etc.
Calendario.
cal_days_in_month(), JDDayOfWeek(), JDMonthName(), etc.
Fecha y hora.
date(), time(), localtime(), strftime(), etc.
Matemáticas.
abs(), sin(), cos(), exp(), min(), max(), pi(), rand(), rount(), sqrt(), etc.
MySQL (acceso a bases de datos).
mysql_connect(), mysql_close(), mysql_error(), mysql_fetch_row(),
mysql_num_rows(), etc.
Sistema de archivos.
copy(), delete(), fopen(), fclose(), fread(), fwrite(), feof(), etc.
Etc.
Página 25 de 46
Curso de PHP
Capítulo 3. Formularios.
Contenido del fichero que va a tratar los datos recibidos del formulario
"prueba2.php":
<?PHP
$TuNombre=$_REQUEST['Nombre'];
echo("Tu nombre es: $TuNombre");
?>
Página 26 de 46
Curso de PHP
PASSWORD
RADIO
CHECKBOX
Elemento SELECT
SELECT
SELECT MULTIPLE
Elemento TEXTAREA
Aunque a continuación los iremos viendo de uno en uno, la sintaxis general de
todos es la siguiente:
<INPUT TYPE="tipo" NAME="nombre" VALUE="valor">
</FORM>
En este caso:
fichero.php lo sustituiremos por el nombre del fichero en PHP al que se le
enviará la información introducida por el usuario en la página Web.
método lo sustituiremos por una de las palabras: "GET" o "POST". Aunque
nos sea indiferente, la diferencia entre estos dos métodos de enviar la
información es la siguiente:
GET: envía los datos usando el URL, es decir, se envían los datos en la línea
de direcciones, después del nombre de la página a la que se le envían. El
usuario podrá ver que datos se envían, y tienen la siguiente forma:
- www.nombre.com/pagina.php?var1=valor1&var2=valor2
POST: se incluye en el cuerpo del formulario y se envía al agente
procesador, es decir, en principio el usuario no ve en la línea de direcciones
que datos se envían.
Los elementos del formulario deberán incluirse entre las dos etiquetas "<FORM>"
y "</FORM>". Aquí podremos poner tanto elementos del formulario como cualquier
otro texto o etiqueta HTML para dar formato al formulario.
2.2.- SUBMIT
Con este elemento nos aparecerá un botón en la página, con el cual enviaremos
los datos que se hayan rellenado en los diversos elementos que hayan en la página a la
página que se le indique.
Su sintaxis es la siguiente:
<INPUT TYPE="SUBMIT" VALUE="Enviar">
Y lo único en lo que nos vamos a fijar es el texto "Enviar"", que será el que
aparezca dentro del botón.
Página 27 de 46
Curso de PHP
2.3.- RESET
Con este botón borraremos el contenido de todos los elementos del formulario y
en caso de que éstos tengan un valor por defecto (como ya veremos más adelante) se
pondrá dicho valor a ese elemento.
<INPUT TYPE="RESET" VALUE="Borrar">
Y lo único en lo que nos vamos a fijar es el texto "Borrar"", que será el que
aparezca dentro del botón.
2.4.- TEXT.
Con este elemento el formulario nos va a permitir escribir texto. Su sintaxis es la
siguiente:
<INPUT TYPE="TEXT" NAME="Nombre" VALUE="texto_inicial" SIZE="10"
MAXLENGTH="12">
Página 28 de 46
Curso de PHP
$TuNombre=$_REQUEST['Nombre'];
echo("Tu nombre es: $TuNombre");
?>
2.5.- PASSWORD
Este elemento funciona de igual forma que el "TEXT", con la diferencia de que
cuando escribimos el texto no nos aparece, si no que aparecen asteriscos. Como está
claro, se usa para cuando pedimos al usuario su contraseña.
La sintaxis es:
<INPUT TYPE="PASSWORD" NAME="Clave" VALUE="texto_inicial"
SIZE="10" MAXLENGTH="12">
Y para este caso no se verá ningún ejemplo por su semejanza al tipo "TEXT".
Como observación interesante también podemos darle un valor inicial, por ejemplo,
para cuando queramos que la contraseña sea una utilizada anteriormente, aunque esto es
muy peligroso.
2.6.- RADIO
Este tipo de elemento se usa para que el usuario seleccione sólo una entre varias
posibles opciones. Su sintaxis es:
<INPUT TYPE="RADIO" NAME="nombre" VALUE="valor" CHECKED>
Página 29 de 46
Curso de PHP
Página 30 de 46
Curso de PHP
Podemos observar que una casilla seleccionada nos envía el valor "on", y de esta
forma podemos realizar las acciones que sean oportunas.
Página 31 de 46
Curso de PHP
2.8.- TEXTAREA
En el caso de "TEXT" sólo podemos escribir una línea, es decir, que si pulsamos
INTRO lo que sucede normalmente es lo mismo que si pulsamos sobre el botón
"SUBMIT", así que si queremos permitir que se introduzcan más líneas usaremos este
elemento.
Su sintaxis es:
<TEXTAREA NAME="nombre" ROWS="número_de_filas"
COLS="número_de_columnas">Texto inicial...
</TEXTAREA>
Página 32 de 46
Curso de PHP
?>
que, como podemos observar, hay un salto de línea después del texto "...que son
visibles."
2.9.- SELECT
Con este elemento nos muestra una lista desplegable de la cual sólo podremos
elegir una de las opciones que aparecen.
Su sintaxis es la siguiente:
<SELECT NAME="Nombre">
<OPTION SELECTED>Opcion1
<OPTION>Opcion2
Página 33 de 46
Curso de PHP
<OPTION>Opcion3
</SELECT>
Página 34 de 46
Curso de PHP
Página 35 de 46
Curso de PHP
Ahora vamos a ver como deberíamos de hacerlo si queremos que el usuario pueda
seleccionar varios elementos de la lista. Deberemos indicar que se trata de un "SELECT
MULTIPLE", y el nombre ("NAME") de la variable que contendrá los valores será un
array (indicado con los corchetes: "[]").
<FORM ACTION="prueba2.php" METHOD="POST">
Elija uno o varios días de la semana:
<BR><BR>
<SELECT MULTIPLE NAME="Semana[]" SIZE="5">
<OPTION SELECTED>Lunes
<OPTION>Martes
<OPTION SELECTED>Miércoles
<OPTION>Jueves
<OPTION>Viernes
<OPTION>Sábado
<OPTION>Domingo
</SELECT>
<BR><BR>
<INPUT TYPE="submit" VALUE="Aceptar">
<INPUT TYPE="reset" VALUE="Borrar">
</FORM>
La pantalla que nos mostrará será la siguiente (con los días "lunes" y "miércoles"
seleccionados inicialmente):
Página 36 de 46
Curso de PHP
Página 37 de 46
Curso de PHP
$Apellidos=$_REQUEST['Apellidos'];
echo("Tu nombre es: '$Nombre'<BR>");
echo("Tus apellidos son: '$Apellidos'<BR>");
}else{ // No se ha enviado el formulario: lo pongo.
?>
<FORM ACTION="prueba.php" METHOD="POST">
Rellena tus datos:
<BR><BR>
Nombre:
<INPUT TYPE="text" NAME="Nombre" VALUE=""
SIZE="30" MAXLENGTH="20"><BR><BR>
Apellidos:
<INPUT TYPE="text" NAME="Apellidos" VALUE=""
SIZE="30" MAXLENGTH="20"><BR><BR>
<INPUT TYPE="submit" VALUE="Aceptar">
<INPUT TYPE="reset" VALUE="Borrar">
</FORM>
<?PHP
}
?>
Página 38 de 46
Curso de PHP
Ejercicio 3.1: Crear un formulario (en un único fichero) que nos pida nuestros nombre,
apellidos, sexo (RADIO), que vehículo tenemos: bicicleta, coche o moto (CHECKBOX),
y que estudios tenemos: ESO, Bachiller, Ciclo Formativo, o Universitario (SELECT).
Después mostrar los datos por pantalla.
El último paso para perfeccionar nuestra página PHP sería validar los datos
enviados en el formulario y en caso de que haya algún error (un campo está vacío y
debería contener algo, etc.) mostrar el formulario con los errores que hayan e
indicárselo al usuario.
Para ello la lógica del fichero PHP sería la siguiente:
si se ha enviado el formulario
si hay errores
mostrar formulario con errores
si no hay errores
procesaremos los datos del formulario
si no
mostraremos el formulario
Página 39 de 46
Curso de PHP
Capítulo 4. Cookies.
Como podemos ver se trata de una función que devuelve un valor booleano. Si
existe salida antes de llamar esta función, setcookie() fallará y devolverá FALSE.
Si setcookie() se ejecuta con éxito, devolverá TRUE. Esto no indica si el usuario
aceptó la cookie.
Las cookies deben ser enviadas antes de cualquier salida (ésta es una restricción
de protocolo). Esto requiere que coloque las llamadas a esta función antes de cualquier
salida, incluyendo las etiquetas <html> y <head> así como cualquier espacio en
blanco.
Antes de pasar a explicar sus argumentos obsérvese que sólo es obligatorio el
primer argumento: el "nombre" de la cookie.
nombre Nombre de la cookie.
valor Valor que contendrá la cookie.
expirar La hora en la que expira la cookie. Este valor es una marca de
tiempo Unix en segundos, es decir, para que la cookie expire dentro de 30
minutos deberemos ponerle el valor: time() + 30 * 60. Esto nos indica
que expirará dentro de 30 minutos (30 * 60) a partir de la hora actual
(time()).
ruta La ruta en el servidor en la que estará disponible la cookie. Si se define
como '/', la cookie estará disponible en el dominio completo. Si se define
como '/carpeta/', la cookie estará disponible únicamente al interior del
directorio '/carpeta/' y todos sus subdirectorios en el dominio como por
ejemplo '/carpeta/dibujos/'. El valor predeterminado es el directorio
actual en el que se define la cookie.
dominio El dominio en el que la cookie está disponible. Para lograr que la
cookie esté disponible en todos los subdominios de 'example.com' entonces
es necesario definir este valor como '.example.com'. El carácter '.' no es
requerido pero hace a la cookie compatible con más navegadores. Definir su
valor como 'www.example.com' hará que la cookie esté disponible
Página 40 de 46
Curso de PHP
Ejercicio 4.1: Realizar una página que la primera vez que la visite un usuario le
Página 41 de 46
Curso de PHP
solicite el idioma en la que quiere verla (español/inglés) y que sus siguientes visitas
vaya directamente a la página en el idioma seleccionado. La Cookie deberá expirar a
la semana siguiente.
Ejercicio 4.2: Realizas una página que cuando sea la primera vez que se visita
aparezca un mensaje: "NO habías visitado aún esta página...", y las siguientes veces
nos dirá "Has visitado la página X veces."
Página 42 de 46
Curso de PHP
Capítulo 5. Sesiones.
Hasta el momento, cuando visitamos una página, los valores de las variables sólo
se mantienen en esa página, pues el protocolo HTTP establece una conexión cada vez
que solicita una página y al recibirla cierra dicha conexión.
Si queremos mantener el estado de una conexión deberemos usar las "sesiones",
que nos permitirán mantener variables con sus correspondientes valores aunque
visitemos varias páginas (siempre que las páginas tengan definida una sesión).
Las funciones que nos permiten manejar sesiones son las siguientes:
session_start() Inicializa una sesión y le asigna un identificador de
sesión único. Si la sesión ya está iniciada, carga todas las variables de sesión.
Este código debe ser puesto antes de cualquier código HTML.
session_register(variable) Registra una variable de sesión.
session_unregister(variable) Elimina una variable de sesión.
session_is_registered(variable) Comprueba si una variable
está registrada. Devuelve true en caso afirmativo y false en caso contrario.
session_destroy() Cierra una sesión.
Antes de seguir deberemos tener en cuenta que en el fichero de configuración
"php.ini" deberemos tener el siguiente valor:
register_globals = Off
Ahora vamos a ver un ejemplo en el que tendremos 3 ficheros con sesiones.
Definiremos una variable de sesión en el primero, y la mostraremos en los tres ficheros.
Fichero principal: "prueba.php"
<?PHP
session_start();
$_SESSION['Variable']="ABCDEFGHIJKLM";
?>
<HTML>
<BODY>
Página inicial...<BR>
<?PHP
$Valor=$_SESSION['Variable'];
echo("La variable tiene el valor: $Valor<BR>");
?>
<A HREF="prueba2.php">Segunda página</A>
</BODY>
Página 43 de 46
Curso de PHP
</HTML>
Página 44 de 46
Curso de PHP
Página 45 de 46
Curso de PHP
Ejercicio 6.1: Realizar la página de una tienda que vende camisetas. En dicha página
podremos elegir entre camisetas de varios colores (negra, roja, azul y verde), para
cada una de ellas la talla (pequeña, mediana, grande y super) y la cantidad. Deberemos
de rellenar nuestros datos del pedido (nombre, dirección, población y provincia) y al
realizar el pedido se deberá comprobar que se han rellenado todos nuestros datos y que
al menos se ha pedido una camiseta. El resultado del pedido se almacenará en un
fichero de texto (Pedidos.txt). Intentar realizar el ejercicio en un solo fichero
(index.php).
Ejercicio 6.2: Volver a realizar el ejercicio anterior (Ejercicio 6.1: ) pero en este caso
la página principal nos debe pedir un usuario y una clave que estará definida dentro
del fichero ".php". En caso de que el usuario trate de acceder directamente a la
página que tiene el formulario de pedido, se mostrará un error y nos hará volver a la
página principal para pedirnos el usuario y la clave.
Ejercicio 6.3: Volver a realizar el ejercicio anterior (Ejercicio 6.2: ) pero ahora
definiremos dentro del fichero ".php" dos arrays que contendrán respectivamente la
lista de usuarios y claves que podrán acceder a la página de pedidos.
Página 46 de 46