Desarrollo de aplicaciones WEB

PHP 2

Departamento Informática y Sistemas

PHP

Funciones para manejo del tiempo, fecha y hora

time, date

Permiten mostrar o capturar la fecha y hora


time devuelve la hora GMT medida como el número de segundos desde el uno de Enero de 1970 00:00:00 GMT (hora del meridiano de Greenwich) obtenidos a partir de la hora actual local del servidor

date muestra la fecha en el formato que se le indique

Ejemplo:

<?php
$time = time();
echo date("d-m-Y (H:i:s)", $time);
?>

PHP

Funciones para manejo del tiempo, fecha y hora

Para representar el día de la semana:

Formato

Significado

Valores que devuelve

d (minúscula)

Día del mes, con 2 dígitos. Si es menor de 10, lleva un 0 inicial.

01 a 31

D (mayúscula)

Texto representativo del día, con 3 letras y en inglés

Mon (lunes) hasta Sun (domingo)

j (minúscula)

Día del mes con un dígito (sin ceros iniciales)

1 a 31

l (letra ele minúscula)

Texto representativo del día, con todas las letras y en inglés

Monday (lunes) hasta Sunday (domingo)

N (mayúscula)

Representación numérica del día de la semana según ISO-8601, siendo 1 el lunes y 7 el domingo

1 (lunes) a 7 (domingo)

S (mayúscula)

Sufijo para el día del mes en inglés

st, nd, rd o th

w (minúscula)

Representación numérica del día de la semana siendo 0 domingo y 6 el sábado

0 a 6

z (minúscula)

Día del año desde 0 hasta 365 (un año normal irá de 0 a 364)

0 a 365

PHP

Funciones para manejo del tiempo, fecha y hora

Para representar el mes:

Carácter de formato

Significado

Valores que devuelve

F (mayúscula)

Texto representativo del mes, con todas las letras y en inglés

January (enero) a December (diciembre)

m (minúscula)

Mes en formato numérico con dos dígitos, incluyendo cero inicial si es menor que 10

01 hasta 12

M (mayúscula)

Texto representativo del mes, con tres letras iniciales en inglés

Jan (enero) hasta Dec (diciembre)

n (minúscula)

Mes en formato numérico con un dígito, sin ceros iniciales

1 hasta 12

t (minúscula)

Número de días que tiene el mes

28 hasta 31

 

PHP

Funciones para manejo del tiempo, fecha y hora

Para representar el año:

Carácter de formato

Significado

Valores que devuelve

L (mayúscula)

Indica si un año es bisiesto o no (1 si es bisiesto, 0 si no lo es)

0 o 1

Y (mayúscula)

Año en formato numérico de 4 dígitos

1000 a 9999

y (minúscula)

Año en formato numérico de 2 dígitos

El que corresponda

o (minúscula)

Número de año según ISO-8601. En general devuelve el mismo resultado que Y mayúscula

1000 a 9999

PHP

Funciones para manejo del tiempo, fecha y hora

Para representar la hora:

Formato

Significadom

Valores que devuelve

a (minúscula)

Incluye am o pm en minúsculas detrás de la hora para indicar antes del meridiano o después del meridiano

am o pm

A (mayúscula)

Igual que a pero en mayúsculas

AM o PM

B (mayúscula)

Hora internet, también llamada Swatch Internet Time o Biel Mean Time (BMT), poco usada.

000 a 999

g (minúscula)

Número de hora desde 1 hasta 12 sin ceros iniciales

1 a 12

G (mayúscula)

Número de hora desde 0 hasta 23 sin ceros iniciales

0 a 23

h (minúscula)

Número de hora desde 01 hasta 12, con ceros iniciales

01 a 12

H (mayúscula)

Número de hora desde 00 hasta 23, con ceros iniciales

00 hasta 23

i (minúscula)

Minutos desde 00 hasta 59, con ceros iniciales

00 a 59

s (minúscula)

Segundos desde 00 hasta 59, con ceros iniciales

00 a 59

PHP

Funciones para manejo del tiempo, fecha y hora

Para representar la zona horaria:

Carácter de formato

Significado

Valores que devuelve

e (minúscula)

Representa la zona horaria en inglés (p.ej. GMT, America/Denver)

Según corresponda

I (letra i mayúscula)

Indica si se está en horario de verano (0 indica que no se está en horario de verano, 1 que sí se está).

0 o 1

O (letra o mayúscula)

Indica la diferencia respecto a la zona horaria de Greenwich u hora GMT, en horas con cuatro dígitos y símbolo.

Por ejemplo +0300 o -0500

P (mayúscula)

Indica la diferencia respecto a la zona horaria de Greenwich u hora GMT, en horas con cuatro dígitos con separador dos puntos y símbolo.

