Redirección basada en el remitente o IP con PHP Uso de PHP puede redirigir fácilmente sus visitantes a una página diferente dependiendo de dónde vienen.Sin categoría 

PHP, Funciones

PHP, Funciones

 

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

 

  • Bloque de código parametrizado que puede o no retornar un valor
  • PHP cuenta con una gran cantidad de funciones predefinidas para usar
  • Las funciones no poseen un tipo de dato preestablecido
  • No es necesario que sean definidas antes de invocarlas
  • Pueden tener o no argumentos

 

Ejm 1:

 

function nombreFuncion(arg1, arg2,…, argN)

{

   //bloque de código

}

 

Instrucción return;

 

  • Al llamar una función esta se ejecutará de comienzo a fin y seguirá corriendo la próxima línea después de su llamada
  • Para terminar la ejecución de una función se utiliza return el cual puede o no devolver un valor
  • La instrucción return devuelve solo un valor, para retornar varios valores se puede retornar un array o tabla

 

Ejm 2:

 

function mayor($x, $y)

{

   if($x > $y)

      return $x . » es mayor que » . $y;

   else

      return $y . » es mayor que » . $x;

              echo «hola»;

}

 

Pase de Parámetros

  • Parámetros pasados por valor no se modifican sumar($x,$y);
  • Por defecto todos los parámetros se pasan por valor
  • Parámetros por referencia se modificarán sumar(&$x,$y);
  • Para que un parámetro de una función siempre se pase por referencia, se antepone un ampersand (&) al nombre del parámetro en la definición de la función function sumar(&$x,$y){…

 

Función Fecha: date();

 

Carácter de formato

Descripción

Valores de ejemplo devueltos

d

Día del mes, 2 dígitos con ceros iniciales

01 a 31

D

Una representación textual de un día, tres letras

Mon a Sun

j

Día del mes sin ceros iniciales

1 a 31

l

Una representación textual completa del día de la semana

Sunday a Saturday

S

Sufijo ordinal en inglés del dia del mes, 2 caracteres

st, nd, rd o th. Funciona bien con j

w

Representación numérica del día de la semana

0 (para el Domingo) a 6 (para el Sábado)

z

El día del año (comenzando en 0)

0 a 365

W

Número de la semana del año ISO-8601, las semanas comienzan en Lunes (agregado en PHP 4.1.0)

Ejemplo: 42 (la 42va semana del año)

F

Una representación textual completa de un mes, como January o March

January a December

m

Representación numérica de un mes, con ceros iniciales

01 a 12

M

Una representación textual corta de un mes, tres letras

Jan a Dec

n

Representación numérica de un mes, sin ceros iniciales

1 a 12

t

Número de días en el mes dado

28 a 31

L

Indica si es un año bisiesto

1 si es un año bisiesto, 0 de lo contrario.

Y

Una representación numérica completa de un año, 4 dígitos

Ejemplos: 1999 o 2003

y

Una representación de dos dígitos de un año

Ejemplos: 99 o 03

a

Ante meridiano y Post meridiano en minúsculas

am o pm

A

Ante meridiano y Post meridiano en mayúsculas

AM o PM

B

Hora Swatch Internet

000 a 999

g

formato de 12-horas de una hora sin ceros iniciales

1 a 12

G

formato de 24-horas de una hora sin ceros iniciales

0 a 23

h

formato de 12-horas de una hora con ceros iniciales

01 a 12

H

formato de 24-horas de una hora con ceros iniciales

00 a 23

i

Minutos con ceros iniciales

00 a 59

s

Segundos, con ceros iniciales

00 a 59

e

Identificador de zona horaria (agregado en PHP 5.1.0)

Ejemplos: UTC, GMT, Atlantic/Azores

I

Indica si la fecha están en hora de ahorro de luz diurna

1 si es Hora de Ahorro de Luz Diurna, 0 de lo contrario.

O

Diferencia con la hora Greenwich (GMT) en horas

Ejemplo: +0200

T

Configuración de zona horaria de esta máquina

Ejemplos: EST, MDT …

Z

Desplazamiento de la zona horaria en segundos. El desplazamiento para zonas horarias al oeste de UTC es siempre negativo, y el de aquellas al este de UTC es siempre positivo.

-43200 a 43200

c

Fecha ISO 8601 (agregada en PHP 5)

2004-02-12T15:19:21+00:00

r

Fecha en formato RFC 2822

Ejemplo: Thu, 21 Dec 2000 16:01:07 +0200

U

Segundos desde el Epoch Unix (January 1 1970 00:00:00 GMT)

Vea también time()

Esta información se encuentra en: http://www.php.net/date.php

 

 

Funciones de Cadena.

 

  • Función chr, string chr(int ascii); Devuelve el carácter ASCII asociado al entero pasado por parámetro, chr(64); //retorna @
  • Función ord, int ord(str cadena); Devuelve el valor ASCII del primer carácter de la cadena, ord(«hola como estas»); //retorna el numero 104
  • Función strlen, int strlen(string cadena); Devuelve la cantidad de caracteres que tiene la cadena, strlen(«HoLa»); //retorna 4
  • Función strstr, string strstr(string pajar, string aguja); Devuelve todo el pajar desde la primera aparición de la aguja hasta el final. Si la aguja no es hallada, retorna false, strstr(«Hola como estas», «m» ); //retorna “mo estas”
  • Función strcmp, int strcmp(string cadena1, string cadena2); Devuelve un numero < 0 si cadena1 es menor que cadena2; >0 si cadena1 es mayor que cadena2 y 0 si son iguales. Esta comparación es binaria y es sensible a mayúsculas y minúsculas, strcmp(«hola», «Hola»); //retorna 1
  • Función trim, string trim(string cadena); Elimina los espacios en blanco del comienzo y del final de la cadena, trim(» hola como estas «); //retorna “hola como estas”
  • Función substr, string substr(string cadena, int ini [,int long]); Devuelve la porción indicada por ini tantos caracteres indique long. Si no se especifica long, devolverá hasta el final. Si ini es positivo se contará de izquierda a derecha el número de caracteres, si es negativo se comienza de derecha a izquierda,     substr(«Hola como estas», -3, 2); //retorna “ta”
  • Función nl2br, string nl2br(string cadena); Devuelve la cadena con “<br>” insertados antes de cada nueva línea, nl2br(«hola como\n estas»);  //retorna “hola como<br>\n estas”
  • Función strpos, int strpos(string pajar, string aguja[, int desplazamiento]); Indica la posición de la aguja en el pajar, si no es hallada retorna false. Se puede buscar el la aguja sin tener en cuenta los caracteres anteriores al desplazamiento, strpos(«abcdef abcdef» , «a»);           //retorna 1 – strpos(«abcdef abcdef» , «a», 1); //retorna 7
  • Función strrchr , string strrchr(string pajar, string aguja); Devuelve la cadena desde la ultima aparición del string aguja en el pajar, strrchr(«/direccion/del/archivo/archivo.php», «/»);  //retorna «/archivo.php»

 

 

Manejo de Archivos.

 

Habrá muchas ocasiones en las que nos interese acceder a ficheros, bien para recuperar sus datos, bien para escribir en ellos. Piensa por ejemplo en contadores de hits, libros de visitas, logs, o simplemente web fetching (recuperar datos de otra web para incluirlos en la tuya). En esta sección veremos las funciones mas usuales para estos fines

 

Apertura de un archivo.

La función utilizada para abrir un archivo en PHP es fopen, y su sintaxis:
file_handler=fopen(“nombre_de_archivo”,”modo”);
Donde file_handler es el puntero que se crea sobre el archivo, nombre_de_archivo es la ruta y nombre del archivo a abrir, y modo se refiere a los diferentes modos escritura/lectura.

Los modos en los que se puede abrir un archivo son:

  • r Sólo lectura. El puntero al comienzo del archivo
  • r+ Lectura y escritura; apuntador al inicio del archivo
  • w Sólo escritura, si no existe el archivo lo crea, si existe lo convierte en fichero de longitud cero y el apuntador se coloca en el inicio (sobreescribe el contenido, vamos)
  • w+ Lectura y escritura, si existe lo trunca a tamaño cero, y se situa al inicio, si no existe lo crea
  • a Modo append, sólo escritura, si no existe lo crea. Si existe, el apuntador se coloca al final del ficero (listo para escribir a continuacion del contenido)
  • a+ Modo append, lectura y escritura, si no existe lo crea; apuntador al final del archivo
  • b es un flag adicional a cualquiera de los anteriores que indica que vamos a operar sobre un archivo binario (en contraposicion a archivo de texto) como una imagen o un sonido. En algunos sistemas operativos como linux no existe esta diferencia asi que el indicador b será ignorado.

 

La función devuelve un file_handler que luego debe ser usado en todas las funciones de tipo fgets, fputs, fclose, fread, fwrite, etc.  Con fopen podemos abrir ficheros locales o remotos. Si nombre_de_archivo comienza con «http://» (o HTTP://), php abre una conexión HTTP hacia el servidor especificado y se devuelve un apuntador de fichero al comienzo del texto de respuesta. Asi puedes acceder (en modo lectura solamente) a ficheros de otros servidores. La dirección en estos casos debe ser completa.

Si nombre_de_archivo comienza con «ftp://» (o FTP://), se abre una conexión ftp hacia el servidor indicado.

Si nombre_de_archivo empieza de cualquier otra forma, php considera que se trata de una ruta a un fichero local y intenta recuperarlo. Si la operación falla (no existe el fichero en esa ruta, o no se puede abrir) la función devuelve FALSE.

Advierte que en todos los casos nos referimos no solo a la apertura de un fichero, sino a la obtención de un puntero o apuntador a su contenido. fopen solo debe usarse para abrir un archivo cuyo contenido vamos a manipular. Si unicamente queremos recuperar su contenido (y por ejemplo mostrarlo en pantalla), hay otras funciones mas adecuadas.

 

Cerrar el archivo: fclose()

Con fclose cerramos el apuntador adquirido sobre un fichero previamente abierto con fopen. Su sintaxis es fclose (file_handler)

Es muy importante cerrar el fichero al terminar de operar con el, para evitar deterioro de los datos.

 

Veamos un ejemplo:

<?php
//vamos a ir construyendo un contador básico
//abrimos «contador.txt» en modo lectura

if ($file = fopen( «/otros/contador.txt»,  «r»)) { 

// tenemos un puntero ($file) sobre contador.txt
// apunta al comienzo … Aqui incluiriamos código para recuperar datos

    fclose($file); // hemos terminado, cerramos el apuntador

// Abrimos el archivo de nuevo, ahora en modo escritura. 

if ($file = fopen( «/otros/contador.txt»,  «w»)) { 

// tenemos nuevo apuntador. Aqui iria el código que sobreescribiria 
// el archivo con los nuevos datos. 

    fclose($file); //hemos terminado, cerramos el archivo. 

?>

 

Como habrás advertido, $file no es el nombre del archivo, es nuestro apuntador (file handler) al contenido del mismo. Y en otra sección abordaremos como leer y escribir el fichero. Como recordatorio final, si tienes que indicar la ruta a un fichero en un entorno windows, recuerda que si usas barras invertidas \ tienes que incluir la barra adicional de escape \\.

 

Funciones de gestión de archives

Función

Descripción

Sintaxis

Copy

Copia un archive

copy($origen,$destino)

Rename

Cambia el nombre del archivo de $antes a $despues

rename($antes,$despues)

Unlink

Borra el archivo

unlink($archivo)

 

Funciones para la lectura de archivos

Función

Descripción

Sintaxis

Fopen

Abre un archivo y le asigna un identificador id. Veremos el modo más adelante

$id = Fopen($archivo, $modo)

Fgets

Lee una línea de un archivo hasta un numero máximo de caracteres

fgets($id,$max)

Fwrite

Escribe una cadena dentro del archivo

fwrite($id, $cadena)

Fseek

Avanza o retrocede el puntero del archivo un cierto numero de posiciones

fseek($id,$posiciones)

Feof

Comprueba si el puntero que lee el archivo ha llegado al final

feof($id)

fpassthru

lee completamente el archivo y lo muestra

fpassthru($id)

Fclose

Cierra el archivo abierto previamente

fclose($id)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Práctica  1:

 

Encuesta

Crear un formulario con la siguiente estructura, pagina encuesta.php.

 

<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>

<html xmlns=»http://www.w3.org/1999/xhtml»>

<head>

<meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″ />

<title>Documento sin título</title>

</head>

<body>

<form action=»guarda_encuesta.php» method=»post» enctype=»multipart/form-data»>

<table width=»352″ border=»1″ align=»center» cellpadding=»0″ cellspacing=»0″>

<tr>

<td colspan=»4″ align=»center»>Encuesta</td>

</tr>

<tr>

<td colspan=»4″ align=»center»>¿Qué piensa del futuro de Venezuela?</td>

</tr>

<tr>

<td width=»83″>Excelente

<input type=»radio» name=»encuesta» id=»radio» value=»excelente» /></td>

<td width=»80″>Buena

<input type=»radio» name=»encuesta» id=»radio2″ value=»buena» /></td>

<td width=»85″>Regular

<input type=»radio» name=»encuesta» id=»radio3″ value=»regular» /></td>

<td width=»94″>Mala

<input type=»radio» name=»encuesta» id=»radio4″ value=»mala» /></td>

</tr>

<tr>

<td colspan=»4″ align=»center»><input type=»submit» name=»enviar» id=»enviar» value=»Enviar» /></td>

</tr>

</table>

</form>

</body>

</html>

 

Crearemos el archivo guarda_encuesta.php, que guardara los resultados de la encuesta en un archivo de texto.

 

<?php

$archivo1=file(«encuesta.txt»);

$lineas1=count($archivo1);

$id=fopen(«encuesta.txt»,»a»);

 

if($lineas1) $cadena=»\n».$_POST[‘encuesta’];

else $cadena=$_POST[‘encuesta’];

 

$cadena.=» , «.$_SERVER[‘REMOTE_ADDR’].» , «.date(«d/m/Y h:i:s a»);

fwrite($id,$cadena);

fclose($id);

 

$archivo=file(«encuesta.txt»);

$lineas=count($archivo);

for($i=0;$i<$lineas;$i++)

{

            $arr=explode(«,», $archivo[$i]);

            switch(trim($arr[0]))

            {

                        case «excelente»:

                        $excelente++;

                        break;

                        case «buena»:

                        $buena++;

                        break;

                        case «regular»:

                        $regular++;

                        break;

                        case «mala»:

                        $mala++;

                        break;

            }

}

?>

<table border=»1″ align=»center» cellpadding=»6″>

<tr>

<td colspan=»4″ align=»center»><b>Resultados de <?php echo $lineas;?>Cargas</b></td>

</tr>

<tr>

<td><b>Excelente</b></td>

<td><b>Buena</b></td>

<td><b>Regular</b></td>

<td><b>Mala</b></td>

</tr>

<tr>

<td><?php echo $excelente.»-«.number_format(($excelente*100/$lineas),2,»,»,».»);?></td>

<td><?php echo $buena.»-«.number_format(($buena*100/$lineas),2,»,»,».»);?></td>

<td><?php echo $regular.»-«.number_format(($regular*100/$lineas),2,»,»,».»);?></td>

<td><?php echo $mala.»-«.number_format(($mala*100/$lineas),2,»,»,».»);?></td>

</tr>

</table>


 

Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 

Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Related posts