domingo, 2 de junio de 2013

Guía para empezar a usar Tor

Info:http://www.eldiario.es/turing/Primeros-pasos-navegacion-segura-Tor_0_126337372.html

The Onion Router, más conocido como Tor, es una herramienta que busca salvaguardar nuestra identidad en la red.
En esta breve guía daremos una referencia sobre el uso sencillo de una red que garantiza un buen nivel de privacidad en nuestras conexiones. En esta ocasión queremos ofrecer los pasos más básicos para su empleo.
 
De manera recurrente, el protocolo Tor salta a primera línea de la información generalista casi siempre de manera negativa. Se habla de el uso menos ejemplar de esta red, como si el comportamiento delictivo fuera inherente no de los individuos sino de los instrumentos que emplean, y esto suele servir como excusa para los que pretenden erigirse en guardianes de una seguridad que siempre termina amparando algún negocio o intento de control ciudadano. Frivolizar a propósito de la web profunda y sacar algún ejemplo de pedófilos o narcotraficantes parece ser excusa suficiente para los que recurren al  argumento de la seguridad para justificar la censura o el espionaje.

Sin la  colaboracion de una serie de organizaciones e individuos, que ceden parte de su ancho de banda para encaminar las comunicaciones, esta red no sería posible. Cada vez somos más conscientes de que entidades gubernamentales y empresas acechan nuestras comunicaciones con diversos fines.  Legislaciones como CISPA, podrían significar el  fin de toda clausula de privacidad en empresas cuya razón social esté radicada en Estados Unidos, lo que significa prácticamente su totalidad.

Las inquietudes a propósito de noticias acerca de cómo nuestras comunicaciones pueden ser intervenidas se han visto reflejadas en muchos comentarios de nuestros lectores que apuntaban en la dirección de proteger su privacidad. Partiendo de la idea de ofrecer unas pautas sencillas para añadir una capa extra de protección y anonimato a nuestras comunicaciones hemos pensado en ofrecer esta pequeña guía. En ella emplearemos el paquete que incluye un navegador integrado y todas las herramientas esenciales.

Instalando Tor

La característica que hace más atractivo el uso de Tor es su capacidad de ofrecernos un nivel de anonimato a través de una red bastante grande sin demasiadas complejidades técnicas. La idea es que  cualquier persona sin excesivos conocimientos técnicos  pueda utilizar esta red para que sus comunicaciones se hagan difíciles de rastrear e intervenir. Para conseguir este objetivo inicial Tor ha desarrollado un software específico que funciona de forma integrada y sencilla.

En nuestra referencia, vamos a centrarnos en el paquete más sencillo que se nos ofrece. El paquete integrado  en una versión portable denominada   Tor Browser Bundle   que puede ser empleada en los principales sistemas operativos  Windows, Mac OSX  32 bit o  64 bit y Linux en versiones  32 bit y  64 bit. La principal ventaja que nos ofrece es la posibilidad de ejecutarlo desde cualquier lugar y poder llevarlo en nuestras memorias USB sin tener que prestar especial atención a configuraciones u otros aspectos.

Una vez descargado   Tor Browser Bundle, nos lo descomprimirá en el directorio que prefiramos. Una vez en este, veremos una serie de directorios y un ejecutable, en Windows " Start Tor Browser". Una vez ejecutado nos despliega un panel.

Navegación segura con Tor
Navegación segura con Tor

Vamos a describir el uso del navegador integrado. Este ya trae integradas varias herramientas que emplean una versión portable de Firefox, con el Panel de control Vidalia, HTTPS Everywhere (creado por la EFF) y  NoScript, que permite bloquear JavaScript Java y  Flash. Con ellas tendremos más que suficiente para garantizar unos niveles bastante elevados de seguridad en nuestra navegación sin que esta se vea entorpecida ni ralentizada.

Navegación segura con Tor 2
Navegación segura con Tor 2

Navegación segura con Tor 3
Navegación segura con Tor 3

Uso básico de Tor


