feed twitter facebook LinkedIn facebook

PHP » Contraseña aleatoria con php

Marzo 28, 2011 por Jose Sevilla . 2623 visitas 2 Comentarios Imprimir Imprimir

En algunos casos, nos vemos con la necesidad de crear de un conjunto de caracteres alfanuméricos para un uso específico posterior. Un uso habitual podría ser para generar una contraseña aleatoria en un nuevo registro de tu web.

Primero, creamos dos variables que puedes personalizar a tu necesidad.

$caracteres='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$longpalabra=8;

Puedes personalizar la longitud de la contraseña a generar con la variable $longpalabra, y los caracteres que compondrán la contraseña en la variable $caracteres.

A continuación, creamos un bucle para obtener un valor aleatorio en cada ciclo y que se detenga cuando consigamos la longitud deseada.

for($pass='', $n=strlen($caracteres)-1; strlen($pass) < $longpalabra ; ) {
  $x = rand(0,$n);
  $pass.= $caracteres[$x];
}

Para conseguir el resultado, hemos usado el método de bucle for que nos ofrece PHP, siendo uno de los ciclos más completos, ya que nos permite usar tres expresiones en su sintaxis.

Sintaxis de un ciclo for:

for (expresion1; expresion2; expresion3) {
  sentencia
}
  • La primera expresión se ejecutará una única vez al iniciar el ciclo. Puede contener varias expresiones separadas por coma.
  • La segunda expresión será evaluada antes de iniciar el ciclo, si su valor obtenido es TRUE el ciclo se ejecutará hasta que el valor obtenido sea FALSE. En el caso de tener varias expresiones separadas por coma, únicamente tendrá en cuenta el valor de la última expresión.
  • La tercera expresión se ejecutará cada vez que se termine el ciclo. Puede contener varias expresiones separadas por coma.

Si os fijáis en el código, en la primera expresión la aprovechamos para crear la variable vacía que almacenará nuestra contraseña generada, y para contar los caracteres con la función strlen() a la que restamos un valor añadiendo -1 ya que cuando utilicemos la cadena de texto mas adelante, el primer carácter al igual que sucede con un array corresponde el número 0 y no al número 1. Por ejemplo, podemos contar 20 caracteres pero en la variable estarán asignándolos del 0 al 19, y no del 0 al 20 que sumarían 21.

En la segunda expresión del código, aprovechamos para poner nuestra condición.

Dentro de la sentencia, la función rand() nos dará como resultado un numero aleatorio desde el 0 al número de caracteres disponibles, el cual utilizaremos para añadir el valor a la variable donde almacenamos nuestra contraseña.

Ya podemos usar nuestra contraseña almacenada en la variable $pass.

El código completo sería:

$caracteres='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$longpalabra=8;
for($pass='', $n=strlen($caracteres)-1; strlen($pass) < $longpalabra ; ) {
  $x = rand(0,$n);
  $pass.= $caracteres[$x];
}
print 'Nuestra contraseña obtenida es: ' . $pass;

PHP » Descargar emails de GMail con PHP

Marzo 25, 2011 por Víctor Cuervo . 2535 visitas 1 Comentario Imprimir Imprimir

Una aplicación práctica para descargarte emails con IMAP y PHP es decargarnos los correos de GMail.

Lo primero que tenemos que hacer es confirmar que tenemos activado el acceso por IMAP en nuestra cuenta de GMail. Para ello tenemos que ir a:

Mail Settings » Forwarding and POP/IMAP » IMAP Access

Seleccionamos la opción Enable IMAP y guardamos los cambios.

Lo segundo que tenemos que saber es que al servidor de IMAP de GMail se accede mediante la siguiente configuración:

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'usuario@gmail.com';
$password = 'password';

Hay que tener cuidado ya que se utiliza el puerto 993 para acceder por IMAP.

Los siguientes pasos son los mismos que explicamos en cómo descargarte emails con IMAP y PHP o en cómo decargarte emails con POP3 y PHP. Pero dejemos el código impreso:

$emails = imap_search($inbox,'ALL');
if($emails) {
  $salida = '';
  foreach($emails as $email_number) {
    $overview = imap_fetch_overview($inbox,$email_number,0);
    $salida.= 'Tema: '.$overview[0]->subject;
    $salida.= 'De: '.$overview[0]->from;
  }
  echo $salida;
}
imap_close($inbox);

PHP » Descargar emails con IMAP y PHP

Marzo 24, 2011 por Víctor Cuervo . 2349 visitas 2 Comentarios Imprimir Imprimir

En el artículo Descargar emails con POP3 y PHP ya vimos como acceder a nuestro email mediante POP3. Ahora vamos a ver qué pequeñas modificaciones hay que hacer para acceder a un servidor vía IMAP.

La principal modificación está en la definición del hostname que utilicemos al establecer la conexión con imap_open. Los servidores de correo suelen atender el protocolo IMAP por el puerto 143.

$hostname = '{aulambra.com:143/imap/ssl}INBOX';
$username = 'usuario@aulambra.com';
$password = 'password';
 
$inbox = imap_open($hostname,$username,$password) or die('Ha fallado la conexión: ' . imap_last_error());

En este caso este servidor de email necesita de una conexión segura. Es por ello que utilizamos el flag /ssl.

El resto de pasos son iguales que con POP3. Hacemos el filtrado de mensajes mediante imap_search:

$emails = imap_search($inbox,'ALL');

El siguiente paso será recorrerlos accediendo a su cabecera con imap_fetch_overview:

foreach($emails as $email_number) {
  $overview = imap_fetch_overview($inbox,$email_number,0);
  $salida.= 'Tema: '.$overview[0]->subject;
  $salida.= 'De: '.$overview[0]->from;
}

Y por último no se nos puede olvidar la conexión con imap_close:

imap_close($inbox);

Lo mejor que puedes hacer es ver todo el código para descargar emails con IMAP y PHP y jugar con él.

PHP » Saber cuántos emails tenemos con PHP

Marzo 23, 2011 por Víctor Cuervo . 2476 visitas 2 Comentarios Imprimir Imprimir

Si ayer vimos como conectarnos a nuestro servidor de email utilizando POP3, hoy vamos a explotar esta característica para saber cuántos emails tenemos en nuestro buzón de correo mediante PHP.

Lo primero realizar la conexión mediante imap_open. Para ello pasamos el hostname, usuario y password.

$hostname = '{mail.aulambra.com/notls}INBOX';
$username = 'usuario@aulambra.com';
$password = 'password';
 
$inbox = imap_open($hostname,$username,$password) or die('Ha fallado la conexión: ' . imap_last_error());

En el caso de no conectarnos se mostrará en pantalla el motivo del error.

Recuerda que la opción /tls de imap_open es para evitar la creación de una conexión segura.

Ahora, para saber cuántos emails tenemos en el buzón vamos a utilizar la función imap_num_msg, la cual recibe la conexión que hemos establecido con imap_open como parámetro.

$numero_emails = imap_num_msg($inbox);
echo "Tienes ".$numero_emails." mensajes en tu correo";

De una forma sencilla tenemos el número de emails en pantalla. Ahora ya solo nos quedará cerrar la conexión mediante imap_close.

imap_close($inbox);

PHP » Descargar emails con POP3 y PHP

Marzo 22, 2011 por Víctor Cuervo . 2815 visitas 5 Comentarios Imprimir Imprimir

Descargar emails con POP3 y PHP es una operación muy sencilla y que solo requerirá el conocimiento de dos o tres funciones. De esta forma podremos crear una página PHP que liste nuestros emails descargandolos con POP3.

Lo primero es conocer la función imap_open. Esta función es la que nos permitirá conectarnos con el servidor de email vía POP3.

La función imap_open a parte de POP3 también permite descargas de email mediante IMAP y de news mediante NNTP.

La función imap_open tiene la siguiente estructura:

imap_open($mailbox, $username, $password [, $options, $retries, $params]

De los tres parámetros obligatorios de imap_open tenemos:

  • mailbox, buzón que contiene el email que nos queremos descargar con POP3.
  • username, Nombre del usuario que se conecta al buzón. Suele ser una dirección de email.
  • password, la contraseña del usuario.

Así, que lo primero será declarar los valores de estos parámetros en variables:

$hostname = '{mail.lineadecodigo.com/notls}';
$username = 'usuario@lineadecodigo.com';
$password = 'mipassword';

El que tiene más complicación es el nombre del mailbox. La estructura del mailbox suele ser la siguiente:

{servidor:puerto/flags}carpeta

En nuestro caso mail.lineadecodigo.com es el nombre del servidor. El puerto no lo indicamos, aunque en el caso de acceder vía POP3 utilizaremos el 110. El parámetro /notls son las opciones de conexión. En este caso al utilizar /notls indicamos al servidor que no inicie una sesión segura (por simplicidad). Tampoco hemos indicado la carpeta de la que queremos recuperar los emails mediante POP3. Al no ponerla se toma INBOX como por defecto.

Pasemos a conectarnos con imap_open:

$inbox = imap_open($hostname,$username,$password) or die('Ha fallado la conexión: ' . imap_last_error());

La sentencia or die permite gestionar el caso de fallo en la conexión.

Una vez que tenemos la conexión pasamos a listar los emails. Para ello tenemos varias funciones, aunque nosotros nos centraremos en imap_search() esta función busca los emails bajo un determinado criterio. Nosotros utilizaremos el criterio "ALL", es decir, todos los emails.

$emails = imap_search($inbox,'ALL');

Ahora tendremos un array en $emails con todos los email de nuestro inbox. Es por ello que los recorreremos mediante un bucle for-each.

foreach($emails as $email_number) {...}

La estructura del email tiene varias partes, pero nosotros nos centraremos en la cabecera. En la cabecera es dónde va la información de la persona que nos lo envió, el tema del email,... Para recuperar la cabecera de un email utilizamos la función imap_fecth_overview. A esta función le pasamos el buzón y el email del que queremos recuperar la cabecera.

foreach($emails as $email_number) {
    $overview = imap_fetch_overview($inbox,$email_number,0);
    $salida.= 'Tema: '.$overview[0]->subject;
    $salida.= 'De: '.$overview[0]->from;
  }

El resultado de ejecutar imap_fecth_overview es un array con un montón de propiedades. De estas propiedades nos quedamos con subject y from para mostrarlas por pantalla.

Ahora que hemos listado las cabeceras de todos los mensajes de nuestro buzón lo que haremos será el cerrar la conexión de nuestro buzón de emails mediante la función imap_close.

imap_close($inbox);

Ya tendremos listo nuestro programa para descargar emails con POP3 y PHP.

PHP » Eliminar elementos duplicados de un array en PHP

Enero 10, 2011 por Víctor Cuervo . 3924 visitas 1 Comentario Imprimir Imprimir

Mediante un código muy sencillo vamos a poder eliminar elementos duplicados de un array en PHP. Vamos a ver que la utilización de dos funciones nos pueden resolver este engorroso problema.

Lo primero vamos a ver como sería un array con elementos duplicados:

$lista = array(1,1,2,3,4,4,4,5,6,7,7,8,9,10,10);

Ahora, sobre este array vamos a aplicar la función array_unique(). Esta función elimina los elementos duplicados.
En este momento podemos pensar... "pues era extremadamente fácil"... pero, por desgracia, no es así. array_unique() elimina los elementos duplicados, si bien no reasigna los índices del array.

Así tendríamos que

$lista[0] -> 1
$lista[1] -> ''
$lista[2] -> 2
$lista[3] -> 3
$lista[4] -> 4
$lista[5] -> ''

Es por ello que necesitamos apoyarnos en una segunda función llamada array_values(). Esta función retorna todos los valores del array y los reindexa. De esta manera ya tenemos eliminados los índices vacíos.

Así el código que nos permite eliminar elementos duplicados de un array en PHP será el siguiente:

$lista_simple = array_values(array_unique($lista));

Vemos que ambas funciones devuelven un array, es por ello que hay que asignarlo a un nuevo array.

Bueno, parece que al final eliminar elementos duplicados de un array en PHP si que era sencillo. :-D

PHP » Recorrer un array en PHP

Enero 9, 2011 por Víctor Cuervo . 4311 visitas 5 Comentarios Imprimir Imprimir

Antes de ver como podemos recorrer un array en PHP, lo primero que tenemos que hacer es definir el array en sí. Para ello utilizamos la sentencia reservada array de la siguiente forma.

$lista = array("amaya","julio","javier","nacho","sonsoles");

Como podemos ver en el código tenemos un array con una lista de nombres.

Para recorrer el array en PHP simplemente necesitaremos de una estructura for, la cual vaya iterando por los elementos del array. La estructura for en PHP tiene la siguiente forma:

for (asignacion_inicial, condicion, incremento) { ... }

La idea es iterar uno a uno hasta que hayamos recorrido todos los elementos. Así, si utilizamos una variable contador, la condición será no haber llegado al indice del último elemento.

Para saber cuantos elementos tiene el array utilizamos la función count(). Así el bucle for nos quedará de la siguiente forma:

for ($x=0;$x<count($lista); $x++) { ... }

Ahora solo nos queda acceder al contenido de los elementos del array en cada iteración. Para acceder al contenido se utiliza la siguiente estructura:

$lista[indice_elemento];

Así, nuestro bucle for completo quedará de la siguiente forma:

for ($x=0;$x<count($lista); $x++)
	echo $lista[$x]."<br/>";
 

La sentencia echo nos permite volcar el contenido de la lista a pantalla. A dicho contenido le volcamos un BR que es un salto de línea en HTML.

Ya hemos recorrido nuestro array con PHP.

Actualización 10/enero/2011
Una optimización, como comenta nuestro compañero @ghizu es la de ejecutar la función count() antes de entrar al bucle. De esta forma solo será invocada una vez.

$tamanio = count($lista);
for ($x=0;$x<$tamanio; $x++)
	echo $lista[$x]."<br/>";
 

PHP » Sacar un naipe de la baraja con PHP

Octubre 24, 2010 por Jose Sevilla . 4036 visitas 6 Comentarios Imprimir Imprimir

La idea es poder sacar una carta aleatoria de la baraja (una baraja inglesa o francesa). La baraja se compone de cuatro palos (Picas ♠, Corazones , Diamantes y Tréboles ♣) y de trece cartas por cada palo, comprendidas desde el as al diez y tres figuras.

Para llevar acabo la operación y sacar un naipe aleatorio, vamos a almacenar todas las posibilidades de cartas en variables.

$palos = array('Picas','Corazones','Diamantes','Tréboles');
$cartas = array('As','Dos','Tres','Cuatro','Cinco','Seis','Siete','Ocho','Nueve','Diez','Jota','Reina','Rey');

Hemos creado dos variables, por una parte una variable con un array que contiene los cuatro palos de la baraja y la otra variable con un array con las diez numeraciones y tres figuras de las cartas, consiguiendo así las 52 cartas de las barajas. Gracias al array nos permite almacenar varios entradas en una misma variable.

$palo = array_rand($palos, 1);
$carta = array_rand($cartas, 1);

Usamos la función array_rand() que nos ofrece PHP, la cual nos devuelve la clave al azar de una entrada del array.

Ahora únicamente nos queda mostrar los valores aleatorios en una frase.

print 'La carta que salió de la baraja fue: ' . $cartas[$carta] . ' de ' . $palos[$palo] ;

PHP » Recuperar datos de un formulario con PHP

Enero 3, 2010 por Víctor Cuervo . 7187 visitas 5 Comentarios Imprimir Imprimir

Vamos a crear un código en PHP que nos permita recuperar los datos introducidos en un formulario y nos los muestre en pantalla.

El primer paso será el crear el formulario HTML que nos permita captar los datos del usuario. Este formulario tendrá dos campos de texto y un botón que nos permita enviarlo.

  1.  
  2. <form id="myform" action="recibir-parametros.php" method="GET">
  3. <label for="p1">Primer parametro</label>
  4. <input type="text" id="p1" name="p1"><br/>
  5. <label for="p2">Segundo parametro</label>
  6. <input type="text" id="p2" name="p2"><br/>
  7. <input type="submit" value="Enviar Formulario"/>
  8. </form>
  9.  

En este punto es muy importante el valor de los atributos name, ya que serán los valores que demos a estos atributos, los que nos sirvan para recuperar lo que el usuario introduzca. En nuestro caso hemos datos los valores de p1 y p2. Que serán los que recuperemos.

Un segundo punto en el que tenemos que prestar atención es en atributo action. En dicho atributo tenemos que indicar el nombre del fichero PHP que procesará y recuperará los datos del formulario. El fichero que codificaremos más adelante se llamará recibir-parametros.php

El último punto importante del formulario será el tipo de envío de los parámetros. El tipo de envío se especifica mediante el atributo method y sus valores pueden ser POST o GET. Con POST los parámetros se pasan de forma oculta, mientras que con GET podemos ver los valores en la URL de petición. Dependiendo del método de envío que utilicemos necesitaremos utilizar un método u otro en nuestro código PHP.

Pasemos ya a codificar el fichero PHP. Este será sencillo. El método para recuperar datos de un formulario, cuando estamos pasando los parámetros mediante el método GET, es $_GET[]. El nombre del dato a recuperar se pasará como parámetro.

  1. $_GET["p1"];
  2. $_GET["p2"];

Ahora solo nos quedará el mostrarlo por pantalla. Para ello utilizamos la sentencia echo de la siguiente forma:

  1. echo "El valor de p1 es ", $_GET["p1"], "<br/>";
  2. echo "El valor de p2 es ", $_GET["p2"];

PHP » Hola Mundo en PHP

Septiembre 20, 2009 por Víctor Cuervo . 5535 visitas 3 Comentarios Imprimir Imprimir

Es, muy probablemente, el programa más universal que exista en todos los lenguajes de programación. Es la forma de escribir nuestro primer programa ejecutable en un lenguaje que estamos aprendiendo.

Y en PHP no iba a ser diferente. PHP, como lenguaje de servidor, añade funcionalidad dinámica a las páginas web. Es decir, lo que se generará es una página web, con su parte en HTML puro y con su parte en código PHP.

Para empezar necesitamos las siguientes cosas:

  • Un editor de texto. El que más te guste. Opciones, muchas. Como ejemplo el bloc de notas de Windows, Wim, AM-Notebook, Win32Pad, EditPad Lite, NotePad2,...
  • Un servidor web en el cual ejecutar el programa. En este caso muy recomendable utilizar Apache.
  • Los módulos PHP para el servidor web. Estos módulos serán los que ejecuten el código de nuestros programas.

Si tienes poca experiencia en desarrollo web y quieres empezar de forma básica con PHP en poco tiempo, el tener listos los pasos anteriores puede llevarte un rato.

Si te encuentras en esa situación es muy recomendable utilizar XAMPP. XAMPP es un programa ejecutable que te deja instalado y configurado en tu ordenador: apache, php, perl y MySQL. Se instala de una forma muy sencilla y te permitirá probar tu PHP en cuestión de segundos.

Una vez que tengamos preparado nuestro entorno lo primero que tenemos que hacer es crear un fichero llamado holamundo.php. Este será un fichero de texto normal y corriente, lo único que su extensión será .php.

Sobre el código PHP lo que tienes que saber es que irá entre los simbolos .

  1. <?PHP
  2. // Código PHP
  3. ?>

La forma que tiene de escribir PHP un mensaje a consola es mediante la sentencia echo seguida de la cadena de texto entre comillas. Y, muy importante, acabado en punto y coma (;). Así que nuestro Hola Mundo en PHP nos quedaría algo parecido a:

  1. <?PHP
  2. echo "Hola Mundo";
  3. ?>