sábado, 22 de noviembre de 2008

Video tutorial - Contador de visitas PHP


Si eres o has sido webmaster de una página web, seguramente una ed las primeras cosas que quisiste hacer fue contar todas las visitas que tu sitio recibia, en este tutorial vamos a ver como lograr eso utilizando las funciones fopen, fwrite, fread.

Tambien debemos conocer las permisologias FTP de archivos ya que de lo contrario esto nos podra traer problemas con el servidor porque no nos deja escribir sobre el archivo.
Para empezar les vamos a colocar el codigo fuente (algo simple) de la pagina contador.php:

Código de contador.php:

<?php

//Sript hecho por Alejandro Sanchez

//www.internetdeveloping.blogspot.com


// Archivo en donde se acumulará el numero de visitas

$archivo = "contador.txt";


if(!file_exists($archivo))

{

$a = fopen($archivo, "w");

$grabar = fwrite($a, 0);

fclose($a);

}

// Abrimos el archivo para lectura y escritura

$a = fopen($archivo, "r");


// Leemos el contenido del archivo

$totalVisitas = fread($a, filesize($archivo));


// Cerramos la conexión al archivo

fclose($a);


// Abrimos nuevamente el archivo

$a = fopen($archivo, "w");


// Sumamos 1 nueva visita

$totalVisitas = $totalVisitas + 1;


// Y reemplazamos por la nueva cantidad de visitas

$grabar = fwrite($a, $totalVisitas);


// Cerramos la conexión al archivo

fclose($a);


// Imprimimos el total de visitas dándole un formato

echo "<font face='verdana' size='2'>Total de visitas:".$totalVisitas."</font>";

?>

La variable $archivo denota la ruta del archivo en el que deseamos almacenar la cuenta de las visitas, la funcion file_existscomprueba la existencia de un archivo en esa direccion y con ese nombre, si no encuentra un archivo en esa direccion entonces se crea.
if(!file_exists($archivo))
{
$a = fopen($archivo, "w");
$grabar = fwrite($a, 0);
fclose($a);
}
Luego procedemos a abrir y leer el archivo con la funcion fopen y fread respectivamente, y guardamos el contenido (numero de visitas) dentro de la variable $totalVisitas, le incrementamos uno a esa variable y procedemos a guardar su nuevo valor en el archivo de texto (reemplazando el viejo valor) con la funcion fwrite.

Permisos de archivo para la funcion fopen:

Acontinuacion el video de este tutorial:


Eso es todo, para descargar el ejemplo y verlo en funcionamiento hagan click en los siguientes enlaces:

Continuar leyendo...

domingo, 16 de noviembre de 2008

Los 14 Principios de Usabilidad de los Sitios WEB



Me parece importante colocar los 14 principios de usabilidad que segùn Jakob Nielsen debe tener todo sitio web, por mas obvio que parezcan, a veces a uno se le olvidan y no los toma en cuenta. A mi me ha pasado muchas veces y por eso a penas consegui esta lista la pegue en la pared de mi oficina para no olvidarla nunca.

Principios de Usabilidad segun Jakob Nielsen

1. Anticipación, el sitio web debe anticiparse a las necesidades del usuario.

2. Autonomía, los usuarios deben tener el control sobre el sitio web. Los usuarios sienten que controlan un sitio web si conocen su situación en un entorno abarcable y no infinito.

3. Los colores han de utilizarse con precaución para no dificultar el acceso a los usuarios con problemas de distinción de colores (aprox. un 15% del total).

4. Consistencia, las aplicaciones deben ser consistentes con las expectativas de los usuarios, es decir, con su aprendizaje previo.

5. Eficiencia del usuario, los sitios web se deben centrar en la productividad del usuario, no en la del propio sitio web. Por ejemplo, en ocasiones tareas con mayor número de pasos son más rápidas de realizar para una persona que otras tareas con menos pasos, pero más complejas.

6. Reversibilidad, un sitio web ha de permitir deshacer las acciones realizadas

7. Ley de Fitts indica que el tiempo para alcanzar un objetivo con el ratón esta en función de la distancia y el tamaño del objetivo. A menor distancia y mayor tamaño más fácilidad para usar un mecanismo de interacción.

8. Reducción del tiempo de latencia. Hace posible optimizar el tiempo de espera del usuario, permitiendo la realización de otras tareas mientras se completa la previa e informando al usuario del tiempo pendiente para la finalización de la tarea.