Una vez incitado pulsado  Start Tor Browser, nos aparecerá el panel de control Vidalia. Mediante este panel tenemos acceso a los principales componentes de esta herramienta. De forma automática nos conecta a la red Tor y nos carga el navegador  Firefox portable incluido con todas las características que hemos indicado.

En la primera página que nos abre, veremos que se conecta a la web de Tor que comprueba si nuestra versión es correcta y está actualizada y nos muestra la IP que tenemos en este momento a través de su red. Desde este momento podemos navegar sin mayor problema. A pesar de esto debemos tener en cuenta que la mayor parte de  plugins, códecs y scripts que son empleados usualmente se encuentran debilitados por defecto , por lo que partes generalmente accesorias de las páginas que visitemos a través de esta red pueden no aparecer.

Si nos animamos, podemos variar las configuraciones prefijadas para aumentar los niveles de filtrado o formar parte de la comunidad aceptando ser repetidor de otros. Incluso esta versión de Tor incluye herramientas para conocer qué pasarelas estamos empleando y qué ancho de banda nos ofrecen. Así podemos cambiar de conexión puente y obtener una nueva IP con solo pulsar “ usar nueva identidad”.  También podemos observar cuáles son y desde dónde comparten estos repetidores.

Navegación segura con Tor 4
Navegación segura con Tor 4

Navegación segura con Tor 5
Navegación segura con Tor 5

Las cookies son uno de los aspectos que quizás más tengamos que tener en cuenta. Si en nuestra navegación convencional no las hemos eliminado, la existencia de estos elementos puede revelar nuestra identidad al ser cargadas. Lo más recomendable es que los navegadores instalados estén configurados para eliminarlas. En caso de duda,  aplicaciones de limpieza como CCleaner las eliminarán antes de iniciar nuestra sesión con Tor.

Navegación segura con Tor 6
Navegación segura con Tor 6

Las cinco reglas usando Tor


  1. Usar el navegador Tor. Tener especial cuidado de no salir a la hora de pulsar en ciertos enlaces. Una vez fuera del entorno asegurado por Tor volvemos a estar expuestos.
  2. No habilitar ni instalar  ningún plugin. Por defecto envían y reciben información que puede no estar cifrada. Muchos de estos comprometen nuestra privacidad abiertamente.
  3. Usar las versiones seguras de todas las páginas mediante el protocolo HTTPS. Con ese encabezado deben ir siempre nuestras direcciones y si no lo brindan hay que forzarlas con HTTPS Everywhere que viene instalado en el paquete y utiliza el uso cifrado mediante  HTTPS. Para comprobarlo solo hay que observar en la barra de direcciones que siempre empiecen por    https://
  4. No abrir ningún documento descargado mientras tengamos conexión abierta. Documentos en formato DOC y PDF son muy susceptibles de contener enlaces y vulnerabilidades que pueden conectarnos a internet mediante una ruta no cubierta por Tor. La recomendación más sencilla es la de permanecer desconectados a la hora de abrir este tipo de ficheros.
  5. Tor emplea  conexiones-puente para dificultar el rastreo de IPs. Sin embargo, el uso de Tor sí que puede ser detectado. Cuanto más intermediarios haya entre la conexión de entrada y la de salida, los saltos que da nuestro paquete de datos hasta que llega al servidor final, más difícil será detectarlo. Por ello formar  parte de la red de puentes es una buena idea para facilitar a otros usuarios de la comunidad un acceso como el que queremos para nosotros mismos.

Para ampliar nuestro conocimiento


Aquí solo hemos apuntado las cuestiones más básicas. En internet existen multitud de recursos y lugares donde se nos explica de forma muy detallada el uso de Tor. La propia página del proyecto nos brinda las herramientas mas básicas para su uso. Asimismo, organizaciones activistas como la  Electronic Frontier Foundation o el  proyecto Security in a box nos brindan detallados tutoriales y herramientas complementarias para tener una experiencia más segura y controlada por nosotros mismos a propósito de nuestra navegación.

Existen múltiples herramientas como  Tails, una  distribución completa preparada para usarse como Live CD o con memorias USB e incluso una aplicación Android denominada  Orbot, muy recomendable si empelamos redes wifi  públicas.
 

