el tema lo público neopuerta
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
Cita de: neopuerta360 en 22 Septiembre 2010, 23:08 PM
Paso 1: Creación del archivo donde se guardan los usuarios
*Arriba dijimos que no íbamos a usar bases de datos MySQL para almacenar a nuestros usuarios, sin embargo necesitamos un lugar donde guardar a los mismos, eso vamos a hacerlo de la siguiente manera:
*Crea una Nueva Carpeta llamada Usuarios, ahí crea un nuevo archivo PHP desde tu editor de código y añade lo siguiente a esa página:
<?php die('Disculpa, No puedes ver esta pagina!!')?>
*Es importante que dejes un salto de línea después del código de arriba.
*Guarda ese archivo como Usuarios.php, y lo que tenemos ahí es el archivo donde se van a guardar a los usuarios, el código que ves, simplemente evita que se recargue la pagina directamente para prevenir que cualquiera pueda ver los e-mails y los nombres de usuarios de tu web (el password va a estar cifrado).
Ya terminamos con la carpeta de usuarios, ahí no vas a agregar nada más.
Paso 2: Creación de la pagina con el formulario de ingreso
Crea una nueva página llamada registrarse.php, aquí vamos a colocar el formulario que va a permitir a los usuarios registrarse en nuestra página:
<!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=iso-8859-1" />
<title>Registrate</title>
</head>
<body>
<h1>Registrate</h1>
<form action="registro.php" method="POST">
<p>
<label for="nombre">*Nombre de Usuario</label>
<label for="campo1"><input name="nombre" type="text" value=""/></label>
</p>
<p>
<label for="email">*Email</label>
<label for="campo2"><input name="email" type="text" value=""/></label>
</p>
<p>
<label for="password">*Password</label>
<label for="campo3"><input name="pass" type="password" value=""/></label>
</p>
<p>
<label for="passwordrepe">Repite el Password</label>
<label for="campo4"><input name="passrepet" type="password" value=""/></label>
</p>
<p>
<input name="submit" type="submit" value="Registrarme"/>
</p>
</form>
</body>
</html>
*Es importante que el "action", el "method" y los "names" de los formularios NO varíen.
Paso 3: Creación del archivo que procesa el formulario
Es hora de crear uno de los archivos más complejos de nuestro sistema de ingreso, es el que procesa los datos del registro y realiza la inscripción de los usuarios en nuestro archivo usado como base de datos. Crea un nuevo archivo y llámalo como registro.php. Este archivo va a tener tres partes fundamentales:
1- Definición de constantes
2- Frenar el registro en caso de error
3- Registrar al usuario
Archivo de registro.php
<?php
/*
* COMENZAMOS DEFINIENDO ALGUNAS VARIABLES
*/
$bd_usuarios = 'Usuarios/usuarios.php';
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$password = $_POST['pass'];
$passwordrep = $_POST['passrepet'];
/*
* VAMOS A FRENAR EL REGISTRO SI EL ARCHIVO DE USUARIOS NO EXISTE
*/
if(!file_exists($bd_usuarios)){
$error['noExiste'] = 'Disculpa, pero el archivo de base de datos de usuarios no existe';
}
/*
* AHORA FRENAMOS EL CASO EN QUE NO SEA ESCRIBIBLE EL ARCHIVO DE USUARIOS
*/
if(!is_writable($bd_usuarios)) {
$error['noEscribe'] = 'Disculpa, pero el archivo de base de datos no admite escritura';
}
/*
* SI EL CAMPO NOMBRE ESTA VACIO GENERAMOS ERROR
*/
if(empty($nombre)) {
$error['nombreVacio'] = 'Disculpa, debes escribir un nombre de usuario';
}
/*
* SI EL CAMPO EMAIL ESTA VACIO GENERAMOS ERROR
*/
if(empty($email)) {
$error['emailVacio'] = 'Disculpa, debes escribir un email';
}
/*
* LOS ERRORES DEL PASSWORD, QUE ESTE VACIO O QUE NO COINCIDAN O QUE SEA MENOR A 4 CARACTERES
*/
if(empty($password)) {
$error['passwordVacio'] = 'Disculpa, debes escribir un password';
}
elseif(strlen($password) <= 3) {
$error['passwordCorto'] = 'Disculpa, el password debe ser de como minimo de 4 caracteres';
}
elseif($password != $passwordrep) {
$error['passwordNoCoincide'] = 'Disculpa, los dos password deben coincidir';
}
/*
* AQUI CHECAMOS QUE EL EMAIL DE USUARIO NO EXISTA
*/
$contenido_verificacion = file_get_contents($bd_usuarios);
$array_verificacion = explode('||', $contenido_verificacion);
$cuento_los_usuarios = count($array_verificacion);
for($i = 0; $i <= $cuento_los_usuarios; $i++) {
$exploto_usuarios = explode('|', $array_verificacion[$i]);
if($email == $exploto_usuarios[4]) {
$error['EmailExistente'] = 'Disculpa, ese email ya ha sido registrado';
}
}
/*
* AQUI CHECAMOS QUE EL NOMBRE NO EXISTA
*/
for($i = 0; $i <= $cuento_los_usuarios; $i++) {
$exploto_usuarios = explode('|', $array_verificacion[$i]);
if($nombre == $exploto_usuarios[2]) {
$error['NombreExistente'] = 'Disculpa, ese nombre ya ha sido registrado';
}
}
/*
* SI NO HAY ERROR, REGISTRAMOS EL USUARIO
*/
if(empty($error)) {
$contenido_usuarios = file_get_contents($bd_usuarios);
$array_usuarios = explode('||', $contenido_usuarios);
$cuento_usuarios = count($array_usuarios);
$abro = fopen($bd_usuarios, 'a+');
fwrite($abro, filemtime($bd_usuarios)."|$cuento_usuarios|$nombre|".md5($password)."|$email||");
fclose($abro);
$mensaje = 'Usuario Registrado con Exito';
}
?>
<!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=iso-8859-1" />
<title>Registrate</title>
</head>
<body>
<h1>Registrate</h1>
<?php
if($error) {
foreach ($error as $advertencia){
echo $advertencia;
echo '<br />';
}
}
if($mensaje) {
echo $mensaje;
}
?>
</body>
</html>
Con estos archivos, vamos a tener listo el registro de los usuarios en nuestra página web, en el siguiente capítulo vamos a crear un archivo que permita a los usuarios iniciar sesión.
Cita de: neopuerta360 en 22 Septiembre 2010, 23:43 PM
Ahora nos toca hacer los archivos que van a permitir a nuestros usuarios conectarse, primero que nada vamos a hacer el formulario de ingreso, en este caso login.php.
Archivo login.php
<?php
session_start();
if($_SESSION) {
header('Location:index.php');
} else {
?>
<!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=iso-8859-1" />
<title>Ingresa</title>
</head>
<body>
<form action="ingreso.php" method="post">
<p>
<label for="nombre">Nombre</label>
<label for="campo1"><input type="text" name="nombre" value="" /></label>
</p>
<p>
<label for="password">Password</label>
<label for="campo2"><input type="password" name="pass" value="" /></label>
</p>
<p>
<input type="submit" name="ingresar" value="Iniciar sesion"/></p>
</form>
</body>
</html>
<?php }?>
Ahora necesitamos hacer ingresar a los usuarios, primero vamos a hacer un archivo aparte llamado entrarusuarios.php que va a tener la función para que nuestros usuarios se conecten.
Archivo entrarusuarios.php
*Crea un nuevo archivo y llámalo entrarusuarios.php.
*Como dije arriba, este archivo va a conectar a nuestros usuarios, tomando los datos del formulario (el nombre y el password) y buscando similares en nuestra base de datos.
*Una forma con la que trabajo PHP (No sé si es la correcta) es pensar que nosotros mismos estamos realizando las tareas, por ejemplo:
Supongamos que un usuario, llamado "usuarioa" te pide saber si esta registrado en tu fiesta, y tu usaste una cuaderno para anotar a los invitados con sus respectivas claves, cada invitado está en una hoja separada, ahora, para saber si el usuario esta registrado, divides el cuaderno en las diferentes hojas, buscas a un usuario cuyo nombre sea "usuarioa" y su clave sea "clavea", en caso de que encuentres uno, le dices que si esta registrado, y en caso contrario le dices que no está registrado. Ahora el ejemplo anterior vamos a pasarlo a una función como la siguiente:
<?php
/*
* ESTA ES LA FUNCION QUE ME HACE INGRESAR A LOS USUARIOS
*/
function conectar_usuarios($nombre_usuario, $password_usuario) {
$RESULTADO = FALSE;
//VERIFICAMOS QUE NO ESTEN VACIOS, SI LO ESTAN DEVUELVE FALSE
if($nombre_usuario == '' || $password_usuario == '') {
$RESULTADO = FALSE;
}
$ubicacion_usuarios = 'Usuarios/usuarios.php';
$contenido_usuarios = file_get_contents($ubicacion_usuarios);
$array_todos_usuarios = explode('||', $contenido_usuarios);
foreach ($array_todos_usuarios as $usuario_individual) {
$datos_del_usuario = explode('|', $usuario_individual);
if($nombre_usuario == $datos_del_usuario[2] && $password_usuario == $datos_del_usuario[3]) {
$RESULTADO = TRUE;
break;
}//DEL IF
}//DEL FOREACH
return $RESULTADO;
}
?>
Archivo ingreso.php
*Este archivo va a ser el que le dé una determinada variable de Sesión a cada usuario conectado, es como si le diéramos una identificación a cada invitado para que entre a tu fiesta.
Crea un nuevo archivo php y llámalo ingreso.php, en el vas a comenzar colocando lo siguiente:
<?php
/*
* VAMOS A INICIAR LA SESION, ESTO ES IMPORTANTE
*/
session_start();
/*
* COMENZAMOS DEFINIENDO ALGUNAS VARIABLES
*/
$nombre = $_POST['nombre'];
$password = $_POST['pass'];
$md5_pass = md5($password);
require_once 'entrarusuarios.php';
/*
* AQUI DEFINIMOS NUESTRAS VARIABLES DE SESSION SI EL INGRSO ES CORRECTO
*/
if(conectar_usuarios($nombre, $md5_pass)) {
$INGRESO_DE_SESION = TRUE;
@session_register('nombre');
@session_register('password');
$_SESSION['nombre'] = "$nombre";
$_SESSION['password'] = "$md5_pass";
header('Location:index.php');
} else {
$INGRESO_DE_SESION = FALSE;
echo "Login incorrecto, <a href='login.php'>intentalo otra vez</a>";
}
?>
*Cuando el usuario ingrese, va a ser llevado automáticamente al index donde va a poder ver contenido que es solo para usuarios registrados, vamos a ver como seria este archivo.
Archivo Index.php
*Abre un nuevo archivo y llámalo index.php, ahí vamos a tener: Tanto contenido para usuarios conectado como contenido para usuarios no conectados y también contenido para ambos tipos de usuarios.
Comenzamos al igual que los otros archivos, estableciendo la función de inicio de sesión.
<?php
session_start();
//VARIABLES PARA EL AVATAR
$avatar = "Usuarios/avatar/".$_SESSION['nombre'].".png";
if (!file_exists($avatar)) {
$avatar = "Usuarios/avatar/default.png";
}
?>
*Luego de eso, vamos a agregar lo 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=iso-8859-1" />
<title>Ingreso</title>
</head>
<body>
<h1>Index</h1>
<p>Este es contenido comun que va a poder ser visto por cualquier usuario</p>
<?php
if (empty($_SESSION)) {?>
<div id="contenido">
<h1>Este contenido es solo para usuarios registrados</h1>
<p>Disculpa, pero no eres un usuario registrado o no has iniciado sesion</p>
<p><a href="registrarse.php">Registrate</a> | <a href="login.php">Inicia Sesion</a></p>
</div>
<?php
} else {
?>
<div id="contenido">
<h1>Contenido para usuarios registrados</h1>
<h2>TU AVATAR ES</h2>
<img src="<?php echo $avatar?>" alt="Tu Avatar" /><br />
<a href="avatar.php">ADMINISTRAR AVATAR</a>
<p>Este contenido lo ve quien este registrado</p>
<p><?php echo $_SESSION['nombre'];?></p>
<p><a href="logout.php">Cerrar sesion</a></p>
</div>
<?php }?>
</body>
</html>
*Ahora el usuario quiere cerrar sesión, para eso proporcionamos un link en el index que lleva hasta la pagina "logout.php", veamos que tiene esa página.
<?php
session_start();
if(empty($_SESSION)) {
header('Location: index.php');
} else {
session_unset();
session_destroy();
header('Location:index.php');
}
?>
[code=php][code=php]
[/code][/code]Realizó una web sin base de datos y detectó un problema que no me accede a index.php
<?php
/*
* VAMOS A INICIAR LA SESION, ESTO ES IMPORTANTE
*/
session_start();
/*
* COMENZAMOS DEFINIENDO ALGUNAS VARIABLES
*/
$nombre = $_POST['nombre'];
$password = $_POST['pass'];
$md5_pass = md5($password);
require_once 'entrarusuarios.php';
/*
* AQUI DEFINIMOS NUESTRAS VARIABLES DE SESSION SI EL INGRSO ES CORRECTO
*/
if(conectar_usuarios($nombre, $md5_pass)) {
$INGRESO_DE_SESION = TRUE;
@session_register('nombre');
@session_register('password');
$_SESSION['nombre'] = "$nombre";
$_SESSION['password'] = "$md5_pass";
header('Location: index.php');
} else {
$INGRESO_DE_SESION = FALSE;
echo "Login incorrecto, <a href='login.php'>intentalo otra vez</a>";
}
?>
Luego pasa x autentificación a través del siguiente
Código de Entrarusuarios.php
<?php
/*
* ESTA ES LA FUNCION QUE ME HACE INGRESAR A LOS USUARIOS
*/
function conectar_usuarios($nombre_usuario, $password_usuario) {
$RESULTADO = FALSE;
//VERIFICAMOS QUE NO ESTEN VACIOS, SI LO ESTAN DEVUELVE FALSE
if($nombre_usuario == '' || $password_usuario == '') {
$RESULTADO = FALSE;
}
$ubicacion_usuarios = 'usuarios/usuarios.php';
$contenido_usuarios = file_get_contents($ubicacion_usuarios);
$array_todos_usuarios = explode('||', $contenido_usuarios);
foreach ($array_todos_usuarios as $usuario_individual) {
$datos_del_usuario = explode('|', $usuario_individual);
if($nombre_usuario == $datos_del_usuario[2] && $password_usuario == $datos_del_usuario[3]) {
$RESULTADO = TRUE;
break;
}//DEL IF
}//DEL FOREACH
return $RESULTADO;
}
?>
el cual luego de la Verificación activa y envía al Ingreso
Código de Ingreso.php
<?php
/*
* VAMOS A INICIAR LA SESION, ESTO ES IMPORTANTE
*/
session_start();
/*
* COMENZAMOS DEFINIENDO ALGUNAS VARIABLES
*/
$nombre = $_POST['nombre'];
$password = $_POST['pass'];
$md5_pass = md5($password);
require_once 'entrarusuarios.php';
/*
* AQUI DEFINIMOS NUESTRAS VARIABLES DE SESSION SI EL INGRSO ES CORRECTO
*/
if(conectar_usuarios($nombre, $md5_pass)) {
$INGRESO_DE_SESION = TRUE;
@session_register('nombre');
@session_register('password');
$_SESSION['nombre'] = "$nombre";
$_SESSION['password'] = "$md5_pass";
header('Location: index.php');
} else {
$INGRESO_DE_SESION = FALSE;
echo "Login incorrecto, <a href='login.php'>intentalo otra vez</a>";
}
?>