9. Aprendizaje, los sitios web deben requerir un mínimo proceso de aprendizaje y deben poder ser utilizados desde el primer momento.

10. El uso adecuado de metáforas facilita el aprendizaje de un sitio web, pero un uso inadecuado de estas puede dificultar enormemente el aprendizaje.

11. La protección del trabajo de los usuarios es prioritario, se debe asegurar que los usuarios nunca pierden su trabajo como consecuencia de un error.

12. Legibilidad, el color de los textos debe contrastar con el del fondo, y el tamaño de fuente debe ser suficientemente grande.

13. Seguimiento de las acciones del usuario. Conociendo y almacenando información sobre su comportamiento previo se ha de permitir al usuario realizar operaciones frecuentes de manera más rápida.

14. Interfaz visible. Se deben evitar elementos invisibles de navegación que han de ser inferidos por los usuarios, menús desplegables, indicaciones ocultas, etc.

Continuar leyendo...

sábado, 15 de noviembre de 2008

Autenticacion (Autentificacion) de usuario con PHP y Hash Sha-1


La Autenticación consiste en verificar la identidad del usuario que esta entrando a una aplicación, con el fin de personalizar el ambiente a su gusto, habilitarle o deshabilitarle recursos u opciones, guardar historial, etc.

En este ejemplo vamos a explicar una manera simple pero bastante segura de autenticar usuarios en una pagina web con PHP, utilizando conceptos como sesiones, funciones hash, método post, etc.

Para empezar debemos entender como funcionará el mecanismo de autenticación, lo dividiremos en dos etapas, registro y autenticación, siendo el "registro" la primera vez que el usuario entra al sistema y crea una cuenta de usuario proporcionando un nombre de usuario y una clave, la etapa de "autenticacion" es cuando en futuras ocaciones el usuario desee ingresar en su cuenta creada en la etapa de registro y deba autenticarse para poder entrar.

Pasos para el Registro del usuario:
  1. Los usuarios deberan llenar un formulario con nombre de usuario y clave para registrarse en el sistema.
  2. Aplicaremos en la maquina del cliente el algoritmo Sha-1 para transformar la clave en un hash que no pueda ser descifrado por ningun intruso (debemos recordar que los algorimos hash son unidireccionales, es decir, nisiquiera el usuario o nosotros podremos saber cual era la verdadera clave del usuario).
  3. Enviamos la clave y nombre de usuario al servidor para almacenarla en la base de datos.



Pasos para la autenticacion del usuario:
  1. El usuario quiere ingresar a su cuenta de usuario y llena el formulario de autenticacion con usuario y clave.
  2. Aplicaremos en la maquina del cliente el algoritmo Sha-1 para transformar la clave en un hash que no pueda ser descifrado por ningun intruso.
  3. Enviamos el usuario y la clave al servidor.
  4. Buscamos el hash almacenado en la base de datos en el momento del registro de ese usuario y lo comparamos con el hash que acabamos de recibir.
  5. Si los hash son iguales entonces iniciamos una sesion para ese usuario.


Antes del tutorial, les quiero dejar los videos del ejemplo que vamos a realizar, para los que les queden dudas:

Parte 1

Parte 2


Para empezar el ejemplo lo primero que vamos a hacer es crear una base de datos llamada "usuariosDB" donde vamos a crear la tabla "usuario" con las columnas "usuario", "clave" y un "id" que identificara internamente ese usuario en la BD.

Código de creacion de la tabla usuario
--
-- Estructura de tabla para la tabla `usuario`
--

CREATE TABLE `usuario` (
`id` bigint(20) NOT NULL auto_increment,
`usuario` varchar(15) NOT NULL,
`clave` varchar(205) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `usuario` (`usuario`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Ahora procedemos a crear una página "registro.php" donde el usuario deberá introducir el nombre de usuario y contraseña que desea utilizar de ahora en adelante:
Código registro.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Login - Ejemplo de autentiacion</title>

<style type="text/css">

<!--

.style1 {

font-size: 36px;

font-weight: bold;

}

-->

</style>

<script type="text/javascript" language="JavaScript1.2" src="sha1.js"></script>

<script language="JavaScript">

function ec()

{


if(document.getElementById('clave').value == document.getElementById('clave2').value)

{

document.getElementById('clave').value = str_sha1(document.getElementById('clave').value);

document.getElementById('clave2').value = "";

return true;

}

else

{

alert('Las claves no coinciden');

return false;

}

}

</script>

</head>


<body>

<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><p>&nbsp;</p>

<p class="style1">Registro de usuario con Hash Sha-1</p>

<p>La clave que el usuario introduzca en el el campo &quot;clave&quot; del formulario será transformada con el algoritmo Sha-1 y luego será enviada al servidor.</p></td>

</tr>

<tr>

<td height="277" align="center" valign="top"><p align="left"><br />

</p>

<p align="center"></p>

<form id="form1" name="form1" method="post" action="registrado.php">

<p><strong>Introduce tu usuario y clave que desees</strong></p>

<p>Usuario:

<input type="text" name="usuario" id="usuario" />

</p>

<p>Clave:

<input type="password" name="clave" id="clave" />

</p>

<p>Repite la clave:

<input type="password" name="clave2" id="clave2" />

</p>

<p>si ya tienes cuenta haz <a href="login.php">click aqui</a></p>

<p>

<input name="button" type="submit" id="button" onclick="return ec();" value="Registrarme"/>

</p>

</form> <p align="center">&nbsp;</p></td>

</tr>

<tr>

<td height="19" align="center" valign="bottom">Alejandro Sánchez - http://internetdeveloping.blogspot.com/</td>

</tr>

</table>

</body>

</html>


Para enviar la clave introducida por el usuario primero llamamos a la funcion javascript "ec()" creada en la cabecera que se encarga de verificar que las dos claves introducidas sean iguales y ademas se encarga de aplicar la funcion str_sha1() (que se encuentra en el archivo "sha1.js" que importamos en la cabecera de la página) para transformar la clave introducida en un codigo Hash que sea casi imposible de descrifrar para cualquier persona (incluso nosotros).

Los datos del fomulario son enviados a la pagina "registrado.php" el código de esta página es el siguiente:

Código registrado.php

<?php


require('conexion.php');


if(isset($_POST['usuario']) && isset($_POST['clave']))

{


$usuario = $_POST['usuario'];

$sha1_clave = $_POST['clave'];


mysql_query("insert into usuario values('','".$usuario."','".$sha1_clave."')");


}

else

{


$usuario = "error";

$sha1_clave = "error";


}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Login - Ejemplo de autentiacion</title>

<style type="text/css">

<!--

.style1 { font-size: 36px;

font-weight: bold;

}

-->

</style>

</head>


<body>

<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><p>&nbsp;</p>

<p class="style1">Usuario registrado</p></td>

</tr>

<tr>

<td height="277" align="center" valign="top"><p align="left"><br />

</p>

<p align="left"></p>

<form id="form1" name="form1" method="post" action="">

<p><strong>El usuario ha sido correctamente registrado.</strong></p>

</form>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="30%"><div align="right">Nombre de usuario:</div></td>

<td width="70%"><div align="center"><?php echo $usuario ?></div></td>

</tr>

<tr>

<td><div align="right">Clave:</div></td>

<td><div align="center"><?php echo $sha1_clave ?></div></td>

</tr>

</table>

<p align="center">Para acceder a tu cuenta haz <a href="login.php">click aqui</a></p></td>

</tr>

<tr>

<td height="19" align="center" valign="bottom">Alejandro Sánchez - http://internetdeveloping.blogspot.com/</td>

</tr>

</table>

</body>

</html>

En esta página nos encargamos de almacenar en la base de datos el nuevo usuario con el hash de su clave. Ahora que ya tenemos un usuario registrado debemos proceder a la segunda fase, y crear las paginas necesarias para que el usuario se autentique en futuras ocaciones y pueda ingresar a las secciones privadas de su cuenta.

Procedemos a crear la pagina "login.php":
Código login.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Login - Ejemplo de autentiacion</title>

<style type="text/css">

<!--

.style1 {

font-size: 36px;

font-weight: bold;

}

-->

</style>

<script type="text/javascript" language="JavaScript1.2" src="sha1.js"></script>

<script language="JavaScript">

function ec()

{

document.getElementById('clave').value = str_sha1(document.getElementById('clave').value);

}

</script>

</head>


<body>

<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><p>&nbsp;</p>

<p class="style1">Autenticacion con Hash Sha-1</p>

<p>La clave que el usuario introduzca en el el campo &quot;clave&quot; del formulario será transformada con el algoritmo Sha-1 y luego será enviada al servidor.</p></td>

</tr>

<tr>

<td height="277" align="center" valign="top"><p align="left"><br />

</p>

<p align="center"></p>

<form id="form1" name="form1" method="post" action="autenticacion.php" onsubmit="ec()">

<p><strong>Introduce los datos de tu cuenta</strong></p>

<p>Usuario:

<input type="text" name="usuario" id="usuario" />

</p>

<p>Clave:

<input type="password" name="clave" id="clave" />

</p>

<p>si no tienes cuenta haz <a href="registro.php">click aqui</a></p>

<p>

<input type="submit" name="button" id="button" value="Enviar" />

</p>

</form> <p align="center">&nbsp;</p></td>

</tr>

<tr>

<td height="19" align="center" valign="bottom">Alejandro Sánchez - http://internetdeveloping.blogspot.com/</td>

</tr>

</table>

</body>

</html>

En esta página recogemos el nombre de usuario y contraseña escritos por el usuario y aplicamos laf uncion str_sha1() a la clave del usuario para enviarla a la página autenticacion.php, el código de esta últimap página es el siguiente:

Código autenticacion.php

<?php


require('conexion.php');

//Inicio la sesión

session_start();


///////////////////////////////////////////////////////////////////////////////////////////

//Si esta entrando en una seccion que no le corresponde



$_SESSION["usuario"]="anonimo";

$_SESSION["valido"]=0;


if (isset($_POST['clave']) && isset($_POST['usuario']))

{



//evito que haya colocado mas de una palabra en el login (para evitar sql injection)

$usu = split(" ",trim($_POST['usuario']));


echo $usu[0];



//Guardo la identidad del cliente que desea autenticarse

$_SESSION["usuario"]= $usu[0];



$result = mysql_query("select clave from usuario where usuario='".$_SESSION["usuario"]."'");



//Si encontre el usuario en la bd

if(mysql_num_rows($result)==1)

{

$row = mysql_fetch_row($result);

//Si los hash de la clave coinciden

if($_POST['clave']==$row[0])

$_SESSION["valido"]=1;



echo $row[0] , ' = ' . $_POST['clave'];

}



}



//si no existe, envio a la página de autentificacion

header("Location: miCuenta.php");

//ademas salgo de este script

exit();



?>



En esta página recibimos el nombre de usuario y el hash de la clave introducida por el usuario en el momento de realizar su autenticacion, debemos ahora verificar que el nombre de usuario existe, y, si realmente existe, entonces debemos verificar si el usuario existente tiene la misma clave que la proporcionada.

Si las claves coinciden entonces creamos una variable de sesion llamada $_SESSION["valido"] y la igualamos a 1 para decir que es un usuario valido, de no existir un usuario con ese nombre o de no coincidir la clave de la bd con la clave proporcionada por el usuario, entonces asignamos el valor de 0 a la variable $_SESSION["valido"].

Esta variable de sesion será la llave para establecer los permisos, si el usuario desea entrar a una página privada, pero la variable $_SESSION["valido"] no existe o es diferente de 1, entonces no podrá acceder a esa página, de lo contrario todo ocurrirá normalmente.

Para lograr esa funcionalidad debemos crear un archivo llamado sesion.php donde vamos a verificar que esa variable este igual a 1, de lo contrario la pagina te redireccionará a la pagina ya creada login.php. La pagina sesion.php deberá ser incluida al principio de cada página que queramos catalogar como "privada". El codigo de sesion.php es el siguiente:
Código sesion.php

<?php


//Inicio la sesión

session_start();


//Verifico si es un usuario autenticado

if ($_SESSION["valido"]!=1)

{//quiere decir que tiene prohibida la entrada a cualquier lugar privado


//si no existe, envio a la página de autentificacion

header("Location: login.php");

//ademas salgo de este script

exit();

}

?>


Por ultimo creamos la página privada "miCuenta.php" y la pagina "cerrar_sesion.php". La primera de ellas contendrá una llamada a la pagina sesion.php para garantizar su privacidad. mientras que la otra permitira cerrar la sesion autentificada y volver a iniciar el ciclo de autenticación.



Código micuenta.php

<?php


//Incluyo el archivo de sesion para impedir el acceso no autorizado a esta página.

require('sesion.php');


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Login - Ejemplo de autentiacion</title>

<style type="text/css">

<!--

.style1 { font-size: 36px;

font-weight: bold;

}

-->

</style>

</head>


<body>

<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><p>&nbsp;</p>

<p class="style1">Autenticacion Básica</p></td>

</tr>

<tr>

<td height="277" align="center" valign="top"><p align="left"><br />

</p>

<p align="left"></p>

<form id="form1" name="form1" method="post" action="">

<p><strong>Si ves esta pagina, tu sesion ha sido validada y puedes navegar por la zona privada.</strong></p>

<p>haz <a href="cerrar_sesion.php">click aqui</a> para cerrar tu sesion</p>

</form>

<p align="center">&nbsp;</p></td>

</tr>

<tr>

<td height="19" align="center" valign="bottom">Alejandro Sánchez - http://internetdeveloping.blogspot.com/</td>

</tr>

</table>

</body>

</html>

Código cerrar_sesion.php

<?php

session_start();

session_destroy();


//si no existe, envio a la página de autentificacion

header("Location: miCuenta.php");

//ademas salgo de este script

exit();


?>

Cualquier comentario o duda no dudes en escribirlo abajo o enviarme un mail a aalejo+blog@gmail.com.


Continuar leyendo...

Conectando a MySQL con PHP


Si queremos hacer paginas dinamicas donde los usuarios puedan interactuar con votaciones, comentarios en foro, y subir sus propios contenidos, la mejor manera de hacerlo es utilizando Bases de Datos (BD).

En este tutorial vamos a realizar una coneccion a una BD utilizando el lenguaje PHP, especificamente las funciones mysql_connect() y mysql_select_db().

Para comenzar vamos a crear un archivo db_conect.php en el que vamos a colocar el siguiente codigo de conexion:

Código
/* conexion ****************/
// conectamos al servidor MySQL
$link = mysql_connect('localhost', 'miUsuario', 'miClave');
if(!$link)
{
die("Error al intentar conectar: ".mysql_error());
}

// seleccionamos la base de datos
$db_link = mysql_select_db('miBaseDeDatos', $link);
if(!$db_link)
{
die('Error al intentar seleccionar la base de datos'. mysql_error());
}
/* fin conexion ************/
La funcion mysql_select_db() se encarga de hacer la conexion del usuario ("miUsuario") con una session de mysql, debemos haber configurado antes este usuario con permisos de lectura o escritura dependiendo de lo que queramos hacer, es decir, si estamos conectandonos a una base de datos para guardar datos debemos tener permisos para insercion en las tablas.

Luego de conectarnos a mysql debemos seleccionar la BD sobre la que queremos operar, en este caso "miBasededatos", para eso utilizamos la funcion mysql_select_db() y le pasamos el nombre de la base de datos y una variable con el valor devuelto por la funcion de conexion mysql_select_db() que utilizamos anteriormente.

Ahora debemos guardar este archivo y incluirlo en cualquier pagina donde queramos realizar transacciones con base de datos, eso lo hacemos añadiendo el siguiente codigo al principio de cada pagina:

<?php


require('db_conect.php');


?>



//de aqui en adelante podemos hacer cualquier transaccion con
//la base de datos sin importar la conexion
Para descargar el codigo de este ejemplo haz click aqui. Cualquier duda o comentario no duden en escribirlo.



Continuar leyendo...

jueves, 13 de noviembre de 2008

Hola Mundo PHP



Este pequeño tutorial es para explicar los undamentos de un lenguaje tan practico y facil como PHP, para empezar debemos diferenciar entre dos tipos de lenguajes que se pueden utilizar a la hora de realizar páginas web:
  • Lenguajes del lado del Cliente: Son lenguajes que corren en la computadora de cada cliente, son muy vulnerables a cualquier ataque informaticos ya que el usuario final posee todo el codigo fuente y puede modificarlo, normalmente se usan para realizar interfaces de usuario, validaciones basicas, etc. Entre ellos encontramos javaScript, HTML, ActionScript, etc.
  • Lenguajes del lado del Servidor: Son lenguajes que no pueden ser visualizados por el cliente, se ejecutan antes que los lenguajes del lado del cliente, y, de esta forma, pueden generar codigos para que sean interpretados por javascript, html, etc. Son los responsables de las conecciones a bases de datos, WebServices, etc.
Por ejemplo: supongamos la siguiente situacion: Un usuario quiere llenar un formulario para inscribirse en una página (el formulario debe estar hecho en HTML) luego cuando introduce los datos y presiona enviar tiene un error de "email no valido", en ese caso, javascript ha sido el responsable de detectarlo, luego lo corrige y el fomulario es enviado al servidor y guardado en una base de datos, el responsable de hacer este paso es PHP. Luego el usuario es redicerrionado a la pagina de su nueva cuenta y ya esta lista para usar (de vuelta a la pagina html).

El desempeño de la aplicacion seria como el mostrado en el gráfico

Ahora vamos a dejar de hablar y vamos entrar en el ejemplo practico, para imprimir por pantalla en PHP debemos utilizar la funcion echo, esta funcion imprime al navegador un codigo para ser interpretado por el cliente, es decir, si colocamos lo siguiente:
echo "<strong>Hola Mundo </strong> ";
En realizada el navegador imprimiria por pantalla lo siguiente:

Hola Mundo
Ya que interpretaria la etiqueta como codigo HTML para poner en negritas el texto. En el ejemplo actual vamos a imprimir por pantalla las frases "Hola Mundo", "<h1>Hola Mundo </h1>" y "<h2>Hola Mundo </h2>" para mostrar las diferencias y las diferentes interpretaciones por parte del navegador.

El codigo del ejemplo es el siguiente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

<style type="text/css">

<!--

.style6 { font-size: 24px;

font-family: Georgia, "Times New Roman", Times, serif;

font-weight: bold;

}

-->

</style>

</head>


<body>

<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><p>&nbsp;</p>

<p>Hola mundo en PHP, el codigo en este lenguaje debe incluirse entre las etiquetas &lt;?php ?&gt; y para imprimir por pantalla debe usarse la funcion &quot;echo&quot; seguida de la variable, numero o string que se desea imprimir.</p></td>

</tr>

<tr>

<td height="170" valign="top"><p align="left"><br />

<br />

<br />

<span class="style6"><?php echo "hola mundo!!!"; ?></span></p>

<p align="left"><span class="style6"><?php echo "<h1>hola mundo!!!<h1>"; ?></span></p>

<p align="left"><span class="style6"><?php echo "<h2>hola mundo!!!</h2>"; ?></span></p>

<p align="left">&nbsp;</p>

<p align="left"></p>

<p align="center">Alejandro Sánchez - http://internetdeveloping.blogspot.com/</p></td>

</tr>

</table>

</body>

</html>




Para descargar y probar el codigo fuente del ejemplo haz click aqui. Espero que te haya gustado el tutorial y no dudes en preguntarme nada!!


Continuar leyendo...

miércoles, 12 de noviembre de 2008

Simple Libro de Visitas con MySQL y PHP


PHP es una de las tecnologías mas fáciles de usar a la hora de realizar aplicaciones web, es uno de los lenguajes mas fáciles de aprender y lo recomiendo 100% si queremos empezar en este mundo tan versátil de desarrollo web.

En este caso vamos a realizar un libro de visitas donde los usuarios podrán dejar mensajes en tu página web de manera muy secilla, y los mensajes sera guardados en una Base de Datos MySQL para futuras consultas.

Lo primero que debemos hacer es crear una base de datos en nuestro manejador de base de datos, por ejemplo, PHPMyAdmin. Entramos a en manejador y creamos una base de datos llamada "FirmasVisitas", recuerden saber bien el usuario y login que debeun usar para conectarse a la bd, si lo desconocen prueben siempre co el usuario "root" y clave "" (vacia), esos usuarios por defecto normalmente funcionan.

Una vez creada la BD lo que debemos hacer es crear la tabla "firma" en la base de datos, la tabla va a almacenar los mensajes que pongan los usuarios, utilizando el siguinte script en lenguaje SQL:


Código

CREATE TABLE `firmar` (
`firma_ID` int(11) NOT NULL auto_increment,
`usuario` varchar(25) collate latin1_general_ci NOT NULL,
`firma` text collate latin1_general_ci NOT NULL,
PRIMARY KEY (`firma_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2;

Una vez creada la BD y la tabla que va a almacenar la información procedemos a crear la pagina web que va a permitir al usuario escribir un mensaje apra que sea guardado en la base de datos y luego exibirlo al público, el codigo del archivo es el siguiente:

Debemos conectarnos a la BD al mometo de cargar la página para traer los mensajes ya escritos, Para eso a la base de datos escribimos:

Código
/* conexion ****************/
// conectamos al servidor MySQL
$link = mysql_connect('localhost', 'miUsuario', 'miClave');
if(!$link)
{
die("Error al intentar conectar: ".mysql_error());
}

// seleccionamos la base de datos
$db_link = mysql_select_db('miBaseDeDatos', $link);
if(!$db_link)
{
die('Error al intentar seleccionar la base de datos'. mysql_error());
}
/* fin conexion ************/
Luego debemos enviar el formulario y procesarlo para guardar los datos en la base de datos, en ese mismo momento consultamos los mensajes de la base de datos (que ya deberían incluir el nuevo mensaje recien colocado) y los mandamos a imprimir por pantalla en la página web:

Código
/* prosesamiento de los datos */
// verificamos si ha sido enviado el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// verificamos que el formulario
// no venga vacio
if(!empty($_POST['usuario']) && !empty($_POST['firma'])){
// creamos las variables a usar en la consulta
// y le asignamos sus valores
$usuario = htmlentities(trim($_POST['usuario']));
$firma = htmlentities(trim($_POST['firma']));
// la consulta INSERT
$sqlInsert = mysql_query("INSERT INTO firmar (usuario, firma)
VALUES ('$usuario', '$firma')", $link)
or die(mysql_error());
}else{
echo "Debe llenar todos los campos";
}
}
/* fin del proseso de datos */
/* mostrando los registros (firmas) */
$sqlQuery = mysql_query("SELECT * FROM firmar", $link)
or die(mysql_error());
$totalFirmas = mysql_num_rows($sqlQuery);
// verificamos si hay
// alguna firma registrada,
// de lo contrario enviamos un mensaje
if($totalFirmas == 0){
echo "Nadie se ha animado a firmar este libro :(";
}
// si hay firmas registradas
// las mostramos
else{
while($row = mysql_fetch_array($sqlQuery)){
echo "<p><b>$row[usuario]</b> dijo:<br />". nl2br($row['firma']) ."</p><hr />";
}
}
Con esto hemos concluido el libro de visitas, que fácil ¿verdad?, bueno todo con PHP es asi, acostumbrense a esta maravilla de lenguaje para hacer paginas web.

Aqui les dejo el código fuente de la aplicación para que lo descarguen. Recuerden que para correrlo tienen que crear la base de datos y modificar el código de conexión con su usuario, servidor y clave.


Continuar leyendo...

miércoles, 5 de noviembre de 2008

Hosting Gratis, Sin publicidad, con PHP y MySQL


Recientemente he tenido la necesidad de hospedar una pagina web muy sencilla, para lo que no valia la pena pagar un servidor web, ya que la pagina era demasiado pequeña y nunca hubiese exprimido todo el potencial del servidor, por mas limitado que fuera.

La pagina que estaba montando, ademas requeria de la utilizacion de PHP y MySQL para la construccion de un pequeño foro donde los usuarios podian dejar sus mensajes y discutir entre ellos asuntos de interes.

Fue cuando encontre este excelente servicio en 000Webhost.com, no solo te permite todo esto, sino que ademas publican los servidores DNS para que puedas utilizar tu propio dominio y te ofrecen la opcion de crear cuentas de email con el dominio, publico las especificaciones tecnicas a continuacion:

» Free Web Hosting
Disk Space 1500 MB
Bandwidth 100,000 MB = 100 GB!
Domains Allowed Unlimited
Control Panel cPanel
Ads on your pages? No Ads or Banners!
Your own ads allowed? Yes
» Package Details
Website Builder
PHP Scripts Autoinstaller
Unrestricted PHP Support
MySQL Databases
Instant Backups
FTP Support
Web File Manager
99.9% Uptime
Instant Activation
» Supported Features
PHP and MySQL PHP5
Cron Jobs
Curl
GD
Image Magick
Streaming Video
PHP Pear Modules
» E-mail Features
POP3 Accounts
Web Mail
Auto Responders
Spam Protection
Mail Forwarding
IMAP Support
Modify MX Entry
» Control Panel Features
Latest cPanel
Website Builder
Fantastico Autoinstaller
Getting Started Wizard
Video Tutorials
Multi Language Support
Hotlink Protection
IP Deny Manager
Redirect URL
Password Protected Directories
Web Based File Manager
phpMyAdmin

Ya yo me encuentro utilizandolo y hasta ahora no tengo ninguna queja, me parece tremendo servicio y hasta el dia de hoy, no he conseguido ningun mejor que ese, espero que les sirva de ayuda!

Continuar leyendo...