viernes, 17 de mayo de 2013

Google combina el almacenamiento de Gmail, Drive y Google+ Fotos y lo amplia a 15GB en total

Con este nuevo espacio de almacenamiento combinado, no tendremos que preocuparnos acerca de cuánto está almacenando y donde. De esta manera si desaprovechábamos el espacio en Gmail porque teníamos poco correo pero el de Docs y Google+ Fotos se nos quedaba corto al combinarlos.

También están haciendo cambios a la página de almacenamiento de Google Drive, por lo que se verá mejor cómo se está utilizando el espacio utilizado. Simplemente hay que poner el cursor sobre el gráfico para ver el detalle de su uso a través de la unidad de almacenamiento de Gmail, y Google + Fotos.  Estos cambios en el almacenamiento de Google se lanzarán durante las próximas dos o tres semanas.

Android Studio, el nuevo IDE de Google para desarrollar en Android

Android Studio, un IDE especializado para Android que llega para sustituir a Eclipse a la hora de crear aplicaciones.
Android Studio está basado en IntelliJ IDEA, un IDE para Java de Jetbrains, así que no empiezan de cero: de hecho, la base es realmente buena. Sobre eso han desarrollado características específicas para desarrollar en Android.

Por ejemplo, Android Studio ofrece la posibilidad de ver en directo los cambios al diseño de las aplicaciones en las diferentes resoluciones que soporta Android. La misma interfaz nos permite ver cómo aparece la aplicación con cada traducción.
También tenemos información útil en el margen de la pantalla de código, como iconos o colores según los mencionemos en el código. Además, Android Studio incluye integración con Google Cloud Messaging, para no tener que salir del IDE.
En general, Android Studio parece una muy buena herramienta. Google por fin toma la iniciativa para lanzar un IDE propio, y la base de IntelliJ IDEA es realmente buena (y superior a Eclipse desde mi punto de vista). Habrá que ver si Google anuncia más novedades que lo hagan aún más interesante.

miércoles, 13 de febrero de 2013

Mandar un mail con Php

El formato de los mensajes está especificado en una serie de normas conocidas como el MIME (Multipurpose Internet Mail Extensions) en las que se establecen los contenidos y la sintaxis de las diferentes partes de un mensaje

Recordemos que la función

mail(destinatario, asunto, mensaje, cabecera)

Tiene cuatro parámetros y que las especificaciones del MIME aluden a los dos últimos, es decir a mensaje (el cuerpo del mensaje) y cabecera que es el encabezado del mismo. Respecto a destinatario y asunto no se requieren más comentarios que reiterar la necesidad de incluir esos valores (e-mail del destinatario y asunto) bien directamente, como parámetro en la función, o a través de una variable.

Cabeceras de los mensajes (headers)

Los diferentes elementos de la cabecera de un mensaje deben insertarse siempre separados por saltos de línea bien pulsando Enter o incluyendo la secuencia \n dentro de la misma de línea. No pueden incluirse espacios, ni al comiezo de las nuevas líneas ni después de \n, y las comillas –que han de contener todo el encabezado– se abren delante del primero de ellos y no se cierran hasta después de haber escrito el último. Pueden contener lo siguiente:
Date: xxxxx
Date: debe escribirse con esta sintaxis exactamente. El parámetro xxxxx es una cadena que contendrá la fecha de envío del mensaje y que puede obtenerse a través de una de las funciones de fecha de PHP tal como puedes ver en el ejemplo.
MIME-Version: 1.0
Este elemento de la cabecera especificará la versión MIME que ha de utilizar el cliente de correo para poder interpretar adecuadamente el contenido de los mensajes.
From: remitente
Este elemento de la cabecera permite indicar el nombre del remitente (remitente) y su dirección e-mail siguiendo la sintaxis que se especifica. El nombre, como un elemento independiente y la dirección e-mail dentro de < >.

¡Cuidado!

No debemos poner comillas ni en el nombre del remitente, ni en la dirección e-mail, ni en la fecha, etcétera.

Otros pueden ser Cc: y Bcc: ; Reply-To: y X-Mailer.

Si no se especifica lo contrario, los mensajes se envían como texto sin formato, pero existen opciones que permiten especificar el formato que ha de tener un mensaje. La especificación de un formato obliga a incluir otro elemento en cabecera del mensaje:
Content-Type:
Este elemento debe ir seguido de la especificación en la que se indique el tipo de contenido. Tiene la sintaxis: tipo/subtipo. Hablaremos de dos de ellas:
  • text/plain
    El text/plain es la opción por defecto y señala que el contenido del mensaje es de tipo texto (text) y del subtipo sin formato (plain)
  • text/html
    Como la opción anterior, es tipo texto, pero en este caso, el subtipo es html con lo cual el mensaje se visualizará en formato html siempre que el cliente de correo permita esa posibilidad.
Los tipos anteriores permiten enviar mensajes simples (sin ficheros adjuntos) en uno u otro formato, pero el MIME nos da opciones para insertar dentro de un mismo mensaje elementos de diferentes tipos y subtipos. Las opciones de mayor interés son las siguientes:
  • multipart/alternative
    Es la forma de especificar que el mensaje tiene varias partes (multipart) de las que el destinatario ha de ver una sola (alternative). Se podría utilizar en casos en los que sea necesario prever la posibilidad de que un mensaje con formato HTML pueda ser visualizado como texto plano cuando el cliente de correo no soporte HTML.
    Podemos hacer un mensaje a medida que se presentará de una forma u otra según el cliente utilizado para leerlo.
  • multipart/mixed
    Cuando en el Content-Type se establece el tipo multiparte y el subtipo mezclado (mixed) será cuando tengamos la posibilidad de adjuntar ficheros al mensaje.
    Las diferentes partes de un mensaje deben ir separadas – tanto en modo alternativo como mezclado– y para ello hay que incluir un nuevo elemento en el encabezado. Se trata de un separador al que se llama boundary.
boundary=cadena
Dentro del encabezado y siempre en línea aparte (fíjate que en los ejemplos o está en línea aparte o aparece el \n) debemos incluir el elemento boundary= (sin símbolo de $ delante) y detrás del signo igual una cadena (en este caso entre comillas) que en principio puede ser una cadena cualquiera que no contenga espacios, aunque lo habitual es incluirla con el formato que podemos ver en los ejemplos.
El cuerpo del mensaje
En su formato más simple el cuerpo del mensaje contiene únicamente texto, pero cuando se trata de multipartes deberá contener necesariamente: los separadores de las diferentes partes, los encabezados de cada una de las partes y sus respectivos contenidos. La secuencia habría de ser de este tipo:
  • Separador
  • Content-type

    – Los tipos y subtipos más habituales son los siguientes. Para incluir textos: los ya mencionados text/plain y text/html. Para imágenes y según el tipo de imagen: image/jpeg, image/gif. Para sonidos: audio/basic. Para vídeo: video/mpeg. Para ejecutables, comprimidos y otros ficheros adjuntos: application/octet-stream.

    – En cualquier caso, si quieres utilizar algún otro tipo de archivo puedes consultar en la web las especificaciones del MIME.

    – Aparte de tipo/subtipo puede añadirse a Content-type -en el caso de texto- separado por punto y coma, la especificación del tipo de alfabeto (charset=) seguida del tipo de codificación (te sugerimos el "ISO-8859-1" que hace alusión al alfabeto latino).

    – Cuando se trata de ficheros adjuntos deberemos poner, después del punto y coma, name= seguido del nombre y extensión del fichero que se adjunta.
  • Content-Transfer-Encoding

    – Este apartado del encabezado puede especificar una de los siguientes codificaciones: 7BIT, 8BIT, BASE64, BINARY,QUOTED-PRINTABLE

    – La transferencia codificada en 7bit representa la codificación habitual en el formato ASCII de 7 bits. No permite caracteres ASCII con un código mayor que 127.

    Quoted-printable constituye una de las alternativas al formato ASCII de 7 bits. Esta codificación suele usarse cuando la mayoría de los caracteres del mensaje puede escribirse con formato US ASCII de 7 bits. Prevé que los caracteres con códigos ASCII superiores a 127 se expresen mediante un mecanismo especial evitando, entre otras cosas, que las letras con tilde y algunos otros caracteres especiales se visualicen incorrectamente. Es la forma de codificación más recomendable para textos.

    – La codificación en base64 convierte cadenas binarias en cadenas de texto, con lo cual pueden ser enviadas de forma más segura. Es la forma de codificación habitual de las imágenes y los ficheros exe, zip, etcétera.
  • Content-Disposition

    Se utiliza únicamente cuando se insertan ficheros adjuntos. Permite dos opciones: inline o attachment. La primera permite que los contenidos se visualicen junto con el cuerpo del mensaje mientras que bajo la segunda aparecerían como ficheros adjuntos.

    – Este elemento del encabezado lleva –separada por punto y coma– una segunda parte. El filename=, donde se puede especificar entre comillas un nombre y una extensión (igual o distinta de la original) con la que se denominará al fichero en el mensaje recibido.
  • Lectura del fichero

    Cuando se trata de insertar un fichero el proceso es el típico de lectura de ficheros, es decir:
    • – Hay que crear el identificador de recurso del fichero en modo lectura.
    • – Recoger en una variable el buffer de lectura.
    • – Cerrar el fichero.
  • Codificación

    Una vez recogido en el fichero a transmitir en una variable, el paso siguiente es codificar esa variable.Utilizaremos la codificación más habitual y flexible –base64– que requerirá el uso de las funciones base64_encode y chunk_split.
  • Cuerpo del mensaje
    La fase final del proceso es la de agrupar los diferentes trozos en una sola variable, que será la que se insertará como parámetro texto en la función e-mail.
  • Separador
  • .....
  • otra parte
  • ...
  • Separador final
  ¡Cuidado!  

