Está en la página 1de 10

Lista de Hacks CSS especficos para navegadores

Completa lista de hacks para poder actuar especficamente sobre los navegadores que deseemos.
/***** Selector Hacks ******/ /* IE6 and below */ * html #uno { color: red } /* IE7 */ *:first-child+html #dos { color: red } /* IE7, FF, Saf, Opera */ html>body #tres { color: red } /* IE8, FF, Saf, Opera (Everything but IE 6,7) */ html>/**/body #cuatro { color: red } /* Opera 9.27 and below, safari 2 */ html:first-child #cinco { color: red } /* Safari 2-3 */ html[xmlns*=""] body:last-child #seis { color: red } /* safari 3+, chrome 1+, opera9+, ff 3.5+ */ body:nth-of-type(1) #siete { color: red } /* safari 3+, chrome 1+, opera9+, ff 3.5+ */ body:first-of-type #ocho { color: red } /* saf3+, chrome1+ */ @media screen and (-webkit-min-device-pixel-ratio:0) { #diez { color: red } } /* iPhone / mobile webkit */ @media screen and (max-device-width: 480px) { #veintiseis { color: red } } /* Safari 2 - 3.1 */ html[xmlns*=""]:root #trece { color: red } /* Safari 2 - 3.1, Opera 9.25 */ *|html[xmlns*=""] #catorce { color: red } /* Everything but IE6-8 */ :root *> #quince { color: red } /* IE7 */ *+html #dieciocho { color: red } /* Firefox only. 1+ */ #veinticuatro, x:-moz-any-link { color: red } /* Firefox 3.0+ */ #veinticinco, x:-moz-any-link, x:default { color: red /***** Attribute Hacks ******/ /* IE6 */ #once { _color: blue } /* IE6, IE7 */ #doce { *color: blue; /* or #color: blue */ } /* Everything but IE6 */ #diecisiete { color/**/: blue } /* IE6, IE7, IE8 */ #diecinueve { color: blue\9; } /* IE7, IE8 */ #veinte { color/*\**/: blue\9; }

/* IE6, IE7 -- acts as an !important */ #veintesiete { color: blue !ie; } /* string after ! can be anything */

Photum: Tema de WordPress responsive y gratuito para fotgrafos


Photum es un tema gratuito para WordPress desarrollado con HTML5 y orientado a fotgrafos. El diseo es limpio y adems es "responsive" por lo que se adapta a la resolucin de pantalla del dispositivo desde el que se est visionando.

ResponsiveSlides.js
ResponsiveSlides.js es un pequeo plugin de jQuery que crea un slideshow "responsive" dentro de un solo contenedor. Funciona con una amplia gama de navegadores incluyendo todas las versiones de IE desde IE6 en adelante. Tambin agrega soporte CSS para max-width en los navegadores IE6 y otros que no lo soporten de forma nativa. La nica dependencia es jQuery y que todas las imgenes sean del mismo tamao. La mayor diferencia con respecto a otros plugins "responsive" es el tamao (~ 1kb miniaturizado y comprimido).

.htaccess: Redireccionar todos los feeds de WordPress a feedburner


Muchos bloggers usan Feedburner como servicio web para gestionar sus suscripciones RSS y obtener estadsticas sobre sus suscriptores. Si ests usando WordPress, debes redirigir todos los feeds de WordPress (rss, atom, etc) al feed que genera feedburner.
<IfModule mod_alias.c> RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/tu_feed/ RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/tu_feed/ </IfModule>

jQuery: Crear una caja flotante


En este tutorial vamos a crear una caja flotante que se desplaza a medida que se hace scroll por la pgina. De ese modo el contenido de lo que haya en su interior siempre estar visible. Lo mejor es ver un ejemplo. Lo primero es situar la caja al final de la pgina. Por ejemplo, justo antes del final del BODY.
<div id="caja_flotante"> <div id="cont_caja_flotante"> <a href="#"><img src="images/facebook.png" alt="facebook" /></a> <a href="#"><img src="images/twitter.png" alt="twitter" /></a> <a href="#"><img src="images/flickr.png" alt="flickr" /></a> </div> </div>

En las propiedades CSS de esta caja la situamos en una posicin absoluta:


#caja_flotante{ position: absolute; top:0; left: 10px; border: 1px solid #CCC; background-color: #F2F2F2;

width:100px; } }

return $str;

Ahora tan slo queda recurrir a jQuery:


$(document).ready(function() { var posicion = $("#caja_flotante").offset(); var margenSuperior = 15; $(window).scroll(function() { if ($(window).scrollTop() > posicion.top) { $("#caja_flotante").stop().animate({ marginTop: $(window).scrollTop() - posicion.top + margenSuperior }); } else { $("#caja_flotante").stop().animate({ marginTop: 0 }); }; }); });

CSS
Cross browser coding can be sometimes tricky but these browser specific css hacks can help you with your problems. With them cross browser compatibility comes to you served on a plate. /***** Selector Hacks ******/ /* IE6 and below */ * html #uno { color: red } /* IE7 */ *:first-child+html #dos { color: red } /* IE7, FF, Saf, Opera */ html>body #tres { color: red } /* IE8, FF, Saf, Opera (Everything but IE 6,7) */ html>/**/body #cuatro { color: red } /* Opera 9.27 and below, safari 2 */ html:first-child #cinco { color: red } /* Safari 2-3 */ html[xmlns*=""] body:last-child #seis { color: red } /* safari 3+, chrome 1+, opera9+, ff 3.5+ */ body:nth-of-type(1) #siete { color: red } /* safari 3+, chrome 1+, opera9+, ff 3.5+ */ body:first-of-type #ocho { color: red } /* saf3+, chrome1+ */ @media screen and (-webkit-min-device-pixel-ratio:0) { #diez { color: red } } /* iPhone / mobile webkit */ @media screen and (max-device-width: 480px) { #veintiseis { color: red } } /* Safari 2 - 3.1 */ html[xmlns*=""]:root #trece { color: red } /* Safari 2 - 3.1, Opera 9.25 */ *|html[xmlns*=""] #catorce { color: red } /* Everything but IE6-8 */ :root *> #quince { color: red } /* IE7 */ *+html #dieciocho { color: red } /* Firefox only. 1+ */ #veinticuatro, x:-moz-any-link { color: red } /* Firefox 3.0+ */ #veinticinco, x:-moz-any-link, x:default { color: red } /***** Attribute Hacks ******/ /* IE6 */ #once { _color: blue } /* IE6, IE7 */ #doce { *color: blue; /* or #color: blue */ } /* Everything but IE6 */ #diecisiete { color/**/: blue } /* IE6, IE7, IE8 */ #diecinueve { color: blue\9; } /* IE7, IE8 */ #veinte { color/*\**/: blue\9; } /* IE6, IE7 -- acts as an !important */ #veintesiete { color: blue !ie; } /* string after ! can be anyth

jQuery: Scroll animado hasta un anclaje


La siguiente funcin permite crear un agradable efecto de scroll para desplazarse hasta un anclaje. Tan slo hay que aadir la clase "toplink".
$("a.toplink").click(function() { $("html, body").animate({ scrollTop: $($(this).attr("href")).offset().top + "px" }, { duration: 1000, easing: "swing" }); return false; });

Obtener un color aleatorio con PHP


La siguiente funcin permite obtener un color aleatorio en formato hexadecimal.
function randomColor() { $str = '#'; for($i = 0 ; $i < 6 ; $i++) { $randNum = rand(0 , 15); switch ($randNum) { case 10: $randNum = 'A'; case 11: $randNum = 'B'; case 12: $randNum = 'C'; case 13: $randNum = 'D'; case 14: $randNum = 'E'; case 15: $randNum = 'F'; } $str .= $randNum; }

10 PHP code snippets for working with strings


Published on June 7th, 2010 by Jean-Baptiste Jung. 38 Comments -

break; break; break; break; break; break;

Strings are a very important kind of data, and you have to deal with them daily with web development tasks. In this article, I have compiled 10 extremely useful functions and code snippets to make your php developer life easier.

Automatically remove html tags from a string


On user-submitted forms, you may want to remove all unnecessary html tags. Doing so is easy using the strip_tags() function: $text = strip_tags($input, "");

Source: http://phpbuilder.com/columns/Jason_Gilmore060210.php3?page=2
}

$message[$i] = $word . ' '; } } return $message; } Source: http://www.phpsnippets.info/split-text-up-into-140-char-array-for-twitter

Get the text between $start and $end


This is the kind of function every web developer should have in their toolbox for future use: give it a string, a start, and an end, and it will return the text contained with $start and $end. function GetBetween($content,$start,$end){ $r = explode($start, $content); if (isset($r[1])){ $r = explode($end, $r[1]); return $r[0]; } return ''; } Source: http://www.jonasjohn.de/snippets/php/get-between.htm

Remove URLs from string


When I see the amount of URLs people try to leave in my blog comments to get traffic and/or backlinks, I think I should definitely give a go to this snippet! $string = preg_replace('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z09+&@#\/%=~_|$]/i', '', $string); Source: http://snipplr.com/view.php?codeview&id=15236

Transform URL to hyperlinks


If you leave a URL in the comment form of a WordPress blog, it will be automatically transformed into a hyperlink. If you want to implement the same functionality in your own website or web app, you can use the following code: $url = "Jean-Baptiste Jung (http://www.webdevcat.com)"; $url = preg_replace("#http://([A-z0-9./-]+)#", '$0', $url); Source: http://phpbuilder.com/columns/Jason_Gilmore060210.php3?page=2

Convert strings to slugs


Need to generate slugs (permalinks) that are SEO friendly? The following function takes a string as a parameter and will return a SEO friendly slug. Simple and efficient! function slug($str){ $str = strtolower(trim($str)); $str = preg_replace('/[^a-z0-9-]/', '-', $str); $str = preg_replace('/-+/', "-", $str); return $str; } Source: http://snipplr.com/view.php?codeview&id=2809

Split text up into 140 char array for Twitter


As you probably know, Twitter only accepts messages of 140 characters or less. If you want to interact with the popular social messaging site, youll enjoy this function for sure, which will allow you to truncate your message to 140 characters. function split_to_chunks($to,$text){ $total_length = (140 - strlen($to)); $text_arr = explode(" ",$text); $i=0; $message[0]=""; foreach ($text_arr as $word){ if ( strlen($message[$i] . $word . ' ') <= $total_length ){ if ($text_arr[count($text_arr)-1] == $word){ $message[$i] .= $word; } else { $message[$i] .= $word . ' '; } } else { $i++; if ($text_arr[count($text_arr)-1] == $word){ $message[$i] = $word; } else {

Parse CSV files


CSV (Coma separated values) files are an easy way to store data, and parsing them using PHP is dead simple. Dont believe me? Just use the following snippet and see for yourself. $fh = fopen("contacts.csv", "r"); while($line = fgetcsv($fh, 1000, ",")) { echo "Contact: {$line[1]}"; } Source: http://phpbuilder.com/columns/Jason_Gilmore060210.php3?page=1

Search for a string in another string


If a string is contained in another string and you need to search for it, this is a very clever way to do it: function contains($str, $content, $ignorecase=true){ if ($ignorecase){ $str = strtolower($str); $content = strtolower($content); } return strpos($content,$str) ? true : false;

} Source: http://www.jonasjohn.de/snippets/php/contains.htm

Captcha
A peticin de algunos lectores, voy a publicar un pequeo ejemplo sobre la aplicacin de mi anterior post "Captcha con proteccin de colores". Tanto el citado post como ste, son ejemplos. Deben ser tomados como puntos de partida y presuponen ciertos conocimientos de programacin que se escapan del propsito de ambos posts. Dicho esto, veamos un ejemplo ms completo. Necesitamos dos ficheros. El primero es el capcha, la imagen que el usuario deber reconocer. Podemos nombrar el fichero como captha.php y el cdigo sera el siguiente: captha.php
<?php session_start(); header("Content-type: image/png"); $anchura = 146; $altura = 30; $im = @imagecreate($anchura, $altura)or die("Cannot Initialize new GD image stream"); imagecolorallocate($im, 255, 250, 255); $noise_color = imagecolorallocate($im, 207, 239, 250); for($i=0; $i<($anchura*$altura)/3; $i++) { imagefilledellipse($im, mt_rand(0,$anchura), mt_rand(0,$altura), 1, 1, $noise_color); } for($i=0; $i<($anchura*$altura)/150; $i++ ) { imageline($im, mt_rand(0,$anchura), mt_rand(0,$altura), mt_rand(0,$anchura), mt_rand(0,$altura), $noise_color); } $texto_color[0] = imagecolorallocate($im, 255, 0, 0); $texto_color[1] = imagecolorallocate($im, 51, 166, 207); $caracteres = 'ABCDEFGHKLMNPRSTUVWYZ23456789'; $longitud = 5; function generarCodigo($longitud,$caracteres) { $code = ''; for($i = 1, $cslen = strlen($caracteres); $i <= $longitud; ++$i) { $code .= strtoupper( $caracteres{rand(0, $cslen - 1)} ); } return $code; } $texto = generarCodigo($longitud,$caracteres); unset($_SESSION['captcha']); $_SESSION['captcha']['blue'] = $_SESSION['captcha']['red'] = ''; for($j = 0; $j < mb_strlen($texto); $j++) { imagettftext($im, 20, 0, 5+($j*23), 24, $texto_color[$j%2], 'Includes/elephant.ttf', $texto[$j]); if(($j%2) == 1) { $_SESSION['captcha']['blue'] .= $texto[$j]; } else { $_SESSION['captcha']['red'] .= $texto[$j]; } } imagepng($im);

Check if a string starts with a specific pattern


Some languages such as Java have a startWith method/function which allows you to check if a string starts with a specific pattern. Unfortunately, PHP does not have a similar built-in function. Whatever- we just have to build our own, which is very simple: function String_Begins_With($needle, $haystack { return (substr($haystack, 0, strlen($needle))==$needle); } Source: http://snipplr.com/view.php?codeview&id=2143

Extract emails from a string


Ever wondered how spammers can get your email address? Thats simple, they get web pages (such as forums) and simply parse the html to extract emails. This code takes a string as a parameter, and will print all emails contained within. Please dont use this code for spam function extract_emails($str){ // This regular expression extracts all emails from a string: $regexp = '/([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i'; preg_match_all($regexp, $str, $m);
return isset($m[0]) ? $m[0] : array(); } $test_string = 'This is a test string... test1@example.org Test different formats: test2@example.org; <a href="test3@example.org">foobar</a> <test4@example.org> strange formats: test5@example.org test6[at]example.org test7@example.net.org.com test8@ example.org test9@!foo!.org foobar '; print_r(extract_emails($test_string));

imagedestroy($im); ?>

Que nos ofrece un xml como el siguiente:


<?xml version="1.0" encoding="UTF-8"?> <ALEXA VER="0.9" URL="elpais.com/" HOME="0" AID="="> <SD TITLE="A" FLAGS="DMOZ" HOST="elpais.com"> <TITLE TEXT="El Pas"/> <ADDR STREET="C/ Ribera del Sena, s/n. Edificio APOT" CITY="Madrid , Madrid 28042" STATE="" ZIP="" COUNTRY="SPAIN" /> <CREATED DATE="05-Mar-2001" DAY=" 5" MONTH="03" YEAR="2001"/> <PHONE NUMBER="+ 34 91 353 79 00"/> <OWNER NAME="Prisacom, S.A."/> <EMAIL ADDR="atencionclientes@prisacom.com"/> <LANG LEX="en"/> <LINKSIN NUM="21128"/> <SPEED TEXT="1627" PCT="49"/> <REVIEWS AVG="3.5" NUM="2"/> <CHILD SRATING="0"/> </SD> <DMOZ> <SITE BASE="elpais.com/" TITLE="El Pas" DESC="Peridico con noticias de ltima hora, vdeos, audio, msica, multimedia, opinin, internacional, economa, deportes, tecnologa, cine, viajes y comunidades autnomas entre otros."> <CATS> <CAT ID="Top/World/Espaol/Regional/Europa/Espaa/Noticias_y_medios/Peridicos/Generales" TITLE="Peridicos/Generales" CID="10615"/> </CATS> </SITE> </DMOZ> <SD> <POPULARITY URL="elpais.com/" TEXT="490"/> <REACH RANK="482"/> <RANK DELTA="-27"/> </SD> </ALEXA>

Ahora necesitamos crear otro fichero (formulario.php) que se encargar de procesar los campos del formulario y comprobar que el captcha ha sido introducido correctamente. formulario.php
<?php session_start(); if($_POST['enviar']=="ok") { // LIMPIAMOS LO RECOGIDO EN EL FORMULARIO $captcha_recogido = filter_var($_POST['valores_captcha'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH); // CONVERTIMOS EN MAYUSCULAS $captcha_recogido = strtoupper($captcha_recogido); if(empty($captcha_recogido)) { echo "<strong>Debes introducir los caracteres en rojo que aparecen en la imagen.</strong>"; }else{ if($captcha_recogido==$_SESSION['captcha']['red']) { // HA INTRODUCIDO CORRECTAMENTE EL CAPTCHA Y // CONTINUAMOS PROCESANDO EL FORMULARIO echo "<strong>El formulario ha sido procesado.</strong>"; }else{ echo "<strong>Los caracteres introducidos no coinciden con los de la imagen. Intntalo otra vez.</strong>"; } } } ?> <form action="#" method="post" name="form_captha"> <!-- CAMPOS DEL FORMULARIO --> <p><img src="01032011_captcha.php" alt="captcha" /></p> <p><label>Teclea los caracteres en rojo</label><input type="text" name="valores_captcha" /></p> <input name="enviar" type="submit" value="ok" /> <label> </form>

Ahora tan slo nos queda extraer el ranking, a partir del xml con la ayuda de PHP:

Obtener el ranking de Alexa con PHP


Alexa es un servicio de Amazon que ofrece diversa informacin acerca de sitios web. El indicador ms importante que ofrece es el denominado ranking de Alexa. Representa la posicin de un sitio web respecto a la totalidad de sitios web. Alexa no ofrece ninguna API para extrar el ranking pero, con PHP, existe un mtodo sencillo de obtener esta informacin. Todo lo que tenemos que hacer es extraer la informacin invocando la siguiente direccin:
http://data.alexa.com/data?cli=10&dat=s&url={url_del_sitio}

$url = "www.elpais.com"; $xml= "http://data.alexa.com/data?cli=10&dat=s&url=".$url; $datos = simplexml_load_file($xml) or die("No se puede cargar"); $ranking = $datos->SD[1]->POPULARITY['TEXT']; if($ranking > 0){ echo "El ranking de Alexa para este sitio es <strong>".$ranking."</strong>"; }else{ echo "No se puede obtener el ranking"; }

Por ejemplo:
http://data.alexa.com/data?cli=10&dat=s&url=www.elpais.com

Modo mantenimiento con PHP

Cuando modificamos o actualizamos un sitio web, a veces resulta desactivarlo temporalmente y redirigir a los usuarios a una pgina en la que se les informe que la web est en mantenimiento. La siguiente funcin PHP es un modo sencillo de hacerlo sin tener que recurrir a .htaccess.
function maintenance($mode = FALSE){ if($mode){ if(basename($_SERVER['SCRIPT_FILENAME']) != 'maintenance.php'){ header("Location: http://example.com/maintenance.php"); exit; } }else{ if(basename($_SERVER['SCRIPT_FILENAME']) == 'maintenance.php'){ header("Location: http://example.com/"); exit; } } }

$str_palabras = implode ('|', $arr_palabras); return preg_replace ('@\b('.$str_palabras.')\b@si', '<strong style="background-color:yellow">$1</strong>', $cadena); } $Texto = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut adipiscing risus nec arcu interdum at lobortis neque auctor. Morbi in gravida ipsum. Nunc imperdiet, metus sit amet fermentum volutpat, nisi tortor auctor dui, sed porttitor augue mi vitae arcu. Mauris vitae ante sit amet elit tincidunt eleifend et tempor est. Aenean vitae viverra velit. Maecenas pulvinar dolor at ante eleifend vitae fermentum dui auctor. Pellentesque fringilla ultrices odio, vitae elementum lorem gravida in. Curabitur tincidunt sagittis luctus. Cras sit amet sagittis sapien. Nunc tempus dapibus nibh, et posuere nibh aliquam in. "; $Palabras = array("Lorem","sit","amet"); echo highlight($Texto, $Palabras); ?>

Para activar el modo mantenimiento, tan slo habra que pasar el valor TRUE a la funcin
maintenance(TRUE);

Clase PHP para filtrar los parmetros recibidos por GET


A raiz de la publicacin del post The Perishable Press 4G Blacklist me surgi la idea de publicar una de las clases en PHP que utilizo para controlar la seguridad de los sitios web desarrollados en este lenguaje. Toda prevencin es poca y hay veces que no tenemos acceso al fichero .htaccess, no conocemos lo suficiente su funcionamiento, el servidor no es Apache, etc. En ese caso utilizar una clase como la siguiente nos puede ser til para evitar ataques CSRF o XSS mediante parmetros GET.
class dXSS{ var $url; var $longitud; function TestGet(){ $ok = true; $baneados =array(chr(34), "'", "--", ";" "<", "[", "&lt;", ">", "&gt", "&quot", "&#x27", "%", "&#x2F", "/*", "*/", "request", "select", "declare",

La funcin debe ser llamada antes de que se haya producido cualquier salida en el navegador.

Resaltar palabras en una frase con PHP


A veces es necesario resaltar determinadas palabras dentro de un texto. Por ejemplo a la hora de mostrar los resultados de una bsqueda, es una buena idea resaltar los trminos buscados dentro de los resultados de bsqueda. Esto es exactamente lo que hace esta funcin:
function highlight($cadena, $arr_palabras) { if (!is_array ($arr_palabras) || empty ($arr_palabras) || !is_string ($cadena)) { return false; } $str_palabras = implode ('|', $arr_palabras); return preg_replace ('@\b('.$str_palabras.')\b@si', '<strong style="background-color:yellow">$1</strong>', $cadena); }

Un ejemplo de uso podra ser:


<?php function highlight($cadena, $arr_palabras) { if (!is_array ($arr_palabras) || empty ($arr_palabras) || !is_string ($cadena)) { return false; }

"insert", "update", "delete", "drop", "exec(", "execute(", "cast(", "char", "nchar", "varchar", "nvarchar", "substring", "sysobject", "iframe", "syscolumns" ); $recuento=0; foreach( $_GET as $key => $value ) { for($i=0;$i<sizeof($baneados);$i++) { $Cadena = strtoupper($value); $Encontrar = strtoupper($baneados[$i]); $pos = strpos($Cadena, $Encontrar); if($pos !== false) { $recuento++; } if(strlen($Cadena)>$this->longitud){ $recuento++; } if(eregi('[^a-z0-9_]',$Cadena)){ $recuento++; } } } if($recuento>0){ header('Location:'.$this->url); } } }

$g->longitud = 10; $g->TestGet();

Este cdigo debe ir antes de que se haya producido cualquier salida desde el navegador. Al principio de la pgina por ejemplo. De este modo se aceptaran parmetros como:
http://www.dominio.com/index.php?Id=45&acc=new&op=32

Pero no aceptara cosas como:


http://www.dominio.com/index.php?p=<script>alert("XSS");</script>

Es bastante interesante definir una longitud pequea, siempre que sea posible:
$g = new dXSS(); $g->url = 'http://www.google.es'; $g->longitud = 3; $g->TestGet();

Permitira:
http://www.dominio.com/index.php?Id=45&sub=3&acc=new&op=32

Pero no:
http://www.dominio.com/index.php?Id=<meta%20http-equiv="refresh"%20content="0;">

o incluso:
http://www.dominio.com/index.php?Id=$%

La clase testea cada uno de los parmetros recibidos y: 1.- Se asegura que no est en la lista de palabras baneadas 2.- Se asegura de que no tenga una longitud superior a la especificada 3.- Comprueba que slo contenga caracteres alfanumricos Si se detecta un parmetro no vlido se redirige a la $url especificada. Un ejemplo de funcionamiento sera:
$g = new dXSS(); $g->url = 'http://www.google.es';

NOTA: Esta clase nicamente controla los parmetros recibidos por $_GET. Fcilmente se podra adaptar o modificar la clase para la informacin recibida por $_POST o que incluso se ocupase de ambas cosas pero quera mostrar un uso muy sencillo. Lo ideal es combinar esta clase con otras clases o funciones que comprueben el contenido recibido a travs de los formularios, utilizar tokens en los formularios, establecer los permisos apropiados a las carpetas del sitio web, utilizar.htaccess, recurrir a filter_input si la versin de PHP instalada es reciente, etc. En estas cosas ms vale que sobre que falte.

Obtener la fecha en el que un fichero fue modificado con PHP


La siguiente lnea nos devuelve la fecha en la que un fichero fue modificado.

echo date("m/d/Y",filemtime("test.php"));

Utilizamos la funcin filemtime, que obtiene el momento de la ltima modificacin de un archivo. Esta funcin devuelve el momento de cundo los bloques de informacin de un archivo fueron escritos, es decir, el momento en el que el contenido del archivo de modific.

foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){ $size+=$file->getSize(); } return $size; }

Tiempo de ejecucin de una pgina web con PHP


Esta funcin mide el tiempo que tarde en ejecutarse una pgina web.
<?php //Crea una variable con el tiempo inicial $tiempo_inicial = microtime(true); // Coloca en este espacio tu // PHP // HTML // JavaScript // CSS // etc, //Crea una variable con el tiempo final $tiempo_final = microtime(true); //Restamos los dos tiempos $tiempo_ejecucion = $tiempo_final - $tiempo_inicial; echo 'La pgina tard&oacute; '.round($tiempo_ejecucion,4).' segundos en ejecutarse'; ?>

PHP: Mostrar el cdigo fuente de cualquier pgina web


El siguiente fragmento de cdigo nos permite obtener el cdigo fuente de cualquier pgina web, con numeracin de lneas.
<?php // display source code $lines = file('http://google.com/'); foreach ($lines as $line_num => $line) { // loop thru each line and prepend line numbers echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n"; } ?>

Funcin para determinar el tiempo transcurrido en PHP


Esta funcin muestra el tiempo transcurrido desde una fecha dada. La idea es mostrar el tiempo en formato ms amigable para el lector. En vez de mostrar una fecha como "09/02/2010", se mostrara texto indicando "Hace 1 da". Este tipo de visualizacin se empez a popularizar gracias a GMail. funcin aqu mostrada es una simple adaptacin a las peculiaridades del castellano de funcin nicetime que se encuentra en los comentarios de php.net.
function tiempo_transcurrido($fecha) { if(empty($fecha)) { return "No hay fecha"; } $intervalos = array("segundo", "minuto", "hora", "da", "semana", "mes", "ao"); $duraciones = array("60","60","24","7","4.35","12"); $ahora = time(); $Fecha_Unix = strtotime($fecha); if(empty($Fecha_Unix)) { return "Fecha incorracta"; } if($ahora > $Fecha_Unix) { $diferencia =$ahora - $Fecha_Unix; $tiempo = "Hace"; } else { $diferencia = $Fecha_Unix -$ahora; $tiempo = "Dentro de"; }

un un La la

PHP: Convierte una cadena a url-friendly


Funcin que convierte una cadena en otra cadena "amigable" que se puede utilizar como URL. Convierte la cadena a minsculas y reemplaza cualquier caracter no alfanumrico o acentuado por guiones.
function slug($str) { $str = strtolower(trim($str)); $str = preg_replace('/[^a-z0-9-]/', '-', $str); $str = preg_replace('/-+/', "-", $str); return $str; }

PHP: Funcin para obtener el tamao de un directorio


Funcin para obtener el tamao de un directorio:
function dirSize($directory) { $size = 0;

for($j = 0; $diferencia >= $duraciones[$j] && $j < count($duraciones)-1; $j++) { $diferencia /= $duraciones[$j]; } $diferencia = round($diferencia); if($diferencia != 1) { $intervalos[5].="e"; //MESES $intervalos[$j].= "s"; } return "$tiempo $diferencia $intervalos[$j]"; } // Ejemplos de uso // fecha en formato yyyy-mm-dd // echo tiempo_transcurrido('2010/02/05'); // fecha y hora // echo tiempo_transcurrido('2010/02/10 08:30:00');

function myTruncate($string, $limit, $break=".", $pad="...") { // return with no change if string is shorter than $limit if(strlen($string) <= $limit) return $string; // is $break present between $limit and the end of the string? if(false !== ($breakpoint = strpos($string, $break, $limit))) { if($breakpoint < strlen($string) - 1) { $string = substr($string, 0, $breakpoint) . $pad; } } return $string; } ?>

Ejemplo:
$cadena="Ut at risus magna. Aenean in urna urna, bibendum ultricies libero. Quisque accumsan, dolor ut sagittis fermentum, ipsum sapien posuere arcu, eget fermentum lorem leo mattis risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rhoncus tincidunt pulvinar. Aliquam sed odio vitae erat vestibulum eleifend. In hac habitasse platea dictumst. Fusce fringilla aliquet leo a porta. Proin facilisis vehicula nisi, pharetra pellentesque turpis rutrum in. Quisque laoreet nisi augue. Fusce lorem metus, mollis sed aliquam eget, dapibus sit amet dui. Nulla facilisi. Vestibulum laoreet, orci in euismod tristique, est ligula sagittis dolor, a pellentesque odio ligula tempus risus. Aenean elit ligula, facilisis sed tincidunt ac, facilisis eget ipsum. "; echo myTruncate($cadena, 200,' ', '...');

Funcin en PHP para generar una nube de etiquetas


function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 ) { $minimumCount = min($data); $maximumCount = max($data); $spread = $maximumCount - $minimumCount; $cloudHTML = ''; $cloudTags = array(); $spread == 0 && $spread = 1; foreach( $data as $tag => $count ) { $size = $minFontSize + ( $count - $minimumCount )* ( $maxFontSize - $minFontSize ) / $spread; $cloudTags[] = '<a style="font-size: ' . floor( $size ) . 'px'. '" class="tag_cloud" href="#" title="\'' . $tag .'\' returned a count of ' . $count . '">'.htmlspecialchars(stripslashes( $tag ) ) . '</a>'; } return join( "\n", $cloudTags ) . "\n"; }

Anteponer http:// a una URL mediante PHP


Cuando un usuario tiene que introducir una URL rara vez aade "http://" a la mismo. Este cdigo aade "http://" si no existe.
<?php function NormURL($url){ if (!preg_match("/^(http|ftp):/", $url)) { $url = 'http://'.$url; } return $url; } ?>

Esta funcin y algunas ms, todas ellas muy interesantes en Handy PHP Code Snippets.

Funcin que trunca texto con palabras completas


Esta funcin slo trunca una cadena cuando encuentra el punto de ruptura que le indiquemos -un espacio, un punto, dos puntos,..- y resulta muy til, por ejemplo, para mostrar un extracto de un artculo completo sin romper las palabras.
<?php // Original PHP code by Chirp Internet: www.chirp.com.au // Please acknowledge use of this code by including this header.

Easy Google Maps es una clase para PHP que, como su nombre indica facilita la inclusin de mapas a travs de Google Maps en un sitio web. Lo primero que deberemos hacer, para poder utilizar la API de Google Maps es obtener una key o clave para el dominio en el que pensemos utilizar la API. Una vez tenemos una key podemos invocar un mapa de un modo tan sencillo como:
<?php

require'EasyGoogleMap.class.php'; $key ="XXXXXXXXXX"; $gm = & new EasyGoogleMap($key); $gm->SetMapZoom(15); $gm->SetAddress("Colon 22, Valencia"); $gm->SetInfoWindowText("Esta es la primera direccin"); $gm->SetAddress("Periodista Azzati 7, Valencia"); $gm->SetInfoWindowText("Esta es la segunda direccin"); ?> <html> <head> <title>EasyGoogleMap</title> <?php echo $gm->GmapsKey(); ?> </head> <body> <?php echo $gm->MapHolder(); ?> <?php echo $gm->InitJs(); ?> <?php echo $gm->UnloadMap(); ?> </body> </html>

//Para establecer el tipo de puntero // De modo predeterminado se utiliza GT_FLAT $gm->SetMarkerIconStyle('FLAG'); $gm->SetMarkerIconStyle('GT_FLAT'); $gm->SetMarkerIconStyle('GT_PILLOW'); $gm->SetMarkerIconStyle('HOUSE'); $gm->SetMarkerIconStyle('PIN'); $gm->SetMarkerIconStyle('PUSH_PIN'); $gm->SetMarkerIconStyle('STAR'); //Para establecer el color del puntero // De modo predeterminado se utiliza PACIFICA $gm->SetMarkerIconColor('PACIFICA'); $gm->SetMarkerIconColor('YOSEMITE'); $gm->SetMarkerIconColor('MOAB'); $gm->SetMarkerIconColor('GRANITE_PINE'); $gm->SetMarkerIconColor('DESERT_SPICE'); $gm->SetMarkerIconColor('CABO_SUNSET'); $gm->SetMarkerIconColor('TAHITI_SEA'); $gm->SetMarkerIconColor('POPPY'); $gm->SetMarkerIconColor('NAUTICA'); $gm->SetMarkerIconColor('DEEP_JUNGLE'); $gm->SetMarkerIconColor('SLATE'); //Establecer el texto del bocadillo informativo $gm->SetInfoWindowText("Este es el punto uno")

Donde "XXXXXXXXXX" es la key que acabamos de obtener. Ver ejemplo en funcionamiento Algunas de las propiedades que podemos establecer son las siguientes:
//Para habilitar/deshabilitar el zoom progresivo. // De modo predeterminado deshabilitado (FALSE) $gm->mContinuousZoom = FALSE; //Para habilitar/deshabilitar La escala del mapa. // De modo predeterminado habilitado (TRUE) $gm->mScale = TRUE; //Para habilitar/deshabilitar el mapa interno. // De modo predeterminado deshabilitado (FALSE) $gm->mInset = FALSE; //Para habilitar/deshabilitar el tipo de mapa. // De modo predeterminado deshabilitado (FALSE) $gm->mMapType = FALSE; # default //Para establecer las dimensiones del mapa //De modo predeterminado 300px x 300px $gm->SetMapWidth(500); $gm->SetMapHeight(500); //Para establecer el zoom //De modo predeterminado 13 $gm->SetMapZoom(10);

El uso es realmente sencillo. Lo unico que no me acababa de gustar es que apareciese el bocadillo de la primera direccin. Prefiero que aparezcan los bocadillos cuando el usuario hace click. Simplemente cogiendo la clase y comentando estas dos lneas ya lo tendremos,
if $ret .= "marker.openInfoWindowHtml(address_$i.infowindowtext);\n"; ($i===0)

También podría gustarte