Menú Cerrar

Tutorial en linea de PHP (Crea tu pagina web dinamica con php)

1-Introduccion a PHP

PHP es un lenguaje de scripting que permite la generacion dinamica de contenidos en un servidor web. El significado de sus siglas es HyperText Preprocessor. Entre sus principales caracteristicas cabe destacar su potencia, su alto rendimiento, su facilidad de aprendizaje y su escasez de consumo de recursos.

El codigo PHP debe incluirse dentro del codigo html de la pagina. Para delimitar la seccion de codigo PHP podemos hacerlo de varias formas:

-Usando las etiquetas <?php y <?
-Usando las etiquetas <? y ?>
-Mediante <script languaje=»php»> </script>

El funcionamiento de las paginas en PHP alojadas en un servidor es el siguiente:

-El navegador del cliente solicita el documento php
-Llega la solicitud del servidor y el servidor localiza el documento.Debido a la extension del documento lanza y ejecuta el interprete de PHP y ejecuta todo su codigo
-Una vez ejecutado el codigo se genera el resultado en HTML y lo devuelve al servidor para que lo transfiera al cliente
-El servidor transfiere el resultado en HTML y es mostrado en el navegador del cliente.

2-Variables

Una variable podria definirse como una posición de memoria creada para introducir o asignar cualquier valor o dato.Durante la ejecucion del script el valor de la variable puede «variar»(valga la redundancia) tanto de tipo como de valor.En PHP(al igual que en Javascript) no hace falta declarar la variable ya que simplemente anteponiendo el caracter $ a el nombre d la variable estamos indicando que es una variable.

Otro hecho que cabe destacara a la hora de programar en PHP y la declaracion de variables es que PHP es un lenguaje «CASE SENSITIVE» es decir que diferencia entre mayusculas y minusculas y debido a esta razon no seria lo mismo $miVariable=valor; que $MiVaRiABle=valor; ya que PHP lo interpretaria como dos variables completamente diferentes.

Los tipos de datos posibles que puede almacenar una variable son los siguientes :

Integer
Numeros enteros positivos y negativos
Double
Numeros decimales o de coma flotante
String
Cadenas de texto
Boolean
Valores True o False
Array
Tipo especial de coleccion de valores
Object
Tipo especial de dato complejo

En capítulos posteriores daremos cabida a los dos ultimos tipos de datos(array y object) que aqui no han sido explicados ni comentados apenas.

Convertir tipos

PHP es un lenguaje que realiza la conversion de tipos en funcion de los operandos y de el operador. De esta forma si intentamos sumar ’10’ y 20 la accion que realizaria seria convertir la primera variable a numérica y de esa forma podria sumar 10+20=30.

Aparte de que PHP en algunos casos realiza la conversion existen dos funciones especiales del propio lenguaje las cuales nos permiten saber el tipo de variable que estamos usando y tambien pueden convertir el tipo de variable:

gettype() Recibe el tipo de variable que es
settype($variable,’tipo variable’) Transforma el tipo de variable del modo actual a el modo que le introduzcamos.

Variables caracteristicas de PHP

argv
Array de argumentos pasados en la ejecucion del script.
argc
Numero de parametros pasados al script en su ejecucion.
PHP_SELF
Nombre del script que se esta ejecutando
HTTP_COOKIE_VARS
Array asociativo de pares (clave,valor) pasados a traves de cookies
HTTP_GET_VARS
Array asociativo de pares (clave,valor) pasados a traves de GET
HTTP_POST_VARS
Array asociativo de pares (clave,valor) pasados a traves de POST
HTTP_POST_FILES
Array asociativo que contiene informacion de los ficheros recibidos mediante POST
HTTP_ENV_VARS
Array asociativo de pares (clave,valor) del entorno
HTTP_SERVER_VARS
Array asociativo de pares (clave,valor) del servidor
HTTP_SESSION_VARS
Array asociativo de pares (clave,valor) de sesion

Constantes

Son valores que se van a mantener constantes a lo largo de la ejecucion del script y que posiblemente queramos usar a lo largo del script un gran numero de veces. Para ello usamos la siguiente sintaxis:

define(«nombre de la constante», valor);

 

3-Operadores en PHP

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

Operadores aritméticos
+
Suma dos valores
Resta dos valores (o pasa a negativo un valor)
*
Multiplica dos valores
/
Divide dos valores
%
Resto de dividir dos valores
++
Incremento en una unidad
Decremento en una unidad
Operadores de asignacion
=
Asigna a la parte derecha el valor izquierdo
+=
Realiza la suma de la derecha con la izquierda y la asigna a la derecha
-=
Realiza la resta de la derecha con la izquierda y la asigna a la derecha
*=
Realiza la multiplicacion de la derecha con la izquierda y la asigna a la derecha
/=
Realiza la division de la derecha con la izquierda y la asigna a la derecha
%=
Se obtiene el resto y se asigna
.=
Concatena el valor de la izquierda con la derecha y lo asigna a la derecha
Operadores lógicos
!
Operador NO o negacion.Si era true pasa a false y viceversa
and
Operador Y, si ambos son verdaderos vale verdadero
or
Operador O, vale verdadero si alguno de los dos es verdadero
xor
Verdadero si alguno de los dos es true pero nunca ambos
&&
True si ambos lo son
||
True si alguno lo es
Operadores condicionales
==
Comprueba si dos numeros son iguales
!=
Comprueba si dos numeros son distintos
>
Mayor que, devuelve true en caso afirmativo
<
Menor que, devuelve true en caso afirmativo
>=
Mayor o igual
<=
Menor o igual

4-Estructuras de control

A partir de ahora vamos a dotar de mas «dinamismo» a nuestros scripts ya que a partir de diversas estructuras indicaremos que accion debe realizar en cada caso, ademas tambien nos dara la posibilidad de realizar una misma accion multitud de veces con tan solo una linea de codigo.

Estructura IF

IF es una estructura de control utilizada para tomar decisiones segun se cumpla una condicion (o varias) o no. Su estructura básica es la siguiente:

if(condicion/es){
accion a realizar;
}
else{
accion a realizar en caso de que no se cumpla;
}

Veamos un ejemplo básico para entenderlo mejor:

if($edad>=18){
Comprar cerveza;
}
else{
echo «No puedes comprar cerveza porque no tienes 18 años»;
}

e incluso podemos realizar condicionales mas completas como el siguiente caso:

if(($edad>=18)&&($dinero>0)){
Puedes comprar cerveza porque tienes 18 y tu dinero es mayor que 0;
}
else{
echo «O no tienes pelas o no tienes los 18» ;
}

Estructura SWITCH

Toma distintas decisiones en funcion de distintos estados de la variable.Su sintaxis es la siguiente:

swithc(expresion){
case valor1:
sentencia a ejecutar cuando la expresion tiene como valor valor1
break
case valor2:
sentencia a ejecutar cuando la expresión tiene como valor valor2
break
case valor3:
sentencia a ejecutar cuando la expresión tiene como valor valor3
break
default:
sentencia que se ejecutar por defecto cuando no se cumpla ninguna de las condiciones anteriores

Bucle FOR

El bucle for se usa para repetir una misma operacion un número determinado de veces.Su sintaxis es la siguiente:

for(inicializacion;condición;actualización){
sentencia a ejecutar mientras se cumpla la condicion
}

El bucle for esta compuerto de 3 partes:
-Inicializacion: Se ejecuta tan solo al iniciar por primera vez el bucle.En esta parte se suele colocar la variable que contara el numero de veces que se repite el bucle.
-Condición: Es la condicion que se evaluara cada vez que se inicie el bucle.Esta condición es la que determina la duración del bucle.
-Actualizacion: Sirve para indiar los cambios que queremos ejecutar en las variables cada vez que se ejecuta el bucle.

Un ejemplo de su uso seria el siguiente:

for($i=1;i<=10;i++){
echo «El numero actual es».$i;
}

De esta forma escribiria todos los numeros contenidos entre 0 y 10.

Bucles WHILE y DO WHILE

Bucle WHILE
Este bucle se usa cuando queremos repetir la ejecución de unas sentencias un número indefinido de veces.Su sintaxis es la siguiente:

while(condicion){
sentencia a ejecutar
}

Para entender mejor el uso de while nos serviremos del siguiente ejemplo:

while($color != «rojo»){
color= dame un color;
}

Este es un ejemplo de lo que se puede hacer con while.En este caso siempre y cuando el color no sea rojo nos dira que introduzcamos un color.

Bucle DO…WHILE

Este bucle se usa cuando no sabemos el número de veces que va a ejecutarse un bucle pero lo que si tenemos claro es que por lo menos una vez si que se ejecutara la accion.Su sintaxis es la siguiente:

do{
sentencia del bucle
}while(condicion)

BREAK y CONTINUE

BREAK

Se usa para detener el bucle y dejar de interpretar el código que sigue despues de el break

CONTINUE

Sirve para volver al principio del bucle desde cualquier parte del bucle.

5-Funciones

Una de las herramientas mas importantes en cualquier lenguaje de programación son las funciones. Una funcion consiste en un conjunto de rutinas y acciones que a lo largo del script van a ser ejecutadas multitud de veces agrupados en una FUNCION y desde cualquier punto del script puede ser llamada y ejecutada.A su vez esta funcion puede recibir parámetros externos de los cuales dependa el resultado de una funcion.

Las funciones deben ser colocadas siempre antes de realizar la llamada a la funcion(como es logico).La sintaxis de una funcion es la siguiente:

function nombre(parametros){
instrucciones de la funcion
}
para llamar a la funcion seria de la siguiente forma: nombre(parametros)

Un ejemplo para entender el uso de funciones es el siguiente:
Crearemos una funcion que realice la suma de dos numeros y muestre el resultado

function sumar($sumando1,$sumando2){
$ suma=$sumando1+$sumando2
echo $sumando1.»+».$sumando2.»=».$suma;
}

sumar(5,6)

Un hecho relevante que cabe destacar es que las variables que declaremos dentro de la funcion solo existiran o tendran dicho valor dentro de la funcion.

Existen casos en los cuales no sabemos el número de parámetros que le pasaremos a la funcion y en estos casos debemos usar las funciones creadas al efecto como son:

func_num_args() Numero de parametros que se le han pasado a la funcion
func_get_args() Devuelve un elemento de los que forman la lista de argumentos

6-Inclusion de codigo desde un fichero

En ocasiones es necesario cargar el mismo archivo en diferentes scripts y de esa forma no repetir el mismo codigo en diversos scripts. Parece entonces razonable que debe existir algun metodo o forma de cargar algun archivo externo y de esa forma generar parginas web mas dinamicas.

A este efecto PHP dispone de dos instrucciones para poder cargar archivos:

Require(«archivo»);
Cuando se incluye un archivo con require el interprete abandona el modo PHP y entra en modo HTML, una vez abierto el fichero lo incluye hasta su ultima linea y posteriormente abandona el modo HTML para volver a posicionarse en el modo PHP. Su principal diferencia con include() es que no permite la carga condicional.

Include(«archivo»);
Cuando se incluye un archivo con require el interprete abandona el modo PHP y entra en modo HTML, una vez abierto el fichero lo incluye hasta su ultima linea y posteriormente abandona el modo HTML para volver a posicionarse en el modo PHP. Permite la carga condicional, es decir, que podemos cargar un archivo o otro segun si se cumple o no una condicion.

7-Matrices(array)

En la realizacion de un script en PHP en multiples ocasiones existen variables que tienen informacion similar y se procesan de forma semejante.Para ello php(y otros lenguajes) poseen un elemento denominado array.Un array es un conjunto de variables agrupadas bajo un unico nombre. Cada variable dentro de la matriz se denomina elemento.Dentro de la misma matriz pueden existir variables de diferentes tipos y no es necesario que sean todas del mismo tipo.

Hay que diferenciar entre los dos tipos de matrices existentes:
Indexada: Aquella cuyo acceso a los elementos se realiza por la posicion que ocupan dentro de la estructura(se inician siempre desde la posicion 0).Ejemplo: $amigos[0]
– Asociativa: Es aquella en la que los elementos están formados por pares clave-valor y el acceso se realiza proporcionando una determinada clave.Ejemplo: $amigos[‘edad’]

Para crear matrices en PHP existen dos formas:

-De forma implicita, que consistiria en indicarle el elemento(ya sea proporcionando su posicion o su clave).Ejemplo: $nombres[0]=’Javier’;
En caso de no indicarle una posicion el array tomara el valor siguiente al ultimo valor introducido.Ejemplo: $nombres[]=’Lucas’ // tomaria como valor 1 ya que lo ultimo introducido era 0.

-Mediante array() en el cual le pasamos los elementos como parametros.En caso de matriz indexada toman la posicion que ocupan en la creacion de la matriz, mientras que los de la matriz asociativa se les asigna su valor mediante «=>».Ejemplo: $amigo=array(‘Nombre’=>’Jose’ ‘Direccion’=’Neopatria 21’);

Cabe destacar que PHP no solo se limita a la existencia de matrices por si solo sino que existen matrices de matrices, o lo que es lo mismo,matrices multidimensionales.Ejemplo: $amigos[2][‘Pedro’]

Recorrido de una matriz

Disponemos de diversas herramientas para poder acceder a los elementos de una matriz.En cada momento se mantiene una referencia del elemento de la matriz al que se tiene acceso, por tanto, para recorrer una matriz bastara con modificar dicha referencia.En caso de una matriz indexada el recorrido se realizara mediante un bucle y para ello debemos saber el número de elementos totales que posee la matriz. Para ello nos basamos de la funcion count(variable) donde variable representa la variable de la que se quiere obtener el número de elementos.Si variable es una matriz devuelve el numero de elementos que tiene, devuelve 1 si solo tiene un elemento(aunque no sea matriz) y 0 si no tiene ningun valor.

Otra funcion que nos permite saber el número de elementos es sizeof(matriz) .
Para acceder a los elementos de una matriz asociativa debemos usar la funcion ecah() que recupera el par formado por clave y valor y ademas avanza una posicion de puntero.Su sintaxis es each(matriz) y los valores que devuelve la matriz asociativa son los siguientes:

Clave
Significado
0
Nombre de la clave
1
Valor asociativo de la clave
key
Nombre de la clave
value
Valor asociado a la clave

La funcion que realiza el constructor list(variable1,variable2…variableN) es asignar los valores del elemento actual de una matriz a las variables indicadas como parametro.

Navegacion sobre matrices

Cuando se trata de matrices indexadas la navegacion es sencilla ya que tan solo basta acceder al elemento que queremos mostrar, pero al tratarse de alguna matriz asociativa no se puede aplicar el mismo tratamiento. Para ello existen un conjunto de funciones pre fabricadas que nos permiten realizar multitud de acciones:

Sintaxis
Accion
reset(matriz);
El puntero interno vuelve a la primera posicion
end(matriz);
El puntero interno va a la ultima posicion
next(matriz);
El puntero va al elemento siguiente
prev(matriz);
Accede al elemento anterior
current(matriz);
Devuelve el contenido del elemento actual

Insercion de elementos

Para la inserción de elementos dentro de un array existen una serie de funciones que nos permiten añadir elementos.Entre ellas destacamos:

array_push(matriz,variable1,variableN);
Añade elementos al final de la funcion y su longitud se incrementara tantos elementos como se hayan añadido

array_unshift(matriz,variable1,variableN);
Añade elementos al principio de la función desplazando a los otros tantas posiciones como elementos haya.

array_pad(matriz,nuevo_tamaño,valor_relleno);
Aumenta el tamaño de la matriz empleando un valor proporcionado como relleno.

Eliminación de elementos

array_shift(matriz);
Elimina el primer elemento de la matriz

array_pop(matriz);
Elimina el ultimo elemento de la matriz

array_splice(entrada,pos_ini,[tamaño],[sustitutos]);
Se usa para reemplazar o borrar el contenido de una porcion de matriz, para ello debemos especificar la posicion desde la cual queremos iniciar el borrado o sustitucion, el tamaño o numero de elementos que se veran afectados y los sustitutos(en caso que deseemos sustituirlo por algun elemento).

array_keys(matriz,[valor buscado]);
Se emplea cuando deseamos eliminar un elemento cuya posicion desconocemos

array_values(matriz);
Devuelve una matriz indexada con todos los valores almacenados en la matriz pasada como parametro.

Manipulacion masiva de matrices

array_walk(matriz,nombre_de_la_funcion,lista_parametros);
Se emplea para realizar el mismo proceso definido en la funcion en todos los elementos incluidos.

Obtencion de submatrices

array_slice(matriz,posicion,tamaño);
Permite extraer una secuencia de elementos de una matriz.Los parametros a pasarle son la matriz en la cual queremos extraer dichos elementos,la posicion desde la que se inicia la extraccion y el tamaño de la extraccion(posiciones que abarcamos a partir de la inicial).

Ordenacion de matrices

Criterio
Funcion
Orden ascendente(matriz indexada)
sort(matriz)
Orden descendente(matrizi indexada)
rsort(matriz)
Orden ascendente por valor(matriz asociativa)
asort(matriz)
Orden descendente por valor(matriz asociativa)
arsort(matriz)
Orden ascendente por clave(matriz asociativa)
ksort(matriz)
Orden descendente por clave(matriz asociativa)
krsort(matriz)

Otras funciones

En este apartado se comentaran una serie de funciones(no todas porque seria imposible) que nos pueden servir en cierto momento.

compact() Devuelve una matriz asociativa a partir de un numero indeterminado de parametros
extract() Crea variables desde matriz asociativa
array_unique() Devuelve matriz sin datos repetidos ya que algunos se eliminan
array_reverse() Devuelve matriz con mismos elementos pero en orden inverso
shuffle() Modifica el orden de elementos de forma aleatoria
array_count_values() Devuelve una matriz asociativa que contiene frecuencias de repeticion de los valores de la matriz
in_array() Permite comprobar si un valor esta en la matriz
array_merge() Combina elementos de dos matrices en 1.

8-Cadena de caracteres

En este capítulo se comentaran todos los pormenores relacionados con cadenas de caracteres, las funciones existentes,etc.

Cadenas de caracteres

Una cadena consiste en una secuencia de caracteres que se encuentran comprendidos entre unos delimitadores que pueden ser:
-Comillas simples ‘ ‘
-Comillas dobles » »
-Documento incrustado <<< >>>

En caso de que se desee por ejemplo unas » » dentro de las comillas de la cadena de caracter es necesario realizar la accion que se denomina escapar un caracter que consiste en precederlo de una \ es decir \». Los caracteres especiales que pueden aparecer dentro de un documento con delimitacion son:

Secuencia
Significado
\n
Nueva linea
\r
Retorno de carro
\t
Tabulacion horizontal
\\
Barra invertida
\$
Signo de dolar
Comillas dobles
\[0-7]{1,3}
Carcter ASCII que coindice con el numero octal
\x[0-9A-Fa-f]{1,2}
Caracter ASCII que coindice con el numero hexadecimal

El caso de documento incrustado es diferente al de ambas comillas.Su sintaxis es la siguiente:

<<<Identificador
Cadena de caracteres
Identificador;

El resultado obtenido con documento incrustado es el texto mostrado igual que se ha introducido.

La funcion chr(valor) nos devuelve en una variable del tipo cadena el caracter de la tabla de codigos ASCII asociado a un valor que recibe como parametro, el valor que se pase debe estar entre 0 y 255.
La funcion ord(cadena) nos devuelve un numero entero que se corresponde con el codigo ASCII del primer caracter que recibe como parametro.

Visualizacion de cadenas

-Echo: Es el modo de visualizacion mas empleado.Su sintaxis es la siguiente: echo «texto»;
-Print: Es la mas sencilla de todas y se encarga de mostrar una cadena de caracteres sobre su salida estandar.No soporta ningun formato de salida y su sintaxis es: print(cadena);
-Printf(formato,[valores]); 
Su funcionamiento es el mismo que en el caso anterior, la unica diferencia es que este soporta formatos de salida como su alineacion(por defeto a la izquierda),valor numerico( numero minimo de caracteres que deben mostrarse),numero de decimales y tipo de datos cuyas posibilidades son:

Simbolo
Significado
%
Representa el simbolo del porcentaje
b
El argumento se trata como nº entero y se representa en codificacion binaria.
c
El argumento se trata como nº entero y se muestra el caracter cuyo codigo ASCII se corresponde con el valor.
d
El argumento se trata como nº entero y se representa en codificacion decimal sin parte fraccionaria
f
El argumento se trata como un nº de tipo double y se representa como un decimal sin coma flotante
o
El argumento se trata como un nº entero y se representa en codificacion octal
s
El argumento se trata y representa como una cadena de caracteres
x
El argumento se considera un nº entero y se representa en codificacion hexadecimal en minusculas
X
El argumento se considera un nº entero y se representa en codificacion hexadecimal en mayusculas

Sprintf(formato,[valores]); su funcionamiento es identico a printf lo unico que la cadena resultante de aplicarle un determinado formato se guarda en una variable.

Alteracion del contenido

En ocasiones es necesario emplear dichas funciones para alterar el formato de salida de las cadenas. Las funciones empleadas para modificar dicho formato son:

chop(cadena); Devuelve la cadena de caracteres con los caracteres de blanco y nueva linea eliminados
ltrim(cadena); Elimina los blancos que aparecen a la derecha de una cadena de caracteres
rtrim(cadena); Elimina los blancos que aparecen por la derecha en una cadena de caracteres
trim(cadena); Elimina los blancos que aparecen a izquiera y derecha de la cadena de caracteres
str_pad(cadena,longitud,relleno,lugar); Comprueba si la longitud es menor que el valor indicado, si es asi añade los caracteres necesarios.El lugar de añadir puede ser:
str_pad_left añade por la derecha(opcion por defecto), str_pad_right añade por la izquierda y str_pad_both añade por ambos extremos.
str_repeat(caracter,numero_veces); Repite un caracter el numero de veces indicado
strtolower(cadena); Pasa toda la cadena a letras pequeñas
strtoupper(cadena); Pasa toda la cadena a letras grandes
ucfirst(cadena); Pasa a mayuscula el primer caracter de una cadena
ucwords(cadena); Pone en mayusculas el primer caracter de cada palabra de la cadena
str_replace(subcadena1,subcadena2,cadena); Sustituye una palabra por otra dentro de una cadena
strtr(cadena,originales,traducidos); Traduce ciertos caracteres .Ejemplo: $persona=strt($persona,»áéíóú»,»a,e,i,o,u»); de esta forma cambiaria todas las vocales con acento por vocales sin acento.
substr_replace(cadena,nueva,comienzo,longitud); Sustituye una porcion del contenido de una cadena

Acceso al contenido

strlen(cadena); Indica el nº de caracteres de una cadena
count_chars(cadena,modo); Numero de repeticiones de un caracter en una cadena. Los modos posibles son:

0->Matriz indexada con frecuencia de aparicion de todos los caracteres del codigo ASCII
1->Matriz con caracteres ASCII con frecuencia mayor que 0
2->Matriz con caracteres que no aparecen en la cadena
3->Cadena con caracteres usados en el codigo ASCII
4->Cadena con caracteres no usados en el codigo ASCII

substr_count(cadena,subcadena); Frecuencia de aparicion de una cadena
-strchr(cadena,caracter); Devuelve la subcadena que comienza en la primera aparicion del caracter indicado
strstr(cadena,subcadena); Localiza subcadena dentro de la cadena original
stristr(cadena,subcadena); Igual que la funcion anterior pero sin distincion entre mayusculas y minusculas
strpos(cadena,subcadena); Primera ocurrencia de una cadena en otra
strrpos(cadena,subcadena); Ultima ocurrencia de una cadena en otra
ord(cadena); Devuelve el valor ASCII de un caracter
substr(cadena,comienzo,longitud); Porcion de texto que empieza en una posicion y tiene una longitud
strcmp(cadena1,cadena2); Compara dos cadenas siendo sensible a mayusculas y minusculas
strcasecmp(cadena1,cadena2); Compara dos cadenas sin ser sensible a mayusculas y minusculas
strncmp(cadena1,cadena2,tamaño); Compara los N primeros caracteres de una cadena
strnatcmp(cadena1,cadena2); Sensible a mayusculas y minusculas.Compara dos cadenas.
strnatcasecmp(cadena1,cadena2); No sensible a mayusculas y minusculas.Compara dos cadenas.
chunk_split(cadena,longitud,separador); Coge una cadena de caracteres e introduce separadores a una distancia determinada. No modifica el orgininal sino que es una funcion nueva.
explode(separador,cadena,limite); Permite obtener una matriz de cadenas de caracteres extraidas del original.
implode(separador,elementos); Junta en una cadena los elementos de una matriz usando como concatenacion el separador pasacdo como parametro.
parse_str(cadena); Permite extraer y crear variables que forman parte de una cadena que se corresponde con un «query string» recibido de una URL.

*Apoyo a HTML

addcslashes(cadena,lista); Devuelve una cadena que tiene escapados todos los caracteres como parámetro.
addslashes(cadena); Devuelve una cadena que tiene escapados todos los caracteres logicos
stripcslashes(); y stripslashes(); Reciben cadenas que pueden contener caracteres de de escapes y los desescapan
quotemeta(cadena); Esacapa los caracteres especiales
htmlspecialchars(cadena); Lleva a cabo conversiones como &->&amp,»->&quot
htmlentities(); Convierte todos los caracteres a html
get_html_translation_table(htmlentities o html_specialchars); Obtiene la relacion de traduccion de cada caracter especial.
array_flip(); Cambia el papal entre claves y valores de una matriz asociativa
get_meta_tags(nombre_fichero,include_path); Devuelve todos los meta tags que contiene un HTML.
strip_tags(cadena,mostrar_tags); Omite etiquetas PHP y HTML , lo de mostrar_tags son las cadenas HTML y PHP no deben ser omitidas en la lectura.
n12br(cadena); Permite sustituir saltos de linea por <br>
parse_url(cadena_url); Devuelve una matriz asociativa con los siguientes campos:

Campo
Significado
scheme
Http
host
Ip o DNS
port
puerto
user
nombre usuario
password
contraseña
path
path completo al recurso
query
query string con datos al recurso
urldecode
decodifica la informacion
urlencode
Codifica la informacion

9-Fechas

En este capítulo se estudiaran las funciones existentes en PHP para el empleo de fechas.Este tipo de funciones existen en la mayoria de lenguajes de programacion y van orientadas a su obtencion y representacion en diferentes formatos.

El tiempo en cualquier lenguaje de programacion se suele tomar con respecto al inicio de la «era UNIX» que es el 1 de enero de 1970 a las 00:00:00. La funcion mas sencilla que se basa en esta marca de tiempo es la funcion time() cuyo valor devuelto es el numero entero que representa la marca de tiempo correspondiente al instante en que se ejecuto la funcion con respecto a la era unix; en algunas aplicaciones es necesario poseer una marca de tiempo mas detallada y por ello usamos microtime() que devuelve una cadena de caracteres con los segundos y microsegundos. En caso de que quisieramos tener como valor de referencia la hora del ordenador desde el cual se ejecuta empleariamos la funcion gettimeofday() en la cual pasariamos como parametro interno: sec(para saber los segundos),usec(microsegundos),minuteswest(nº segundos al oeste de greenwich) y dstime(tipo de correccion en horarios de verano e invierno).

Estas funciones citadas anteriormente son poco utilizadas ya que la existencia de otras funciones mas completas como por ejemplo la funcion getdate() que obtiene una matriz asociativa con la informacion de la fecha y hora del sistema. Los elementos de dicha matriz son:

Clave
Contenido
seconds
Numero de segundos de la hora actual
minutes
Numero de minutos de la hora actual
hours
Numero de horas de la hora actual
mday
Dia correspondiente del mes
wday
Dia de la semana en valor numerico(empezando por 0)
mon
Mes del año en valor numerico.Del 1 al 12.
year
Valor numerico del año
yday
Dia del año en valor numerico
weekday
Cadena de caracteres que contiene el dia de la semana(en ingles)
month
Cadena de caracteres que contiene el mes del año(en ingles)
0
Marca de tiempo obtenida por la funcion getdate()

Si no le pasamos ningun parametro a la funcion entonces se considera la hora actual del sistema y si se recibe como parametro un numero entero entonces lo convierte a la fecha correspondiente.

Otra funcion para obtener la hora es la funcion localtime(marca_tiempo,tipo_matriz); cuyos valores pasamos a comentar a continuacion:

Indice
Clave
Contenido
0
tm_sec
Numero de segundos de la fecha indicada
1
tm_min
Numero de minutos de la fecha indicada
2
tm_hour
Numero de horas de la fecha indicada
3
tm_mday
Dia correspondiente del mes
4
tm_wday
Dia de la semana en valor numerico(empezando por 0)
5
tm_mon
Mes del año en valor numerico.Del 0 al 11.
6
tm_year
Valor numerico del año.(se ve afectado por el efecto 2000)
7
tm_yday
Dia del año en valor numerico
8
tm_isdst
Indica si esta activado el efecto del cambio de hora.

Formatos de fechas

Las funciones vistas anteriormente nos permitian convertir el valor entero de la fecha en un valor mas facilmente entendible, aunque para poder acceder a dicha informacion hay que pasar por el paso previo de obtener una matriz.Para evitar ese paso intermedio php pone a su disposicion la funcion date(formato,marca_tiempo); esta funcion nos devuelve una cadena de caracteres que se corresponde con una fecha a la que se ha aplicado un determinado formato. Para definir el formato de la fecha se dispone de las siguientes opciones:

Opcion
Descripcion
a
Hace que en la hora aparezca la cadena am o pm
A
Hace que en la hora aparezca la cadena AM o PM
d
Dia del mes con dos digitos desde 01 a 31
D
Dia de la semana como cadena de tres letras(en ingles).Ejemplo: «Mon»
F
Nombre del mes completo como una cadena de caracteres.Ejemplo: «March»
h
Hace que la hora aparezca en formato 01 a 12
H
Hace que la hora aparezca en formato 00 a 23
g
Hace que la hora aparezca en formato 1 a 12
G
Hace que la hora aparezca en formato 0 a 23
i
Hace que los minutos aparezcan en formato 00 a 59
j
Hace que el dia aparezca en formato 1 a 31
l(L min)
Dia de la semana completo.Ejemplo: Monday
L
Escribe 0 si no es año bisiesto y 1 si lo es
m
Hace que el mes aparezca en formato 01 a 12
M
Hace que el mes aparezca en formato 1 a 12
s
Hace que los segundos aparezcan en formato 00 a 59
S
Cadena de caracteres con el sufijo ordinal.Ejemplo: «th»,»nd».
t
Numero de dias del mes especificado de 28 a 31
U
Numero de segundos desde el comienzo de la «era UNIX»
w
Numero del dia de la semana de 0 a 6
Y
Año con cuatro cifras
y
Año con dos cifras
z
Dia del año de 0 a 365
Z
Obtiene la diferencia horaria en segundos con respecto al GMT

La funcion strftime() representa otra posibilidad para aplicar formatos a una fecha.Esta funcion utiliza las convenciones locales de la maquina desde la que se ejecuta el script para devolver una cadena con el formato definido en el idioma seleccoinado .Su formato queda definido por los siguientes valores:

Opcion
Descripcion
%a
Nombre del dia de la semana abreviado en el idioma actual
%A
Nombre del dia de la semana completo en el idioma actual
%b
Nombre del mes abreviado en el idioma actual
%B
Nombre del mes completo en el idioma actual
%c
Representacion de fecha y hora en el idioma actual
%d
Dia del mes en formato 01 a 31
%H
Hora como numero de 01 a 12
%I
Hora como numero de 01 a 12
%j
Dia del año como numero de 001 a 366
%m
Mes como numero de 01 a 12
%M
Minuto en numero
%p
am o pm segun la hora dada
%S
Segundos en numero
%U
Numero de la semana del año como el primer domingo como primer dia de la semana
%W
Numero de la semana del año como el primer lunes como primer dia de la semana
%w
Dia de la semana en numero de 0 a 6
%x
Representacion por defecto de la fecha sin hora
%X
Representacion por defecto de la hora sin fecha
%y
Año en numero de 00 a 99
%Y
Año en numero de cuatro cifras
%Z
Nombre o abreviatura de la zona horaria
%%
Caracer %

Estableciendo horas y fechas

Una vez conocida la forma de obtener la fecha actual, es necesario disponer de una forma de poder fijar una determinada hora para establecer por ejemplo la fecha de caducidad de una cookie, es decir, la forma de obtener una marca de tiempo correspondiente a una determinada hora.

Para ello php dispone de dos funciones que son mktime() y gmmktime() cuyo funcionamiento explicaremos a continuacion:

La funcion mktime(hora,minuto,segundo,mes,dia,año,[ajuste->0 horario de verano y 1 invierno]); nos devuelve un valor entero que representa la marca de tiempo UNIX de una determinada fecha.Cada uno de los valores mencionados puede omitirse siempre y cuando a partir del valor omitido no se representen mas valores a su derecha.
La funcion gmmktime() funciona de la misma forma lo que considera que los parametros representan una hora GMT.

La funcion setlocale(categoria,pais); nos permite establecer el idioma en los que apareceran la fecha,hora,etc. Las categorias posibles son:

Opcion
Descripcion
LC_TYPE
Conversion de cadenas a configuracion regional
LC_NUMERIC
Separadores numericos
LC_TIME
Para aplicar formatos de fecha y hora con strftime()
LC_ALL
Todos los anteriores

Validacion de fechas

Existen numerosas ocasiones en las que es necesario la creacion de un sistema para comprobar si la fecha introducida por el usuario es valida o no, para ello PHP nos brinda dos funciones capaces de realizar dicha comprobacion:

checkdate(mes,dia,año); Comprueba que la fecha introducida sea correcta
strtotime(cadena_fecha); Comprueba que la cadena de fecha sea correcta. Para ello la fecha debe estar en formato ingles, es decir, mm/dd/aa

10-Entrada y salida en PHP

Las operaciones de entrada/salida en PHP tienen una gran importancia en cualquier lenguaje de programacion ya que no tiene sentido que un lenguaje de programacion no pueda escribir,leer,actualizar datos de una base de datos,etc. En este capitulo nos centraremos basicamente en las operaciones de entrada y salida con archivos y posteriormente explicaremos las operaciones con bases de datos.

Supongamos que deseamos hacer una tienda de compra online, imaginemos el gran esfuerzo que supondria tener que modificar todas las paginas HTML de aquellos productos en los cuales en la temporada de oferta su precio se viera afectado. La solucion mas primitiva para el almacenamiento de datos es un fichero de texto, el contenido del fichero de texto puede ser cualquiera.

¿Como abrimos un fichero?

Para abrir un fichero PHP pone a disposicion una funcion.Su sintaxis es la siguiente:
fopen(fichero,modo); la ruta del fichero se indica en fichero 😛 y modo determina los diferentes modos de lectura de un archivo:

Atributo
Efecto
r
Solo lectura
r+
Lectura y escritura
w
Solo escritura.Borra el contenido anterior
w+
Lectura y escritura.Borra el contenido anterior.
a
Solo escritura.Conserva el contenido anterior.
a+
Lectura y escritura.Conserva el contenido anterior

¿Como se recorre un fichero?

Para leer un fichero logicamente la operacion es muy sencilla(consiste en ir leyendo todos los caracteres hasta llegar al EOF(end of file… final del archivo) el cual determina el final del texto). Al igual que en las matrices los ficheros poseen un cursor interno que indica su posicion actual con respecto a todo el texto. Para comprobar si se ha llegado al final del archivo PHP pone a nuestra disposicion de la funcion feof(fichero); que se encarga de comprobar si la posicion actual del fichero es la marca del final. La funcion mas generica de lectura es fread(fichero,nº_bytes); que se encarga de leer un numero determinado de bytes del fichero y delvolvernoslo en una cadena de caracteres, en cambio, si lo que pretendemos es leer el fichero caracter a caracter debemos usar la funcion fgetc(fichero); . Otras de las funciones mas caracteristicas son: fgets(fichero,nº bytes); que nos devuelve una cadena de caracteres con la informacion leida. fgetss(fichero,nº bytes,[mostrar_tags]); nos lee un fichero HTML omitiendo las etiquetas caracteristicas del codigo, en mostrar tags debemos introducir las etiquetas que deseamos que se muestren.

Si al realizar la lectura lo que se pretenden leer los valores que siguen un determinado formato de entrada nos podemos ahorrar un gran trabajo usando la funcion fscanf(fichero,formato,variables); esta funcion obtiene los datos de entrada de un fichero siguiendo un formato determinado, posteriormente dicha informacion debe ser tratada por el programador.
La ultima funcion que vamos a estudiar para abrir ficheros es la funcion file(nombre_fichero); con esta funcion no es necesario usar las funciones fopen() y fclose() ya que se ejecutan de forma implicita.

¿Como se cierra un fichero?

Cerrar es la ultima operacion que se debe realizar al manipular un fichero y permite cerrar la referencia que se hace al fichero en el script ejecutado. Para poder cerrar un fichero usamos la funcion fclose(fichero);

Escritura en ficheros

Para escribir en un fichero basicamente debemos realizar tres operaciones: abrir el fichero en modo escritura, realizar la operacion de escritura realizada, cerrar el fichero. Las funciones que empleamos para escribir en un fichero son fputs(fichero,cadena); y fwrite(fichero,cadena); que nos permiten añadir una cadena de caracteres al texto anterior contenido en el texto.

Acceso directo en ficheros

Existen un conjunto de funciones que nos permiten situarnos en una determinada posicion del fichero para leer a partir de ahi.
La funcion fseek(fichero,posicion); Nos permite empezar a leer un fichero a partir de una posicion segun se determine: seek_set(se toma con el principio del fichero),seek_cur(posicion actual),seek_end(posicion final).

Existen dos funciones basicas que nos posicionan al principio del fichero -> rewind(fichero); o que nos devuelven el valor actual de la posicion-> ftell(fichero);

Funciones variadas para el manejo de ficheros

fpassthru(fichero); Nos muestra el contenido referenciado por manejador de fichero.Devuelve el numero de bytes mostrados si no se produce ningun fallo.
set_file_buffer(fichero,tamaño); Determina el tamaño del buffer de ese archivo que usara PHP
readfile(fichero); Lee un fichero y lo muestra por el metodo de salida estandar

11-Operaciones con ficheros

En el desarrollo y administracion de sitios webs resulta bastante habitual tener que acceder a ficheros del servidor para manipularlos.Por esta razon en este capitulo vamos a describir las funciones creadas en PHP para realizar dichaws operaciones.

Cambio, creacion y borrado de directorios

chdir(ruta_al_directorio); nos permite cambiar el directorio activo a la ruta establecida como parametro.
mkdir(ruta_al_directorio,permisos); Esta funcion crea un nuevo directorio en la ruta que hemos indicado, el segundo parametro debe ser un numero octal y es por el que vienen determinados los permisos.
rmdir(ruta_directorio); Borra el directorio pasado como parametro.

Procesamiento de los elementos de un directorio

Supongamos que queremos realizar una operacion determinada como una busqueda,visualizacion,etc sobre todos los ficheros de un directorio.PHP nos proporciona una solucion a este problema: el manejador de directorios (representa una conexion logica con un directorio determinado que permite leer la lista con los nombres de los elementos contenidos en el directorio actual).

La funcion empleada para abrir un directorio es opendir(ruta); cuya funcion como ya se ha comentado es abrir el directorio de la ruta especificada.Una vez se ha ejecutado opendir() podemos realizar tres operaciones:

La funcion readdir(manejador); nos devuelve una cadena con el nombre del siguiente elemento del directorio ya sea un subdirectorio o un fichero.
La funcion rewinddir(manejador); procesa un directorio y situa el puntero interno en el primer directorio.
La funcion closedir(manejador); finaliza el tratamiento de entradas de directorio.

La clase dir

PHP nos proporciona una pseudoclase predefinida para el manejo de ficheros. Esta clase no aporta ninguna funcionalidad que no hayamos visto hasta este punto pero recopila todas las funciones a partir de una sola. Para poder trabajar con un directorio primero hay que crear una instancia de clase dir por medio de su constructor. $directorio=dir(ruta_directorio);

Este objeto cuenta con 3 metodos y 2 propiedades(las propiedades solo de consulta por lo que no pueden ser modificadas). Los metodos empleados son read(),rewind() y close()

Copiado,borrado y renombrado de ficheros

copy(fichero_origen,fichero_destino); Realiza una copia de un fichero
unlink(nombre_fichero); Elimina el fichero
rename(nombre_antiguo,nombre_nuevo); Renombra el fichero pasado como parametro.

Atributos de ficheros y directorios

Los ficheros y directorios poseen una serie de caracteristicas propias denominadas atributos. PHP pone a nuestra disposicion un conjunto de funciones que nos permitiran obtener informacion sobre los archivos o carpetas.

La funcion file_exists(elemento); Comprueba que el elemento pasado como parametro exista, el objetivo de la funcion filesize(nombre_fichero); nos informa sobre el tamaño del fichero en bytes.
La funcion fileatime(fichero); nos informa sobre el ultimo acceso al fichero.
La funcion filemtime(fichero); nos informa sobre la ultima modificacino del fichero.
La funcion filectime(fichero); nos informa sobre el ultimo cambio al fichero.
La funcion filetype(fichero); nos devuelve el tipo de elemento que estamos tratando. Los resultados posbiles que puede devolver son:

Resultado
Significado
block
Dispositivo de bloques
char
Caracteres
dir
Directorio
fifo
FIFO
file
Fichero
link
Enlace
unknown
Desconocido

Chmod(elemento_directorio,permisos); recibe como parametro el elemento y los permisos que deseamos otorgarle a dichos elementos

12-El lenguaje SQL

En este capitulo nos dedicaremos a explicar el lenguaje SQL ya que posteriormente lo usaremos mucho en las conexiones de PHP con MYSQL.

Creacion y modificacion de Tablas en SQL

Mysql esta organizado a partir de tablas y dichas tablas contienen campos. Cada campo es capaz de contener un tipo de dato. Los tipos de datos que es posible crear en el lenguaje SQL son:

Tipo
Descripcion
Tinyint[Unsigned]
Entero de 0 a 255 o de -128 a 128
Smallint[Unsigned]
Entero de 0 a 65535 o de -32768 a 32768
Int o Integer
Entero normal.Rango de -2147483648 a 214783648
Float[ (M,D) ]
Numero de coma flotante de simple precision si no se pasa ningun argumento M es el nº de digitos y D el nº de decimales
Double [ (M,D) ]
Numero de coma flotante de doble precision. Siempre dispon de signo M y D
Decimal [ (M [,D]) ]
Numero almacenado como cadena de caracteres M es el numero total de digitos y D el nº de decimales
Date
Tipo fecha.Admite formatos «AAAA-MM-DD» o «AA-MM-DD» o «AAMMDD»
Time
Tipo hora.Admite formato «HH:MM:SS» o «HHMMSS» o «HHMM» o «HH»
Char(longitud)
Cadena de caracteres de la longitud indicada.Se reserva el espacio en caracteres aunque no se usen
Varchar(longitud)
Cadena de caracteres de la longitud indicada que se almacena con su ocupacion.Maximo longitud: 255 caracteres
Blob
Tipo destinado a almacenar bits sin intrepretar.Se usa para almacenar texto mas largo de 255 caracteres.Diferencia mayusculas de minusculas.
Text
Tipo destinado a almacenar bits sin intrepretar.Se usa para almacenar texto mas largo de 255 caracteres.No diferencia mayusculas de minusculas.

Para crear una tabla usaremos la siguiente sintaxis:

CREATE TABLE Nombre_tabla
(Campo1  Tipo_dato  Not Null,
Campo2 Tipo_dato,
PRIMARY KEY (Campo3));

Esto nos crearia una tabla con 3 campos de los cuales Campo3 es un valor unico, es decir, que no puede ser sobreescrito.

Para eliminar una tabla usaremos:

DROP TABLE Nombre_tabla;

Para modificar la estructura de la tabla usaremos la siguiente sintaxis:

ALTER TABLE Nombre_tabla
[ADD Nombre_atributo Definicion]    //Añadiria un nuevo campo
[CHANGE AntiguoNombreAtributo NuevoNombreAtributo Definicion]    //Cambiaria un campo
[DROP NombreAtributo];    //Borraria un campo

Los indices son una estructura de acceso que permiten organizar los datos contenidos en una tabla. Para crear un indice usariamos la siguiente sintaxis:

CREATE [UNIQUE] INDEX NombreIndice
ON Tabla (Campos);

Manipulacion de datos

-Insercion de datos

Para insertar datos en la tabla se realiza mediante el comando insert y su sintaxis es la siguiente:

INSERT INTO NombreTabla [Campo1,Campo2…CampoN] VALUES (Valor1,Valor2…ValorN);

Consultas de datos

Para esta accion usamos el comando SELECT y la sintaxis es la siguiente:

SELECT ([*]/[Atributos]) FROM Tabla/s [WHERE ListaCondiciones] [GROUP BY Campo] [HAVING ListaCondiciones] [ORDER BY Campo]

Existen un conjunto de funciones dentro de las consultas de datos que nos permiten obtener informacion o realizar operaciones con respecto a las filas.Las funciones son:

Funcion
Descripcion
COUNT(*/DISTINCT Campo)
Cuenta el numero de filas
SUM(Campo)
Suma los valores del atributo indicado
AVG(Campo)
Obtiene la media aritmetica del atributo
MAX(Campo)
Obtiene el valor maximo del atributo
MIN(Campo)
Obtiene el valor minimo del atributo

Eliminacion de datos

Para eliminar datos usamos la sentencia DELETE cuya sintaxis es la siguiente:

DELETE FROM NombreTabla [WHERE Condicion];

13-Conexion con Mysql

Una vez que ya hemos explicado un poco por encima todas las operaciones posibles y lógicas que podemos hacer con una base de datos en el lenguaje SQL llega el momento de combinarlo con la potencia de PHP y para ello usaremos el programa Mysql.

Mysql es uno de los gestores de bases de datos mas utilizados en entornos en los cuales se emplea PHP ya que php dispone de numerosas funciones que se compaginan perfectamente con mysql.La forma generica de obtener informacion de tablas en Mysql es la siguiente:

-Conexion con el gestor.
-Preparacion de la consulta SQL.
-Ejecucion de la consulta.
-Procesamiento del resultado obtenido en el cursor.
-Liberacion de recursos(esta es opcional, aunque es recomendable).
-Cierre de la conexion con el gestor.

Para realizar estas y otras muchas mas cosas disponemos de las siguientes funciones:

Funcion
Descripcion
mysql_connect(«host»,»usuario»,»password»)
Establece la conexion con el servidor. Recibe el host y el usuario y contraseña con el que debe conectar.
mysql_select_db(«base de datos»,conexion)
Selecciona la base de datos sobre la cual se va a trabajar
mysql_query(consulta,conexion)
Ejecuta la consulta SQL indicada como primer parametro.
mysql_num_fields(cursor)
Devuelve el numero de atributos que figuran en el cursor que se le pasa como parametro y en el que se almacena el resultado de la consulta
mysql_fetch_row(cursor)
Avanza a la siguiente posicion de la fila en cursor.Devuelve un array que contiene en sus celdas cada uno de los valores de los atributos de la fila.
mysql_free_result(cursor)
Libera los recursos asociados al cursor.
mysql_close(conexion)
Cierra la conexion establecida con mysql_connect.

Una de las ventajas que proporciona la altisima integracion que PHP y MYSQL tienen es la existencia de funciones que permiten al programador acceder a las diferentes estructuras que conforman la base de datos. Algunas de las funciones son:

Funcion
Descripcion
mysql_list_dbs(conexion)
Devuelve en un cursor los nombres de las bases de datos disponibles en el servidor al que se haya conectado con mysql_connect
mysql_list_tables(base_datos,conexion)
Devuelve en un cursor los nombres de las tablas disponibles en la base de datos.
mysql_tablename(cursor,numero_fila)
Devuelve el nombre de la tabla o base de datos en la que esta el cursor indicado
mysql_field_name(cursor,numero_col)
Devuelve el nombre del campo cuyo indice se pasa como segundo parametro
mysql_field_type(cursor,numero_Col)
Devuelve el tipo del campo cuyo indice se pasa como sgundo parametro
mysql_field_len(cursor,numero_col)
Devuelve la longitud del campo cuyo indice se pasa como segundo parametro
mysql_field_flags(cursor,numero_col)
Devuelve una serie de indicativos correspondientes a caracteristicas del atributo cuyo indice se pasa como segundo parametro
mysql_affected_rows(conexion)
Devuelve el numero de filas afectadas por una actualizacion o borrado
mysql_change_user(usuario,password)
Cambia de usuario
mysql_create_db(basedatos)
Crea una base de datos con el nombre pasado por parametro
mysql_drop_db(basedatos)
Elimina la base de datos pasada por parametro
mysql_insert_id(cursor)
Devuelve el valor generado para un AUTOINCREMENT

14-Sesiones

Generalmente una web se compone de una serie de paginas entre las que existe alguna relacion. Un ejemplo claro es una pagina en la cual es necesario estar registrado para poder acceder a ellas ya que en funcion de la categoria del usuario nos permitira acceder a unas secciones o otras, en estas aplicaciones sera necesario ir comprobando los permisos de usuario y para ello usamos un elemento en PHP denominado «sesiones».

Una sesion se inicia cuando un usuario entra en la aplicacion web y finaliza cuando el usuario abandona la aplicacion(mas adelante comprenderemos lo de «abandonar aplicacion»), durante todo ese tiempo podemos manipular una serie de variables que se inician al iniciar la sesion y mantener un tipo de informacion comun entre todas las paginas(en el caso de el usuario registrado seria los privilegios que posee).Para mantener esta informacion constante es necesario que los datos se guarden en un fichero ya sea en el cliente(cookies) o en el servidor(en caso de que tenga desactivado las cookies).
Para el problema que consiste en diferenciar los diferentes usuarios existe una solucion muy basica que consiste en un identificador de sesion diferente en cada caso.

Este identificador de sesion debe ser enviado de una pagina a otra para mantener la sesion activa(a menos que en la configuracion del servidor tengamos activada la opcion session_trans_id) y tambien es necesario pasar el identificador de sesion en los formularios como un campo HIDDEN.
Ejemplos:

-Hipervinculo
<a href=»pagina.php?<? =SID ?>»>Entrar</a>
-Formulario
<input type=»hidden» name=»session_name()» value=»SID»>

Funciones de gestion de sesiones

Funcion
Significado
session_start();
Si es la primera solicitud genera un identificador de sesion aleatorio cuyo nombre sera sess_IDSESION; si es otra solicitud continua la sesion iniciada anteriormente.
session_destroy();
Elimina todos los datos asociados con una sesion, borra el archivo en el servidor pero no borra la cookie.
session_register(nombre);
Recibe como parametro una serie de nombres de variable globales y los registra como variables de sesion en el fichero del servidor
session_unregister(nombre);
Eliminamos la variable global introducida y se elimina el contenido de esta variable en el fichero del servidor.Sin pasar el parametro nombre eliminaremos todas las variables de la sesion.
session_is_registered(nombre);
Devuelve true en caso de que en la sesion se encuentre registrada una variable con dicho nombre.
session_unset();
Dejamos sin ningun valor asignado a todas las variables de la sesion
session_id([nombre]);
Si no le proporcionamos ningun parametro nos da el identificador de sesion; si le proporcionamos el parametro nombre cambia el valor del identificador por el parametro nombre.
session_name([nombre]);
Si se invova sin parametro devuelve el nombre de la variable interna que tiene el id de sesiones; si se pasa parametro cambia el nombre de la sesion.
session_get_cookie_params();
Permite definir nuevos valores para los parametros de configuracion de las cookies.Para que el cambio sea permanente hay que invocar el cambio en todos los documentos.
session_cache_limiter([cache_limiter]);
Si se le proporciona valor modifica el valor por defecto en cambio sino se muestra el cache que tiene por defecto.
session_encode();
Devuelve una cadena con la informacion de una sesion, despues de usar esta funcion la informacion de la sesion queda actualizada
session_decode(cadena);
Descodifica la cadena que recibe como parametro y que contiene la info de sesion, despues de usar esta funcion se actualiza la info de sesion.
session_save_path([path]);
Devuelve el camino al directorio donde se guardan los ficheros asociados a la sesion.El efecto solo dura en el script actual.
session_module_name([modulo]);
Devuelve el nombre del modulo que se usa para realizar la gestion de sesiones.Cuando se invoca un parametro se usa como nuevo gestor de sesiones.
session_set_save_handler(open,close,read,write,destroy,gc);
Permite definir su propio manejador para almacenar la informacion asociada con una sesion.De esta forma los datos pueden ser metidos en una BD en vez de en un fichero.Tenemos que pasarle como parametro toda la informacion necesaria para crear y destruir sesiones.

Redes Sociales


Publicado en Soporte Tecnico

Te puede interesar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *