CC Creative Commons

Las personas desde siempre han tratado de cuidar sus intereses, y para esta finalidad surgieron los derecho de copyright, mediante los cuales se regula el desarrollo de las actividades creativas tanto personales como empresariales. La idea inicial de los derechos de copyright se fundamenta en que un creador de un determinado contenido este protegido ante las posibles copias malintencionadas que se puedan llevar a cabo de su trabajo, y que además pueda obtener un beneficio económico si otra persona desea hacer uso de ello.

Con la proliferación del uso de Internet, la situación cambió dastricamente, ya que ahora todo el mundo tiene acceso a una cantidad de información enorme. Es por esto que surge una iniciativa para cambiar la forma de regular todos estos copyright, denominada copyleft, la cual promueve que la cultura y la información este disponible para todas las personas, y además plantea unas formas de explotación de los derechos diferentes hasta lo que habia entonces. Fomentan, por ejemplo, la distribución gratuita de los contenidos siempre bajo unas estrictas condiciones de uso, que no deberán de ser violadas bajo ninguna circustancia.

Así nos podemos encontrar con el software libre publicado bajo licencia GPL, al cual puede acceder cualquier persona que lo desee sin ninguna restricción, siempre y cuando se ajuste a las normas de uso establecidas por el creador, incluso nos podemos encontrar que esa persona que esta disfrutando de ese producto puede llegar a contribuir en la mejora del mismo. Esto es una buena idea, ya que no tienes porque limitarte a las funcionalidades que haya tenido en cuenta el creador del software, sino que puedes añadirle tu mismo aquello que hechas en falta.

Esta idea también es buena para la gente del espectáculo que no tienen una gran repercusion mediática, ya que les permite acercarse a mucho más público del que podián hacerlo hace unos pocos años. Gracias a las licencias CC, te puedes crear tu propio cd en casa, y publicarlo en la red, sabiendo que tienes unos derechos sobre esa creación.

Este planteamiento del uso de internet para la difusión de la cultura más libre parece que no termina de convencer del todo a las grandes compañías del entretenimiento. Ya que estas prefieren ver a la red como su mayor enemigo en lugar de verlo como un medio de difusión masivo que les podría reportar muchos beneficios. La principal crítica que hacen estas entidades al uso de la red es el intercambio ilegal de los contenidos que hacen los usuarios. Pero el problema es que este tipo de empresas siempre han sido reacias a los cambios por miedo a perder la gallina de los huevos de oro que tienen en las manos.

Enviar email multiple con Php

En algunas ocasiones nos topamos con la necesidad de enviar email a una lista de correo, esto lo podemos hacer utilizando la librería PHPMailer el cual nos permite enviar emails con algunas opciones avanzadas para este tipo de labores.

Extraer datos de los destinatarios
Sea que tenemos una lista de clientes registrados en una base de datos tienda en la tabla clientes y deseamos enviarle un comunicado a cada uno de ellos de forma personalizada. Lo primero que tenemos que hacer es realizar la consulta a la base de datos y extraer los datos de estos clientes.

  1. mysql_connect("localhost", "usuario", "password");
  2. mysql_select_db("tienda");
  3. $result = mysql_query("SELECT nombres, email FROM clientes");
  4. while ($row = mysql_fetch_array($result)) {
  5. // echo $row["nombres"];
  6. }

Integrando con PHPMailer
El siguiente paso es hacer el envío de los correos, para ello primero incluimos la clase class.phpmailer.php, definimos los datos del remitente y creamos el mensaje personalizado en html y texto a enviar a la lista.

  1. require("class.phpmailer.php");
  2. $mail = new PHPMailer();
  3. $mail->Host = "smtp1.example.com";
  4. $mail->From = "list@domain.com";
  5. $mail->FromName = "List manager";
  6. $mail->Subject = "Subject del correo";
  7. mysql_connect("localhost", "usuario", "password");
  8. mysql_select_db("tienda");
  9. $result = mysql_query("SELECT nombres, email FROM clientes");
  10. while ($row = mysql_fetch_array($result)) {
  11. // HTML body
  12. $body = "Hola ".$row["nombres"].", ";
  13. $body.= "

    Les comunicamos el nuevo servicio...

    ";

  14. $body.= "List manager";
  15. // Text body
  16. $text = "Hola ".$row["nombres"].", \n\n";
  17. $text.= "Les comunicamos el nuevo servicio...\n\n";
  18. $text.= "List manager";
  19. // Configurar Email
  20. $mail->Body = $body;
  21. $mail->AltBody = $text;
  22. $mail->AddAddress($row["email"], $row["nombres"]);
  23. // Enviar el email
  24. if(!$mail->Send()) {
  25. echo "Error al enviar a: " . $row["email"] . "
    "
    ;
  26. }
  27. $mail->ClearAddresses();
  28. }

Nótese que incluimos la dirección del destinatario con el método AddAddress en donde le pasamos el email y el nombre de la persona a la que deseamos enviar el email y finalmente utilizamos ClearAddresses el cual elimina las email a los cuales se ha enviado anteriormente el mensaje, de esta forma le llegará a cada usuario una mensaje único si necesidad de mostrar a quienes mas se esta enviando el mensaje.

Observaciones
En el caso que se quiera enviar a listas muy grandes, se deben cambiar algunos parámetros de configuración de PHP por ejemplo el tiempo de ejecución para que no se detenga el envío si el tiempo de proceso excede el tiempo de configuración. Una solución es hacer el envío en bloques de 500 o en bloques de 1000 por vez por ejemplo con lo cual no se superará el tiempo limite.

Finalmente les dejo los archivos fuente para que lo descarguen y realicen sus propias pruebas.

Convertir texto en URL SEO

Una de las tareas más comunes en el desarrollo de Web optimizada para los buscadores es el generar los URL en formato SEO, es decir que contengan el titulo, pero que no contengan tildes, comas, espacios en blanco. Esta vez les presentamos la forma de convertir los títulos en URLs optimizadas para los buscadores.

Implementando la text2url
A la función encargada de convertir un texto normal en formato URL la llamaremos text2url, implementaremos esta función en PHP. El primer paso es eliminar los espacios al inicio y al lcon la función trim, luego convertimos todo a minúsculas, luego limitamos los caracteres a números y letras y convertimos los demás caracteres en guiones. Adicionalmente eliminamos los saltos de línea, tabuladores y finalmente reemplazamos los espacios en blanco por un separador que en nuestro caso hemos asignado al guion (-).
function text2url($string) {
$spacer = "-";
$string = trim($string);
$string = strtolower($string);
$string = trim(ereg_replace("[^ A-Za-z0-9_]", " ", $string));

$string = ereg_replace("[ \t\n\r]+", "-", $string);
$string = str_replace(" ", $spacer, $string);
$string = ereg_replace("[ -]+", "-", $string);
return $string;
}


Para hacer uso de esta función simplemente le pasamos como parámetro el texto que deseamos convertir a URL. Podemos ver un ejemplo de uso en el siguiente código.
$title = "MoFuse Versión movil de tu Web en Español";
echo $title;
// MoFuse Versión movil de tu Web en Español
echo text2url($title);
// mofuse-versi-n-movil-de-tu-web-en-espa-ol


Un ejemplo practico de de uso de esta función es el momento de guardar información en nuestra base de datos, por ejemplo si tenemos un tabla donde guardamos los datos de nuestros productos, la forma de insertar esta información incluyendo el URL sería de la forma:
$name = $_POST['name'];
$content = $_POST['content'];
$url = text2url($_POST['name']);

$sql = "INSERT INTO products (name, content, url)
VALUES ('".$name."', '".$content."', '".$url."')";
mysql_query($insertSQL, $conn) or die(mysql_error());


Obviamente esta es una función básica que aunque cumple con los requisitos de crear URL amigables, se podría mejorar con la posibilidad de convertir la vocales tildadas o con diéresis en vocales normales, la cual con un poco de trabajo se puede implementar.

Detectar IE6 en HTML

Uno de los grandes problemas al implementar websites es lograr la compatibilidad con la mayoría de los navegadores, pero el principal es Internet Explorer 6 pues presenta la mayor cantidad de bugs. Para ello les presentamos varias formas de detectar IE6 en diferentes lenguajes.

Detectar IE6 en HTML
Si queremos detectar IE6 en HTML podemos hacer uso de las formas condicionales, para ello detectamos exactamente si estamos en IE6.



Podríamos mejorar este código si detectamos si el navegador es menor a IE7 pues todas estas versiones tienen problemas con lo cual tendríamos:



Detectar IE6 en Javascript
Otro de los métodos es utilizar Javascript, para ello el método mas utilizado es:
var is_ie6 = (
window.external &&
typeof window.XMLHttpRequest == "undefined"
);


Ahora también existe una versión mas corta detectar IE6 propuesta por Dean Edwards:
var isMSIE = /*@cc_on!@*/false;