Por ejemplo +03:00 o -05:00

T (mayúscula)

Abreviatura de la zona horaria (inglés)

Según corresponda

Z (mayúscula)

Diferencia en segundos entre la hora utilizada y la hora UTC, con signo positivo o negativo

-43200 hasta 50400

PHP

Funciones para manejo del tiempo, fecha y hora

Además se dispone de:


La letra W mayúscula para representar la semana del año según ISO-8601, considerando que las semanas comienzan en lunes. Por ejemplo, un año tiene 52 semanas y con este formato podemos obtener que estamos en la semana 24 del año.

La letra c minúscula para representar la fecha y hora completa en formato ISO-8601 (tipo 2089-03-12T12:19:21+03:00).

La letra r minúscula para representar la fecha y hora completa con formato RFC-2822 (tipo Mon, 21 Jan 2089 11:41:05 -0300).

PHP

Funciones para manejo del tiempo, fecha y hora

Otras funciones para fecha, hora y tiempo PHP

PHP define otras funciones nativas para manejo de fechas, horas y tiempo

FUNCIÓN

UTILIDAD

EJEMPLOS

mktime(hora,min,
seg,mes,dia,año)

hora: 0 a 23

min y seg: 0 a 59

mes: 1 a 12

dia: 1 a 31

año: 4 dígitos

Devuelve la hora UTC (GMT) para una fecha local indicada, expresada esta hora GMT en segundos (el número de segundos transcurridos desde el uno de enero de 1970 00:00:00 GMT, valores negativos indican momentos anteriores a esta fecha). Si faltan uno o más parámetros se tomarán los de la fecha local actual de derecha a izquierda. El valor obtenido depende de la hora local del servidor con el que estemos trabajando.

echo "Tiempo Unix para el 15-Enero-2089 a las 12h 0m 0s = " . mktime(12,0,0,1,15,2089);

// Tiempo Unix para el 15-Enero-2089 a las 12h 0m 0s = 3753975600 (el resultado variará según dónde esté localizado el servidor, porque las 12 h del 15 de enero de 2089 corresponden a distintas fechas-horas GMT según dónde se encuentre el servidor.

PHP

Funciones para manejo del tiempo, fecha y hora

Otras funciones para fecha, hora y tiempo PHP

PHP define otras funciones nativas para manejo de fechas, horas y tiempo

FUNCIÓN

UTILIDAD

EJEMPLOS

gmmktime(hora,min,
seg,mes,dia,año)

hora: 0 a 23

min y seg: 0 a 59

mes: 1 a 12

dia: 1 a 31

año: 4 dígitos

Devuelve la hora UTC (GMT) expresada en segundos para una fecha GMT indicada en los argumentos recibidos. El valor devuelto es el número de segundos transcurridos desde el uno de enero de 1970 00:00:00 GMT, valores negativos indican momentos anteriores a esta fecha. Si faltan uno o más parámetros se tomarán los de la fecha GMT actual de derecha a izquierda. El valor obtenido no depende del servidor, ya que la hora GMT es única.

gmmktime(12,0,0,1,15,2089)

// 3756628800 independientemente de la hora local del servidor

PHP

Introducción al manejo de archivos

fopen

Sirve para abrir ficheros (archivos)


Sintaxis:

<?php
$fp = fopen(fichero, modoDeApertura);
?>

PHP

Introducción al manejo de archivos

$fp es el descriptor o identificador del fichero abierto que se necesita posteriormente

fichero puede ser un archivo de texto, un archivo con extensión .php, o la URL de una página


Hay distintos modos de apertura de archivos:

PHP

Introducción al manejo de archivos

Ejemplos:

<?php
$fp = fopen("/txt/fichero1.txt", "r");
$fp = fopen("/txt/fichero2.txt", "w");
$fp = fopen("http://www.um.es/docencia/barzana/texto.txt", "a+");
$fp = fopen("ftp://ftp.um.es/fichero3.txt", "w");
?>

Referencia en: PHP.net

PHP

Introducción al manejo de archivos

fclose

Cierra un fichero abierto

Ejemplo:

<?php
$gestor = fopen('mifichero.txt', 'r');
fclose($gestor);
?>

PHP

Introducción al manejo de archivos

fgets y feof

fgets() recupera el contenido de una línea de un archivo. Sintaxis:

<?php
fgets(descriptorDelFichero);
?>

Ejemplo:

<?php
// Lee la primera línea de fichero.txt
// fichero.txt está en el mismo directorio que el fichero php
// fichero.txt es un archivo de texto
$fp = fopen("fichero.txt", "r");
$linea = fgets($fp);
fclose($fp);
?>

PHP

Introducción al manejo de archivos