La inserción de ficheros adjuntos requiere que éstos estén disponibles en el servidor por lo que, antes de enviarlos, habrá que subirlos al servidor utilizando un proceso como el que hemos analizado cuando hablábamos de Transferencia de ficheros.

Las cabeceras MIME de un mensaje
Aquí tienes un ejemplo con los diferentes elementos del encabezado de un mensaje. Como ves, hemos incluido todos los elementos dentro de la función mail.

mail("juan@mispruebas.as", "Cabeceras", "Prueba de cabeceras",
 "Date: 24 de Junio de 2001
MIME-Version: 1.0
From: Estudiante Perico
Cc:perico@mispruebas.as
Bcc:andres@mispruebas.as
Reply-To: perico@mispruebas.as
X-Mailer: PHP/".phpversion());
?>

Una forma un poco más depurada del script anterior podría ser esta que incluimos aquí debajo. Sus particularidades son las siguientes:
  • – Recogemos los datos en variables e insertamos en la función mail esas variables
  • – La variable $cabecera tiene algunas singularidades:
    • – La vamos construyendo añadiendo subcadenas: date, from, etc. etc.
    • – En cada subcadena dejamos pegado el contenido a las comillas iniciales
    • – Al final de cada subcadena (cada una contiene un elemento del encabezado) insertamos \n para el carácter especial que indica a PHP un salto de línea imprescindible

# datos del mensaje
$destinatario="juan@mispruebas.as";
$titulo="Cabeceras en variables";
$mensaje="Nueva prueba de cabeceras";
$responder="andres@mispruebas.as";
$remite="andres@mispruebas.as";
$remitente="Otra vez Andres"; //sin tilde para evitar errores de servidor
# cabeceras
$cabecera ="Date: ".date("l j F Y, G:i")."\n"; 
$cabecera .="MIME-Version: 1.0\n"; 
$cabecera .="From: ".$remitente."<".$remite.">\n";
$cabecera .="Return-path: ". $remite."\n";
$cabecera .="X-Mailer: PHP/". phpversion()."\n";

if( mail($destinatario, $titulo, $mensaje,$cabecera)){
   echo "mensaje enviado";}else{print "el mensaje no ha podido enviarse";
}  
?>

Mensaje con contenido alternativo

# creamos la variables "salto" para "mayor comodidad
# un salto es la secuencia retorno de carro-nueva línea
# dos saltos es algo similar pero duplicado

$UN_SALTO="\r\n";
$DOS_SALTOS="\r\n\r\n";

# creamos el remitente, etc. y también la que parte que
# contiene el código HTML del mensaje

$destinatario="juan@mispruebas.as";
$titulo="Mensaje alternativo Texto Plano - HTML ";
$mensaje="";
$mensaje .="Prueba HTML. ";
$mensaje .="aquí pueden ir tildes: á, é, í, ó, ú, ñ";
$responder="andres@mispruebas.as";
$remite="andres@mispruebas.as";
$remitente="Andres Perez y Perez";
// omitimos las tildes en encabezados para evitar errores de servidor

# creamos el separador de bloques del mensaje
# anteponiento "_separador" aunque podríamos haber puesto "tiburcio"
# generamos un identificador unico utilizando un numero aleatorio
# como "semilla" y luego lo codificamos con la función md5

$separador ="_separador".md5 (uniqid (rand())); 

# creamos la variable cabecera con los elementos
# ya utilizados en los ejemplos anteriores y ponemos al final
# de cada elemento UN SALTO DE LINEA

$cabecera = "Date: ".date("l j F Y, G:i").$UN_SALTO; 
$cabecera .="MIME-Version: 1.0\n"; 
$cabecera .="From: ".$remitente."<".$remite.">".$UN_SALTO;
$cabecera .= "Return-path: ". $remite.$UN_SALTO;
$cabecera .="Cc:perico@mispruebas.as".$UN_SALTO;
$cabecera .="Reply-To: ".$remite.$UN_SALTO;
$cabecera .="X-Mailer: PHP/". phpversion().$UN_SALTO;

# AQUÍ DEFINIMOS EL CONTENIDO MULTIPART, fíjate que lo acabamos con ";"

$cabecera .="Content-Type: multipart/alternative;".$UN_SALTO; 

# insertamos BOUNDARY (fíjate que dejo un espacio
# en BLANCO DELANTE y ponemos al FINAL los DOS SALTOS DE LINEA

$cabecera .=" boundary=$separador".$DOS_SALTOS;

# colocamos el primer separador(con los dos guiones delante)
# antes de insertar la primera parte del mensaje
# que es el texto plano para el caso de que el cliente de correo
# no soporte HTML

$texto_plano ="--$separador".$UN_SALTO; 

# especificamos el tipo de contenido y la codificación
# e inserto DOS SALTOS AL FINAL ya que ahi acaba la cabecera de esta parte
$texto_plano .="Content-Type:text/plain; charset=\"ISO-8859-1\"".$UN_SALTO; 
$texto_plano .="Content-Transfer-Encoding: 7bit".$DOS_SALTOS; 

# cambiamos las etiquetas "
" por saltos de línea
# y luego quitamos todas las etiquetas HTML del cuerpo del mensaje
# ya que el texto plano no debe llevar ese tipo de etiquetas

 $extractor= strip_tags(preg_replace("/
/", $UN_SALTO, $mensaje)); 

 $texto_plano .=$extractor;

# insertamos un nuevo separador para señalar el final
# de la primera parte del mensaje y el comienzo de la segunda
# en este caso ponemos UN SALTO delante del separador ya que de lo contrario
# al componer el mensaje se uniría con la cadena texto_plano anterior
# que no tiene SALTO DE LINEA AL FINAL

$texto_html =$UN_SALTO."--$separador".$UN_SALTO;

 # especificamos el encabezado HTML para el siguiente bloque
 # y ponemos en la ultima línea los DOS SALTOS DE LINEA

$texto_html .="Content-Type:text/html; charset=\"ISO-8859-1\"".$UN_SALTO; 
$texto_html .="Content-Transfer-Encoding: 7bit".$DOS_SALTOS; 
#añado la cadena que contiene el mensaje
 $texto_html .= $mensaje; 

# insertamos  SOLAMENTE un SALTO DE LINEA 
 # estamos al funal del mensaje

 $texto_html .=$UN_SALTO; 

 # unimos ambas cadenas para crear el cuerpo del mensaje

  $mensaje=$texto_plano.$texto_html;
 
 # enviamos el mensaje utilizando 

  
if( mail($destinatario, $titulo, $mensaje,$cabecera)){
 echo "mensaje enviado ";}else{print "ha habido errores en el envio";
}

?>

Mensaje con ficheros adjuntos

# definimos estas variables igual que en el ejemplo anterior

$UN_SALTO="\r\n";
$DOS_SALTOS="\r\n\r\n";

#incluimos en varias, asunto, un texto en HTML
# remitente, etc. etc.

$destinatario="perico@mispruebas.as";
$titulo="Mensaje con dos fichero adjuntos";
$mensaje="";
$mensaje .="Prueba HTML ";
$mensaje .="";
$responder="andres@mispruebas.as";
$remite="andres@mispruebas.as";
$remitente="Andres otra vez";

# definimos el separador de parte 
# con el mismo procedimiento del ejemplo anterior

$separador = "_separador_de_trozos_".md5 (uniqid (rand())); 

# insertamos los datos de la cabecera del mensaje
  
$cabecera = "Date: ".date("l j F Y, G:i").$UN_SALTO; 
$cabecera .= "MIME-Version: 1.0".$UN_SALTO; 
$cabecera .= "From: ".$remitente."<".$remite.">".$UN_SALTO;
$cabecera .= "Return-path: ". $remite.$UN_SALTO;
$cabecera .= "Reply-To: ".$remite.$UN_SALTO;
$cabecera .="X-Mailer: PHP/". phpversion().$UN_SALTO;

# especificamos el tipo de contenido mutipart/mixed
# ya que ahora insertaremos ficheros de distinto tipo

$cabecera .= "Content-Type: multipart/mixed;".$UN_SALTO; 

# insertamos el valor de boundary haciéndola igual a  $separador
# y acabamos con DOS SALTOS porque es el FINAL DE LA CABECERA

$cabecera .= " boundary=$separador".$DOS_SALTOS; 

/* Parte primera del envio -Mensaje en formato HTML
   ================================================

Separador inicial
------------------------------- */
$texto ="--$separador".$UN_SALTO;

/* Encabezado parcial
   ------------------  */
/* especificamos que este primer elemento
será texto y que irá codificado en formato 7 bits */

$texto .="Content-Type: text/html; charset=\"ISO-8859-1\"".$UN_SALTO; 
$texto .="Content-Transfer-Encoding: 7bit".$DOS_SALTOS; 

/* Contenido de esta parte del mensaje
   -----------------------------------*/
# ya teniamos escrito el texto del mensaje más arriba
# simplemente lo añadimos a la cadena de texto

  $texto .= $mensaje;

  #la variable $texto recoge esta parte del documento
  # la uniremos al final con las siguientes
 
/*  Separador de partes
    -------------------- */

$adj1 = $UN_SALTO."--$separador".$UN_SALTO; 

/* Parte segunda de mensaje -Fichero adjunto nº 1
   ==================================================== */

/* Encabezado parcial
   ------------------  */
# especificamos el tipo de contenido image/jpeg
# ya que ese será el documento que vamos a enviar
# ponemos el nombre del fichero (debemos tenerlo en el servidor
# con ese mismo nombre)
# establecemos in line como disposición para que pueda ser visualizado
# directamente en el cuerpo del mensajes
# en filename le asignamos el nombre con el que queremos que sea
# recibido por el destinatario
# por ultimo especificamos la codificacion como base64

$adj1 .="Content-Type: image/jpeg;";
$adj1 .=" name=\"casa08.jpg\"".$UN_SALTO;  
$adj1 .="Content-Disposition: inline; ";
$adj1 .="filename=\"leoncio.jpg\"".$UN_SALTO;
$adj1 .="Content-Transfer-Encoding: base64".$DOS_SALTOS; 

/* Lectura previa del fichero a adjuntar
   ------------------------------------------  */
    # abrimos el fichero en modo lectura (r)
   # y leemos todo su contenido midiendo previamente
   # su longitud con filesize
   # recogemos en $buff el contenido del fichero
   # y cerramos después

      $fp = fopen("casa08.jpg", "r"); 
           $buff = fread($fp, filesize("casa08.jpg")); 
       fclose($fp); 

/* Codificación del fichero a adjuntar
   ------------------------------------------  */
# codificamos en base 64 y troceamos en lineas de 76 caracteres
# y añadimos el resultado a la variable adj1

$adj1 .=chunk_split(base64_encode($buff)); 

/*  Separador de partes
    -------------------- */

$adj2 = $UN_SALTO."--$separador".$UN_SALTO; 

/* Tercera parte de mensaje -Fichero adjunto nº 2
   ==================================================== */

/* Encabezado parcial
   ------------------  */
# los contenidos del encabezado son similares al caso anterior
# con la salvedad de que el contenido es ahora
# application/octet-stream ya que contiene un fichero ejecutable
# y la disposicion es attachment, no tiene sentido tratar
# de visualizar un fichero zip

$adj2 .="Content-Type: application/octet-stream;";
              $adj2 .=" name=\"apachito.zip\"".$UN_SALTO; 
$adj2 .="Content-Disposition: attachment;
               filename=\"apachito.zip\"".$UN_SALTO;
$adj2 .="Content-Transfer-Encoding: base64".$DOS_SALTOS; 

/* Lectura previa del fichero a adjuntar
   ------------------------------------------  */
   # abrimos el fichero en modo lectura (r)
   # y leemos todo su contenido midiendo previamente
   # su longitud con filesize
   # recogemos en $buff el contenido del fichero
   # y cerramos después

      $fp = fopen("apachito.zip", "r"); 
         $buff = fread($fp, filesize("apachito.zip")); 
      fclose($fp); 

/* Codificación del fichero a adjuntar
   ------------------------------------------  */

$adj2 .=chunk_split(base64_encode($buff)); 

/*  Separador final YA NO HAY MAS PARTES
    ---------------------------------------- */

$adj2 .=$UN_SALTO."--$separador".$UN_SALTO; 

/*  Unión de todas las PARTES
    ---------------------------------------- */
# unimos en la variable mensaje todos los elementos
# y lo hacemos por el orden en el que fueron creados

  $mensaje=$texto.$adj1.$adj2;

/*  Envio del mensaje
    ---------------------------------------- */
  
if(mail($destinatario, $titulo, $mensaje,$cabecera)){
 echo "mensaje enviado";}else{print "ha habido problemas";

miércoles, 9 de enero de 2013

Permisos usuarios o roles en WordPress



Cuando queremos dar permisos a personas para que contribuyan en nuestro blog de WP tenemos la posibilidad de enmarcarlos dentro de 5 categorías o ROLES (Administrador, Editor, Autor, Colaborador, Seguidor).

Administrador.
Un administrador tiene acceso total al blog, puede hacer  y deshacer  todo, desde editar, cambiar  presentación, etc. Este rol implica poder absoluto sobre el blog, puede incluso borrar el  blog. Por lo que es aconsejable que sólo exista un solo administrador.

 Editor.
Un editor puede ver, editar, publicar y borrar los mensajes de las páginas, comentarios moderados, administrar las categorías, gestionar etiquetas, gestionar enlaces y subir archivos e imágenes.



Autor.
Un autor puede editar, publicar y borrar sus mensajes, así como subir archivos e  imágenes, pero sólo los propios, los que él haya creado.

Colaborador.
Un colaborador puede editar sus mensajes, pero no puede publicarlos. Cuando el colaborador crea un mensaje este tendrá que ser revisado por un administrador para su aprobación y publicación, a partir de ese momento ya no puede ser editado por el colaborador.
Un colaborador no tiene la capacidad de subir archivos e imágenes.

Seguidor.
Es aquel que se ha inscrito para poder recibir actualizaciones cada vez que se publique algo en el blog. No tienen ningún privilegio. 

Si tu blog es público, cualquiera puede seguirlo, pero es posible que desee enviar invitaciones a personas específicas a las que les gustaría seguirlo.