• Página 1 de 1
  • 1
Moderador del foro: ZorG  
PHP en uCoz
GUARAGUAO
Mensajes: 2362
Reputación: 81
Mensaje Nº 1 | 1:02 PM
Como podemos ver en el encabezado, propongo que todas las preguntas, propuestas, informaciones etc. estén publicadas en este hilo.
Pueden visitar y ver los posts sobre la activación de la función de PHP, descripción de la utilización de la API básica, información adicional sobre PHP en nuestro servicio. También será interesante el tema de la clave API key.

No olviden que la posibilidad de la utilización de los scripts PHP requiere el pago. Hemos lanzado esa posibilidad pues muchos usuarios piden PHO como si no pudieran vivir sin él. biggrin

Las vírgenes tienen muchas navidades pero ninguna Nochebuena.
GUARAGUAO
Mensajes: 2362
Reputación: 81
Mensaje Nº 2 | 1:13 PM
Cuánto tiempo hace desde una fecha


Quiero compartir con vosotros este artículo, donde os indicaré el código necesario en php para averiguar, cuánto tiempo ha transcurrido desde una determinada fecha, hasta el momento actual.

No solo cuánto tiempo ha transcurrido, sino una forma peculiar de expresar o formatear este mismo tiempo de una forma legible para un usuario humano.

Si es usted un webmaster y programa en php, este script puede llegar a serle de mucha utilidad, sino programa con php, también, porque al fin y al cabo cambiando un poco la sintaxis es lo mismo.

Fíjese en esta imagen:



La imagen muestra 3 mensajes del sistema de comentarios de juegos de esta misma web. Anteriormente en lugar de aparecer los textos …. hace 37 segundos, hace 4 minutos… lo que aparecía era la fecha en la que se envió el mensaje, formateada con la función date de php. Por ejemplo Thu, 25 Feb 2010.

Sin embargo para un sistema de comentarios, de una web (blogs, foros, artículos, tutoriales….), me parece más intuitivo para el navegante mostrar la información del tiempo transcurrido desde un mensaje en el formato que aparece en la imagen. Lo cierto es que es un sistema que se puede encontrar en multitud de redes sociales o sitios donde hay formadas grandes comunidades de usuarios que dejan mensajes. ¡Es más COOL!

Lo habitual, es que los sistemas de envios de comentarios de un sitio web, además de almacenar datos como el mensaje, el usuario o su email, almacenen el momento del envio en algún campo de una tabla como una fecha, o un TIMESTAMP de Unix (el número de segundos desde 00:00:00 UTC del 1 de enero de 1970 (UNIX Epoch) hasta el momento en que se crea el timestamp).

Si disponemos de este ingrediente, podremos saber el tiempo transcurrido desde esta fecha, hasta el momento actual y formatear el mensaje de tiempo transcurrido desde un mensaje, de modo adecuado.

Fijense en este script php, en el que desarrollamos la función cuantoHace:

Code
function cuantoHace($PublishDate){
/*Calcula el tiempo que hace desde $PublishDate hasta la fecha actual, con arreglo a un
formato personalizado: Muestra segundos, minutos, horas, o dias transcurridos.*/
$actual=time();
$dif=$actual-$PublishDate;
$segundos = $dif;
$segundos > 0 ? $segundos_text = $segundos." segundos " : $segundos_text = "";
$minutos = floor($dif/(60));
$minutos > 1 ? $minutos_text=$minutos." minutos " : $minutos_text = "";
$minutos == 1 ? $minutos_text = $minutos." minuto " : $minutos_text = $minutos_text;
$horas = floor($dif/(60*60));
$horas > 1 ? $horas_text = $horas." horas ":$horas_text = "";
$horas == 1 ? $horas_text = $horas." hora " : $horas_text = $horas_text;
$dias = floor($dif/(60*60*24));
$dias > 1 ? $dias_text = $dias." dias " : $dias_text = "";
$dias == 1 ? $dias_text = $dias." dia " : $dias_text = $dias_text;
/*El texto a mostrar para saber el tiempo transcurrido entre la fecha dada y el momento actual…..*/
$time_dif_text="";
$segundos > 0 ? $time_dif_text=$segundos_text : $time_dif_text = $time_dif_text;
$minutos > 0 ? $time_dif_text = $minutos_text : $time_dif_text = $time_dif_text;
$horas > 0 ? $time_dif_text = $horas_text : $time_dif_text = $time_dif_text;
$dias > 0 ? $time_dif_text = $dias_text : $time_dif_text = $time_dif_text;
$dias > 5 ? $time_dif_text = " el ".date("d-M-Y",$PublishDate) : $time_dif_text = " hace ".$time_dif_text;
return $time_dif_text
}


Este es el script que se ha utilizado para mi sistema de comentarios. En este caso ya disponemos de la fecha formateada como un TIMESTAMP en la variable $PublishDate. Conseguir este resultado de fecha como TIMESTAMP, no es el objetivo de este Tip, y dependerá también del formato de los datos recuperados, o como están almacenados en nuestra base de datos. Aquí les dejo un enlace a un breve tutorial que les puede ser de utilidad para conocer el formato de fechas php y como convertir fechas a TIMESTAMP y viceversa: Apuntes de php, fechas.

Finalmente, comentar brevemente como actuá este script.

Al final de la película, el valor de retorno de la función cuantoHace será el de la variable $time_dif_text, y este es una cadena que contendrá un texto, el cual podremos intercalar entre código html, para mostrar el tiempo transcurrido.