Ejemplo:

<?php
// Lee por líneas el fichero.txt hasta llegar al fin (feof($fp))
// fichero.txt está en el mismo directorio que el fichero php
// fichero.txt es un archivo de texto normal
$fp = fopen("fichero.txt", "r");
while(!feof($fp)) {
$linea = fgets($fp);
echo $linea . "
"; } fclose($fp); ?>

PHP

Introducción al manejo de archivos

fputs

fputs() escribe una línea en un archivo. Sintaxis:

<?php
fputs(descriptorDelFichero, cadena);
?>

PHP

Introducción al manejo de archivos

Ejemplo:

<?php
// Se escribe una primera línea en fichero.txt
// fichero.txt está en el mismo directorio que el fichero php
$fp = fopen("fichero.txt", "w");
fputs($fp, "Prueba de escritura");
fclose($fp);
?>

PHP

Introducción al manejo de archivos

file_get_contents

Lee archivos completos. Sintaxis:

<?php
file_get_contents($ruta_del_fichero);
?>

Ejemplo:

<?php
$texto = file_get_contents("archivo.txt");
echo $texto;
?>

PHP

Introducción al manejo de archivos

nl2br

Convierte los saltos de línea a etiquetas < br/>

Ejemplo:

<?php
$texto = file_get_contents("archivo.txt");
$texto = nl2br($texto);
echo $texto;
?>

PHP

Introducción al manejo de archivos

file_get_contents

Obtiene el contenido de una página web en forma de código HTML, su código fuente

Ejemplo:

<?php
$texto = file_get_contents("http://www.escepticismo.es");
echo $texto;
?>

PHP

Gestión de correo electrónico

mail


Permite enviar emails desde PHP

En caso de que se pueda enviar el email devuelve true, si no devuelve false


Sintaxis:

mail (string $a , string $asunto , string $mensaje
   [, string $cabeceras_adicionales [, string $parametros_adicionales ]])

PHP

Gestión de correo electrónico

Parámetros:


to, correo del destinatario. En formato RFC 2822

subject, título del mensaje

message, contenido del mensaje. Las líneas no deberán de ser de más de 70 caracteres

additional_headers, para modificar la cabecera del mensaje. Por cada cabecera se ha de añadir un CRLF (\r\n)

additional_parameters, para proporcionar parámetros adicionales al programa que envía el email

PHP

Gestión de correo electrónico

Ejemplo:

<?php
 $para   = 'publicidad@ru.com';
 $titulo = 'Enviando correos desde PHP';
 $mensaje = 'Este es el primer email que envío desde PHP';
 $cabeceras = 'From: Rafa';

 $enviado = mail($para, $titulo, $mensaje, $cabeceras);

 if ($enviado)
   echo 'Email enviado correctamente';
 else
   echo 'Error en el envío del email';
?>

PHP

Gestión de correo electrónico

Dirección de respuesta a un email con PHP


Para modificar la dirección de respuesta a un email con PHP se han de modificar sus cabeceras

Las cabeceras de un mensaje de email deben de separarse mediante CRLF (\r\n)


Ejemplo:

$cabeceras = 'From: Rafa<rafa@gmail.com>' . "\r\n" .
'Reply-To: Otro <otros@um.com>';

PHP

Gestión de correo electrónico

Enviar email con formato HTML


La variable para el contenido tendrá asignado HTML puro


Ejemplo:

$mensaje = '<html>'.
	'<head><title>Email con HTML</title></head>'.
	'<body><h1>Email con HTML</h1>'.
	'Esto es un email que se envía en el formato HTML'.
	'<hr>'.
	'Enviado por mi programa en PHP'.
	'</body>'.
	'</html>';

PHP

Gestión de correo electrónico

Aspectos avanzados


Sendmail ha de estar disponible en el servidor

Configuración en php.ini

Alternativa enviar mediante un servidor SMTP externo (ej.: Gmail)

Utilizar programa swiftmailer

El framework Laravel proporciona API para swiftmailer

PHP

Gestión de correo electrónico

Ejemplo de procesado de formulario


Acceder al sitio http://goo.gl/DSoMM0

PHP

Gestión de correo electrónico

Código del formulario

       <div class="contenedor-formulario">
            <div class="wrap">
		      <form action="enviar3.php" class="formulario" name="formulario_registro" method="POST">
                    <div>
                        <b><font color=navy>Datos contacto</b></font><br><br>
                        <div class="input-group">
                            <input type="text" id="nombre" name="nombre">
                            <label class="label" for="nombre">Nombre:</label>
                        </div>
                        <div class="input-group">
                            <input type="text" id="apellidos" name="apellidos">
                            <label class="label" for="apellidos">Apellidos:</label>
                        </div>
                        <div class="input-group">
                            <input type="email" id="correo" name="correo">
                            <label class="label" for="correo">Correo:</label>
                        </div>

PHP

Gestión de correo electrónico

Código del formulario

                        <div class="input-group">
                            <input type="text" id="telefono" name="telefono">
                            <label class="label" for="telefono">Teléfono:</label>
                        </div>
                        <div class="input-group">
                            <input type="text" id="telefono" name="telefono">
                            <label class="label" for="telefono">Teléfono:</label>
                        </div>

                        <b><font color=navy>Datos del Procedimiento</b></font><br><br>

                        <div class="input-group">
                            <input type="text" id="Jurisdiccion" name="Jurisdiccion">
                            <label class="label" for="Jurisdiccion">Jurisdicción:</label>
                        </div>

PHP

Gestión de correo electrónico

Código del formulario

                        <div class="input-group">
                            <input type="text" id="tipo_tribunal" name="tipo_tribunal">
                            <label class="label" for="tipo_tribunal">Tipo Tribunal o Juzgado:</label>
                        </div>
                        <div class="input-group">
                            <input type="text" id="clase_procedimiento" name="clase_procedimiento">
                            <label class="label" for="clase_procedimiento">Clase Procedimiento:</label>
                        </div>
                        <div class="input-group">
                            <input type="text" id="Cuantia" name="Cuantia">
                            <label class="label" for="Cuantia">Cuantía:</label>
                        </div>

                        <div class="input-group checkbox">
                            <input type="checkbox" name="pago_tasa" id="pago_tasa" value="true">
                            <label for="pago_tasa">Sujeto al pago de Tasa Judicial</label>
                        </div>

PHP

Gestión de correo electrónico

Código del formulario

                        <div class="input-group checkbox">
                            <input type="checkbox" name="embargo" id="embargo" value="true">
                            <label for="embargo">Anot. Prev. Embargo</label>
                        </div>

                        <div class="input-group checkbox">
                            <input type="checkbox" name="edictos" id="edictos" value="true">
                            <label for="edictos">Publicación Edictos</label>
                        </div>

                        <div class="input-group">
                            <input type="text" id="comentarios" name="comentarios">
                            <label class="label" for="comentarios">Comentarios</label>
                        </div>

                        <input type="submit" id="btn-submit" value="Enviar">

                        <input type="reset" value="Borrar">
                    </div>
                </form>
            </div>
        </div>

PHP

Gestión de correo electrónico

Código de PHP para formulario

<?php
$nombre = $_POST['nombre'];
$correo = $_POST['correo'];
$apellidos = $_POST['apellidos'];

$header = 'From: ' . $correo . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje .= "Este mensaje fue enviado por " . $nombre . "\r\n";
$mensaje .= " " . $apellidos . "\r\n";
$mensaje .= "Su e-mail es: " . $correo . " \r\n";
$mensaje .= "Mensaje: " . $_POST['comentarios'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time()) . " \r\n";

PHP

Gestión de correo electrónico

Código del formulario

$mensaje .= "Jurisdicción: " . $_POST['Jurisdiccion'] . " \r\n";
$mensaje .= "Tipo tribunal: " . $_POST['tipo_tribunal'] . " \r\n";
$mensaje .= "Clase procedimiento: " . $_POST['clase_procedimiento'] . " \r\n";
$mensaje .= "Cuantía: " . $_POST['cuantia'] . " \r\n";
$mensaje .= "Pago tasa: " . $_POST['pago_tasa'] . " \r\n";
$mensaje .= "Embargo: " . $_POST['embargo'] . " \r\n";
$mensaje .= "Edictos: " . $_POST['edictos'] . " \r\n";

$para = 'barzana@um.es';
$asunto = 'Enviado desde web';

mail($para, $asunto,  utf8_decode($mensaje), $header);

echo 'Mensaje enviado correctamente';
header("location:http://www.procuradoresbelda.es");
?>

PHP

Inclusión de código

Tener todo el código para una página en un solo archivo crea problemas:


Complica el mantenimiento o modificación

Dificulta reutilizar el código

Dificulta utilizar códigos de terceros


Los lenguajes de programación permiten escribir código en archivos e importarlos o llamarlos en el archivo que sea necesario

PHP

Inclusión de código

Si se tiene código que se repite muchas veces, se soluciona con:


Include: PHP intenta cargar el archivo solicitado, pero si no lo logra encontrar muestra un error de tipo warning

Require: PHP intenta cargar el archivo, pero si no lo logra muestra un error de tipo fatal error

Include_once y Require_once: funcionan igual a las anteriores pero si se vuelve a llamar al mismo archivo dentro de un mismo script esta llamada es ignorada

/