Lessn: script para acortar URLs
Lessn es un script en PHP5 y MySQL que permite realizar un acortador de URLs al estilo micurl o parecidos.
Lessn
Vía / Script & Style
Lessn es un script en PHP5 y MySQL que permite realizar un acortador de URLs al estilo micurl o parecidos.
Lessn
Vía / Script & Style
Spellify es un corrector ortográfico en tiempo de ejecución para las cajas de texto de nuestros formularios. Este script evalua las palabras introducidas y muestra las palabras erróneas y cuales son las posibles correctas.

Para su uso es necesario PHP 4+ y CURL y script.aculo.us 1.8.0, y añadir en nuestras páginas código HTML y los estilos y javascripts. Esto último no me parece muy elegante, ya que este código se podrÃa crear mediante el js.
Spellify está disponible en varios idiomas ya que usa el corrector ortográfico de Google.
De todas formas, si queréis haceros vuestro propio corrector ortográfico en PHP, podéis usar la función levenshtein, la cual calcula la distancia entre dos palabras. Eso sÃ, esta función es costosa en rendimiento.
Spellify
VÃa / WebAppers
No suele ser algo común que necesitemos un corrector ortográfico en nuestras aplicaciones web, pero por si alguien lo necesita, puede que este tutorial le venga bien.
El método es sencillo, obtenemos una lista de palabras en español (o el idioma que queramos) y la frecuencia con la que aparecen, para ello es bueno usar un libro o varios, obtener las palabras y calcular la frecuencia. Después, mediante la distancia Levenshtein, que nos devuelve el numero de letras que tenemos que modificar, insertar o borrar para que dos palabras sean las mismas, hacemos una lista de las palabras que los usuarios utilicen en nuestra aplicación (el buscador por ejemplo) y las palabras del diccionario, guardando solo aquellas relaciones que tengan una distancia 1 o 2.
Usando la lista con la relación entre palabras, cuando un usuario introduzca una palabra equivocada, le mostraremos las palabras que tengan una distancia 1 y si no hay, las que tengan una distancia 2.
Google, si mal no creo, a parte de este método lo que hace es controlar que palabras introducen los usuarios que no obtienen datos y las palabras que introduce después y que si obtienen datos.
Las tiendas online son uno de los productos más usados en desarrollo web, pero suele ser lo que más dolores de cabeza da debido al pago por tarjeta de crédito. Afortunadamente, Paypal ofrece la posibilidad de pagar mediante tarjeta de crédito. Para ello, Paypal dispone de una API NVP muy cómoda de usar.
Para los usuarios de Codeigniter existe una librería que nos facilita toda la tarea. En el controlador primero debemos indicar el SetExpressCheckout que prepara la transacción. Cuando aceptemos el OK de la llamada se redireccionará a Paypal para que el usuario pueda realizar la compra, que devolverá la llamada a una URL nuestra y en ese caso, cogiendo los datos devueltos por Paypal podremos confirmar la transacción:
define('PAYPAL_URL', 'https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token=');
class Demo extends Controller {
function Demo()
{
parent::Controller();
}
function index() {
$this->paypal_api_lib->add_nvp('RETURNURL', 'http://servidor/demo/ok');
$this->paypal_api_lib->add_nvp('CANCELURL', 'http://servidor/demo/cancel');
$this->paypal_api_lib->add_nvp('NOSHIPPING', '0');
$this->paypal_api_lib->add_nvp('ALLOWNOTE', '1');
$this->paypal_api_lib->add_nvp('SOLUTIONTYPE', 'Sole'); // esto es lo que no obliga a que se tenga que tener cuenta Paypal
$this->paypal_api_lib->add_nvp('LANDINGPAGE', 'Billing');
$this->paypal_api_lib->add_nvp('AMT', '69.00');
$this->paypal_api_lib->add_nvp('NOSHIPPING', '2');
$this->paypal_api_lib->add_nvp('HDRIMG', 'http://servidor/logo.gif');
$this->paypal_api_lib->add_nvp('CURRENCYCODE', 'EUR');
$this->paypal_api_lib->add_nvp('L_NAME0', 'Librito');
$this->paypal_api_lib->add_nvp('L_AMT0', '59.00');
$this->load->library('session');
$sesion = array('paypalAmount'=>'69.00');
$this->session->set_userdata($sesion);
if($this->paypal_api_lib->send_api_call('SetExpressCheckout')){
if (strtoupper($this->paypal_api_lib->nvp_data["ACK"]) =="SUCCESS") {
$token = urldecode($this->paypal_api_lib->nvp_data["TOKEN"]);
$payPalURL = PAYPAL_URL.$token;
header("Location: ".$payPalURL);
exit();
}
}
paypal_errors();
}
function ok() {
$this->load->library('session');
$this->paypal_api_lib->add_nvp('TOKEN', $_REQUEST['token']);
$this->paypal_api_lib->add_nvp('PAYERID', $_REQUEST['PayerID']);
$this->paypal_api_lib->add_nvp('PAYMENTACTION', 'Sale');
$this->paypal_api_lib->add_nvp('AMT', $this->session->userdata('paypalAmount'));
$this->paypal_api_lib->add_nvp('CURRENCYCODE', 'EUR');
$this->paypal_api_lib->add_nvp('IPADDRESS', $_SERVER['SERVER_NAME']);
if($this->paypal_api_lib->send_api_call('DoExpressCheckoutPayment')) {
var_dump($this->paypal_api_lib->nvp_data);
} else {
paypal_errors();
}
}
}
Ayer nos preguntaban cómo cargar combos según lo que se seleccione en otro combo, y aunque no me quedó muy claro la duda que tenÃa, pues para intentar ayudarle, voy a explicar cómo hacerlo mediante tres posibilidades.
Primeramente explicaremos cómo hacerlo mediante el uso de iframes ocultos. SÃ, no es nada web 2.0, pero no a todo el mundo se le da bien el desarrollo web, o no le gusta el uso de Ajax, o simplemente, como me pasa a mÃ, no nos dejan usar Ajax en los desarrollos del cliente (¡vete a saber por qué!).
Después lo haremos mediante Ajax (¡viva la web 2.0!), pero instanciando nosotros mismos el objeto XMLHttpRequest, para que los conceptos de Ajax no se pierdan dentro del uso de librerÃas, es importante conocer la base para luego usar una librerÃa que te lo haga todo más fácil.
Y por último, ya no solo en plan web 2.0, sino en plan lo último de lo último, lo haremos usando la librerÃa Prototype. Que la verdad sea dicha, no se trata de reinventar la rueda.
Unos consejos interesantes sobre cómo mejorar el rendimiento de tus páginas cuando usas PHP.
VÃa / dzone
Un excelente tutorial que nos enseña como crear URL amigables y tratarlas para crear nuestras aplicaciones. Son URLs del tipo http://servidor/funcion/param1/param2, y gracias a ellas podemos hacer URLs más entendibles de forma sencilla. CodeIgniter las trata de la misma manera salvo que en vez de /funcion se trata de /clase/metodo, pero al final el tratamiento depende del que nosotros queramos darle.
Resumiendo un poco su funcionamiento, todas las llamadas deben pasar por un mismo script (normalmente index.php), mediante el .htaccess se redirecciona todo lo que llega al servidor al archivo index:
Options +FollowSymLinks
IndexIgnore */*
# Turn on the RewriteEngine
RewriteEngine On
# Rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Una vez todas las llamadas nos llegan al mismo script debemos obtener la función y los parámetro:
$requestURI = explode('/', $_SERVER['REQUEST_URI']);
El resto es sencillo y nos ofrece muchas posibilidades.
Comments are closed.
Voy a parecer la mosca cojonera del blog, pero aún asÃ:
Se ha estado hablando mucho de los acortadores de URLs. No son buenos.
-aportan un nuevo punto de fallo
-ocultan la dirección final (no sé donde me estoy dirigiendo, podrÃa ser un sitio con fama de contener virus y otro software dañino)
en caso de que se den de baja ( http://tr.im ) lo intentó hace poco y armó una buena en la blogosfera obligándoles a rectificar
-resulta innecesario su uso en la mayorÃa de ocasiones y, como se indica en varios sitios, lo correcto es una de las siguientes dos opciones:
1) que cada sitio se gestione sus propias URLs cortas de forma que si el sitio se da de baja también se pierden las URLs cortas, pero al menos ya depende de un punto de fallo (la página en la que se publican).
2) que los sitios más importantes empiecen a ofrecer el servicio de URLs cortas como permalinks a los artÃculos. Si el script publicado aquà tiene esa finalidad, perfecto, ese serÃa el camino a seguir.
Estoy de acuerdo con alsanan, y añado otro argumento: el rendimiento. Una redirección extra significa más tiempo de espera y mayor carga para las conexiones y servidores. De hecho, la existencia de los acortadores sólo tiene sentido por cosas como Twitter –lo cual me parece una estupidez porque bien podÃa Twitter permitir poner enlaces sin ser necesario poner la URL en el texto del mensaje–, y de hecho yo ya he visto ejemplos donde se utilizan acortadores para ocultar el verdadero destino del enlace (publicitario).
No obstante, si se van a usar acortadores de URL, mejor que sean scripts conocidos y libres como el que presenta el post.
Un saludo.