Calcular distancias en PHP
Función PHP que calcula la distancia entre dos puntos usando latitudes y longitudes. Devuelve los datos en millas, kilómetros y millas naúticas.
Vía / DZone
GeSHI (Generic Syntax Highlighter) es un script PHP que resalta el código que indiquemos realizado en un total de más de 50 lenguajes de programación, entre los que se encuentran PHP, Java, HTML, CSS, C#, Javascript y SQL.
Inicialmente desarrollado para el sistema de foros phpBB, finalmente ha pasado a ser un proyecto independiente. Entre sus caracterÃsticas destaca la cantidad de lenguajes que admite, la facilidad de añadir un lenguaje nuevo y la facilidad para modificar la salida del script.

Lo que más me gusta de este script es que enlaza con las URLs de las funciones de los lenguajes.
GeSHI
Una de las cosas que más me gusta de Java es que cuando se produce una excepción, el error que te muestra te saca una traza de toda la ejecución de procesos (qué función falla, en qué lÃnea y qué funciones se han llamado hasta llegar a ese punto). En PHP a veces los errores son algo simples, falla tal cosa en tal lÃnea.
Afortunadamente podemos mejorar los mensajes de debug para poder mostrar la misma información: lÃnea del archivo, fichero y qué funciones han sido las que han llamado a la actual (backtrace).
Para poder realizarlo se ha de usar las variables __FILE__ y __LINE__ y la función debug_backtrace(). El código necesario serÃa el siguiente:
function debug($msg, $label = 'DEBUG', $stealth = FALSE) {
if (defined('DEBUG') && DEBUG) {
if (is_bool($msg)) {
$msg = $msg ? 'TRUE' : 'FALSE';
}
$display = $stealth ? ' style="display: none;"' : '';
$backtrace = debug_backtrace();
$debug = array();
$stack = (isset($backtrace[1]['class']) ? "{$backtrace[1]['class']}::" : '')
. (isset($backtrace[1]['function']) ? "{$backtrace[1]['function']}" : '');
if ($stack) {
$debug[] = $stack;
}
$debug[] = "Line {$backtrace[0]['line']} of {$backtrace[0]['file']}";
$debug = implode('
', $debug);
print "{$label}: {$debug}:
".print_r($msg, 1)."
\nâ€;
}
}
Cuando se quieren evitar ataques XSS, normalmente en PHP se usan las funciones htmlspecialchars o htmlentities.
Ahora veo un ejemplo en el que un ataque puede evitar estas funciones cuando se crea la página con HTML no estándar. Tenemos el tÃpico ejemplo de un texto que se introduce por un formulario y se presenta como un enlace.
$dato = htmlentities($_GET['dato'], ENT_QUOTES);
echo "<a href=pagina.php?dato=$dato>Enlace</a>";
Si os fijáis bien veréis que el enlace está mal formado y no tiene las comillas en el href. Si metieramos como dato de entrada lo siguiente: ” onclick=alert(null)” (sin las comillas), nuestra página sufrirÃa un ataque XSS y mostrarÃa un mensaje alert.
Comments are closed.
Si no me falla la vista (la verdad la vi por 5 segundos) creo que esa funcion esta basada en la formula de los cosenos esfericos y aunque funciona, el margen de error es bastante elevado (chillar al que hizo el planeta tan deforme 😛 )
En fin, la mas acertada que consegui es la formula de Vicenty que podeis conseguir aca en JS http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html (pasarla a php toma 5 minutos) y si quereis conocer mas sobre calculo de distancias os recomiendo este otro vinculo http://www.movable-type.co.uk/scripts/latlong.html
Muchas gracias a los dos. Me vendrá de perlas.