Detectar IE6 en PHP
Ahora si la detección la queremos hacer al nivel de servidor podemos utilizar el siguiente script:
$browser = $_SERVER['HTTP_USER_AGENT'];
$browser = substr("$browser", 25, 8);
if ($browser == "MSIE 6.0"){
// Accion a ejecutar para IE6
}

xml2array: PHP XML Parser

xml2array es un función escrita en PHP que nos permitirá convertir rápidamente datos en formato XML a un array con lo cual será sencillo acceder a cada una de sus propiedades y atributos. Esta función es especialmente útil en PHP4 pues no contiene métodos sencillos para la manipulación de XML como si lo tiene PHP5.

Obteniendo la función
Para descargar esta función, es necesario acceder a la web del autor de xml2array, copiar el código allí mostrado en un archivo llamado xml2array.php o al archivo donde estén nuestras funciones.

Utilizando xml2array
Luego para utilizar esta función le pasamos como parámetro un texto que contiene el XML y lo devolverá automáticamente en array, entonces si queremos acceder a un archivo que contiene el XML utilizaremos la función file_get_contents previamente.

  1. require("xml2array.php");
  2. $contents = file_get_contents('demo.xml');
  3. $result = xml2array($contents);
  4. print_r($result);

Nótese que hemos utilizado print_r, el cual imprime un array tabulado para facilitar la lectura. Veamos un ejemplo práctico de como se accede a los datos utilizando esta función.

  • <"lang type="interpreted"">
  • PHP
  • Python
  • JSP
  • Ruby
Luego de utilizar esta función los datos se encuentran formateados de la siguiente forma:

Array
(
[lang] => Array
(
[attr] => Array
(
[type] => interpreted
)
[name] => Array
(
[0] => Array
(
[value] => PHP
[attr] => Array ( [id] => 1 )
)
[1] => Array
(
[value] => Python
[attr] => Array ( [id] => 2 )
)
[2] => Array
(
[value] => JSP
[attr] => Array ( [id] => 3 )
)
[3] => Array
(
[value] => Ruby
[attr] => Array ( [id] => 4 )
)
)
)
)

Entonces si deseamos conocer cuales son los valores de los lenguajes con sus respectivos identificadores, tendríamos:

require("xml2array.php");
$contents = file_get_contents('data.xml');
$result = xml2array($contents);

$langs = $result['lang']['name'];
for ($i=0; $i < sizeof($langs); $i++) { echo $langs[$i]['attr']['id']." - ".$langs[$i]['value']; } sizeof($langs); Pueden ver el ejemplo funcionando en xml2array/index.php y el XML original el xml2array/data.xml. Como pueden ver una vez que esta convertido en XML es sencillo recorrer la información contenida en el array.

Modelo Vista Controlador en Php sin Utilizar Clases

MVC viene de Model, View, Controller, o bien: Modelo, Vista y Controlador.La idea básica de éste patrón es separar nuestros sistemas en 3 capas, El Modelo, La Vista y el Controlador. La idea será intentar aplicar esta metodologia de desarrollo al lenguaje Php.

El Modelo se encarga de todo lo que tiene que ver con la persistencia de datos. Guarda y recupera la información del medio persistente que utilicemos, ya sea una base de datos, ficheros de texto, XML, etc.

La Vista presenta la información obtenida con el modelo de manera que el usuario la pueda visualizar.

El Controlador, dependiendo de la acción solicitada por el usuario, es el que pide al modelo la información necesaria e invoca a la plantilla(de la vista) que corresponda para que la información sea presentada.

Para ver un ejemplo de codigo se puede acceder al siguiente enlace
MVC sin Clases

Php Data Objects (PDO)

Cuando estamos desarrollando una aplicacion deberiamos de tener en cuenta que las fuentes de datos que estemos usando podrian ser cambiadas, y deberiamos de ofrecer un mecanismo que permita realizar dicha migración en nuestro codigo sin demasiado esfuerzo por nuestra parte.

En php podemos recurrir a la extension PDO (Php data objects), que se encarga de ofrecernos un interfaz de acceso comun independientemente de la base de datos que estemos atacando. De este modo si en algun momento desamos cambiar el tipo de la base de datos sobre la que estamos trabajando, tan solo tendremos que modificar el driver a utilizar en el constructor del objecto PDO.

Para poder utilizar los objectos PDO en tus desarrollos con php, deberás de disponer de una version de php 5.1 o superior.

Si deseas ver algunos ejemplos de código puedes visitar estas dos páginas:

http://www.jourmoly.com.ar/php-data-objects-pdo/
http://www.mclibre.org/consultar/php/lecciones/php_db_pdo.html