Si el tiempo transcurrido es inferior a un minuto, muestra el número de segundos. Si el tiempo transcurrido es inferior una hora y superior a un minuto, muestra el número de minutos transcurridos, omitiendo el número de segundos . Lo mismo sucede con las horas. Por ello el script realmente pierde precisión ya que mostrará el texto hace 5 minutos , independientemente de que haga 5 minutos y medio o cinco minutos y 40 segundos. Finalmente, si han transcurrido mas de 5 días desde el envio, si que plasmamos la fecha formateada como dia-mes-año.

Por todo esto, el orden en que están puestas las líneas condicionales del script es importante, ya que el valor de la variable $time_dif_text se va sobreescribiendo según sea necesario. De todos modos con un poco más de trabajo siguiendo esta forma, se puede conseguir formatear estas diferencias de tiempo de cualquier modo.

Creo que el resto del script es bastante explicativo.

Espero que les haya sido de utilidad.

Las vírgenes tienen muchas navidades pero ninguna Nochebuena.
GUARAGUAO
Mensajes: 2362
Reputación: 81
Mensaje Nº 3 | 2:23 PM
Buscar texto en URL con php


Como he notado, algunos usuarios piden o exigen que los visitantes de sus sitios enlacen sus páginas web para poder participar en el foro, dejar comentarios etc. A veces reciben promesas que fallan. Por eso necesitan en un Script para validar los enlaces recíprocos de su directorio. Lo cierto es que esta es una utilidad que por defecto viene implementada en la mayoría de scripts comerciales de directorios, como phpLD o k-Links. Sin embargo los directorios de los usuarios son directorios de creación propia, y la funcionalidad de los mismos van cambiando según los requerimientos de mantenimiento del mismo. Esto es una ventaja porque lo hace muy flexible a las necesidades que me surgen para su correcta administración. Sin embrago plantea el problema de la programación del mismo, con lo que son necesarios conocimientos de programación.

Originalmente el directorio captaba las solicitudes de envio de enlaces al directorio mediante la utilización del formulario de solicitud de enlaces (A la derecha se puede ver una muestra parcial, donde esta remarcado el campo para indicar la URL del link recíproco).



Esta información se suministra por un solicitante y se guarda en una base de datos, donde después un editor (yo mismo), la revisa para proceder a su aprobación o no.

Muchos directorios hace tiempo comenzaron a exigir un enlace recíproco para validar una solicitud. Es lo mínimo exigible para compensar el esfuerzo de edición de solicitudes y la inclusión en un directorio ya consolidado.

Sin embargo el contenido de este campo del formulario no era validado de ninguna forma automática, sino tras la revisión humana por un editor.

A día de hoy el número de solicitudes que soporta el directorio es bastante elevado, aunque la gran mayoría de ellas o bien no indican una URL donde se encuentra el enlace recíproco, o bien en la URL indicada no existe nada, debiendo perder un tiempo considerable en realizar la validación por parte del editor.

He aquí la función php que permita validar la existencia de un determinado texto en una URL dada (cualquiera).

Code
<?php
function validaLinkReciproco($feedUrl,$searchString){
/* Se utiliza para validar el enlace reciproco.
Quien utilice este script, probablemente por un include
Devuelve: true (cadena encontrada), false (cadena no encontrada) */
//Primero verificamos si curl está instalado en el servidor web.
$curlInstalled = true;
if(!extension_loaded(‘curl’)) {
if (strtoupper(substr(PHP_OS, 0, 3)) === ‘WIN’) {
if (!dl(‘php_curl.dll’)) { // Attempt to load the extension for Windows systems
$curlInstalled = false;
} else {
$curlInstalled = true;
}
} else {
if (!dl(‘curl.so’)) { // Attempt to load the extension for POSIX systems
$curlInstalled = false;
} else {
$curlInstalled = true;
}
}
}
//En funcion de si está instalado curl, obtenemos los datos de una u otra forma
if ($curlInstalled==true) {
//Recuperamos los datos de curl
$ohyeah = curl_init();
curl_setopt($ohyeah, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ohyeah, CURLOPT_URL, $feedUrl);
$err = curl_error($ohyeah);
$pagedata = curl_exec($ohyeah);
curl_close($ohyeah);
} else {
$pagedata = file_get_contents($feedUrl);
}
//Buscamos la cadena en el string
$pos = strpos($pagedata,$searchString);
if($pos === false) {
//Cadena $searchString no encontrada en $feedUrl
return false;
}
else {
//Cadena $searchString encontrada en $feedUrl
return true;
}
}
?>;


Se trata de una función que evidentemente debe ser utilizada en el apartado en que validemos los datos enviados por el formulario, donde $feedURL, debiera contener la URL donde deseamos buscar (en nuestro caso la otorgada por el campo URL del enlace recíproco – mira la imagen más arriba). La función devuelve el valor true o false, en función de que se encuentre la cadena de búsqueda en el texto html de la página indicada por $feedURL.

Esta función es una función genérica, es decir no busca la existencia de un enlace recíproco en una URL, sino de cualquier texto, por tanto se puede reutilizar para multitud de usos que un webmaster quiera darle.

En nuestro caso, tan solo buscamos la existencia del texto de la web enlazar, por ejemplo $searchString = “dominio.com” , sin embargo se pueden forzar las búsquedas mucho mas, para validar etiquetas enteras y asegurarnos por ejemplo que el solicitante enlaza nuestra web con el texto exacto que suministramos, evitando así sorpresas como enlaces con nofollow, etc….

De todo modo esta sencilla incorporación al directorio puede evitar revisar una serie de solicitudes que no cumplen con la política de inclusión en el directorio.
Espero que os pueda ser de utilidad como a mi me lo ha sido.

Las vírgenes tienen muchas navidades pero ninguna Nochebuena.
  • Página 1 de 1
  • 1
Búscar: