domingo, 23 de diciembre de 2007

Contador de Impresiones en PHP

En este articulo vamos a explicar cómo llevar a cabo un efectivo contador de impresiones (visitas corrientes) de nuestro website, para ello haremos uso de un archivo .dat, y no se requerirá el uso de mysql.

Este es un script muy simple asi que para empezar lo voy a escribir y luego lo explicare detalladamente.

contador.php:

$fcontador = fopen("visitas.dat","r");
$visitas = fread($fcontador, filesize("visitas.dat"));
fclose($fcontador);
$escribe = fopen("visitas.dat","w");
$visitas = $visitas + 1;
$grabar = fwrite($escribe, $visitas);
fclose($escribe);
echo $visitas . " IMPRESIONES";
?>

Bueno, para empezar a usar este script deberemos crear un archivo en la misma carpeta llamado "visitas.dat" que podemos crear con el propio blog de notas, como contenido pondremos un 0.
A continuacion procedere a la explicacion del codigo, en principio se abre el archivo visitas.dat y se lee su contenido para saber el numero de impresiones registradas hasta la fecha, luego cerramos el stream del archivo y abrimos de nuevo el archivo en modo de escritura "w", grabamos el nuevo resultado de visitas, cerramos el stream, y finalmente mostramos al publico el numero de impresiones registradas hasta la fecha.

Esto es todo, saludos!

sábado, 22 de diciembre de 2007

Registro de Usuarios en PHP

Bien, este artículo será muy útil para aquellos que deseen incluir un sistema de identificación de miembros en su página web.

Para empezar deberemos crear una tabla llamada "usuarios" en la base de datos mysql, en ella se guardaran los datos de los usuarios registrados.

CREATE usuarios (
id TINYINT(11) AUTO_INCREMENT,
nombre TEXT,
user VARCHAR(40),
pass VARCHAR(20),
email TEXT,
UNIQUE (id) );

A continuación vamos a crear un formulario de registro, donde el usuario pueda introducir sus datos para identificarse posteriormente, después de el formulario de registro crearemos la pagina de validación del formulario.


registro.php:
<form action="validar_registro.php" method="post">
Usuario: <input name="user" type="text">
Contraseña: <input name="pass1" type="password">
Repetir Contraseña: <input name="pass2" type="password">
Nombre: <input name="nombre" type="text">
Correo electronico: <input name="email" type="text">
<input name="Crear" type="submit">
</form>



En el formulario de registro enviamos mediante POST las variables que el usuario ha introducido al archivo "validar_registro.php"

Validar_registro.php:
<?
$srv="localhost"; //server mysql
$bdname="bd1"; // nombre bd
$bduser="root"; // user mysql
$bdpass=""; //contraseña del user mysql
//primero comprobamos que no exista el usuario.
$user = $_POST['user'];
$pass2 = $_POST['pass1'];
$pass1 = $_POST['pass2'];
$email = $_POST['email'];
$name = $_POST['nombre'];
$ssql="SELECT * FROM usuarios WHERE user='" . $user . "'";
$link=mysql_connect($srv,$bduser,$bdpass);
$result=mysql_db_query($bdname,$ssql,$link);
if(mysql_num_rows($result)){
echo "Nombre de usuario en uso.";
} else {
mysql_free_result($result);
//procedimos a comprobar contraseñas
if($pass1!=$pass2) {
echo "Error: las contraseñas especificadas son distintas
";
} else {
$ssql="INSERT INTO usuarios (user, nombre, pass, email) VALUES ('$user','$name','$pass1','$email')";
if(mysql_db_query($bdname,$ssql,$link)){
echo "Usuario registrado con exito.";
} else {
echo "Error registrando usuario.";
}
}
}
?>




A continuacion vamos a crear una pagina en la que se muestre un formulario para identificarse, en caso de que el usuario estuviera identificado lo mandamos directamente a la pagina restringida.

form_identificacion.php:
session_start();
if(isset($SESSION)){
header("location: pagina_protegida.php");
} else {
//si no esta identificado, colocamos formulario para que se identifique
?>
<title>Necesita identificación! </title>
<center>
Identificacion
</center>
<form action="comprueba.php" method="post"></form>
Usuario: <input name="user" id="user" type="text">
Contraseña:<input name="pass" type="password">
<input value="Entrar" type="submit">
[<a href="registro.php">Registrate gratis!</a>]
<?
}
?>



Y ahora validaremos los datos de este formulario:

valida_login.php:
<?
session_start();
$srv="localhost"; //server mysql
$bdname="bd1"; // nombre bd
$bduser="root"; // user mysql
$bdpass=""; //contraseña del user mysql

$user = $_POST['user'];
$pass = $_POST['pass'];
$ssql="SELECT * FROM usuarios WHERE user='$user'";
$link=mysql_connect($srv,$bduser,$bdpass);
$result=mysql_db_query($bdname,$ssql,$link);
if(!mysql_num_rows($result)){
echo "Usuario desconocido.";
} else {
$rs=mysql_fetch_array($result);
if($rs["pass"]==$pass ){
$SESSION["login"]=$user;
$SESSION["nombre"]=$rs["nombre"];
$SESSION["email"]=$rs["email"];
session_register("SESSION");
header("location: user.php");
} else {
echo "Password no valido.";
}

}

?>


Finalmente vamos a crear la pagina protegida, desde la cual se accedera una vez estes registrado e identificado:

pagina_protegida.php:
<?
session_start();
if(!isset($SESSION)){
header("location: form_identificacion.php");
} else {
echo "Hola " . $SESSION['user'] . ", este es un contenido privado!";
}
?>

Y para complementar este sistema crearemos el archivo desconexion.php que permitira al usuario salir del sistema de forma segura, para evitar que futuros usuarios usen su cuenta.

desconexion.php:
<?
session_start();
if(!isset($SESSION)){
header("location: form_identificacion.php");
} else {
session_unset();
session_destroy();
//LOGOUT
header("location: form_identificacion.php");
}
?>


Bueno esto ha sido todo, si desean dejar algun comentario haganlo libremente, aceptare criticas y dudas ;)

Saludos!

viernes, 21 de diciembre de 2007

Bucles: usando FOR [muy basico]

Que son los bucles?
Un bucle, es una sentencia que programamos para realizar una misma acción varias veces sin tener que escribir el código más que una vez. También es muy útil en ocasiones que el número de veces que debemos ejecutar el código es una variable, es decir depende de algo externo a nuestro código.

Uno de los bucles principales más usados es el FOR, su estructura se basa de siguiente forma:

for(valor; condicion; paso siguiente);

Ejemplo pseudocode:

for(i=0; i > x; i++){
//accion
}


Explicación: en el campo valor introducimos el valor de inicio de repetición, es decir, i, para que se entienda de un modo claro, i es el contador de repeticiones, en el campo de condición, aplicamos la condición que se debe cumplir para PARAR el bucle, es decir dejar de ejecutar la sentencia que escribiremos entre los corchetes, finalmente en "paso siguiente" introducimos la sentencia que hace que el contador incremente en 1 unidad con la finalidad de alcanzar el valor de x.

Se presupone que para que el bucle empiece a funcionar el valor de i, deberá ser menor al de x.


Ejemplo de bucle en php:

for($i=0; $i > 10; $i++){
echo "Sentencia numero: " . $i . "\n";
}


devolvera sucesivas frases con el resultado: "Sentencia numero: 1, Sentencia numero: 2", etc.

Bien esto es todo referente a este bucle, si tienen dudas no duden en escribir comentarios.
Saludos

Creando tu web Modular en PHP

Las ventajas de convertir tu sitio en un sitio modular son diversas y muy utiles, por ejemplo, para hacer que tu web sea bilingüe, o para acceder a distintas secciones aprovechando un mismo archivo y gastando menos código y espacio.

Para empezar una web modular deberíamos tener nociones básicas de PHP. Para empezar crearemos un archivo "index.php", para que nuestra web se muestre en distintos idiomas y distintas paginas lo que vamos a hacer es enviarle mediante GET las variables que deseamos personalizar, por ejemplo: "index.php?lang=es&module=downloads" en este ejemplo obtendríamos la variable LANG = es y MODULE = downloads.

A continuación mediante un switch o bien condicionales, o mediante includes (a forma mas sencilla y clara de hacerlo) obtendremos estos valores y mostraremos un resultado u otro, veamos un ejemplo de todo esto:

$lang = $_GET['lang']; // Obtenemos la variable LANG
$module = $_GET['module']; // Obtenemos el modulo

//si no existen tales variables creamos valores default

If ((¡isset($lang)) OR (empty($lang))){ $lang = "es"; }
If ((¡isset($module)) OR (empty($module))){ $lang = "home"; }

Include("sections/" . $module . "-" . $lang . ".php");

//incluiriamos sections/home-es.php

Tambien con switch:

Switch($lang){
Case "en":
Echo "english website";
Break;

default:
Case "es":
echo "web en español";
break;

}

Bien, pues hasta aqui este articulo, proximamente añadire algunos articulos mas relacionados con este tema, si teneis dudas podeis escribirlo en los comentarios.

Saludos