Ok.
Recuerden que es muy pobre en cuanto a seguridad y la idea es mejorarla.
Lo digo para que no se tome como un código que puede usarse como está ahora
El sistema tiene 5 archivos y vamos a necesitar crear una base de datos (sql) con una tabla:
1- Base de Datos: aquí se guardan los datos de los usuarios registrados.
2- index.php (página donde se ingresa usuario y contraseña para el ingreso)
3- regisiter.php (página donde el usuario se registra con nombre de usuario y contraseña)
4- logout.php (necesario para finalizar una sesión de forma segura)
5- secured/mysql.php (donde se guardan los datos de conección a la base de datos. Este archivo está dentro de la carpeta 'secure')
6- secured/.htaccess (para proteger el contenido de la carpeta 'secured')
nota: 'index.php', 'register.php', 'logout.php' y la carpeta 'secured' están en el mismo nivel. Luego la carpeta 'secured' contiene: 'mysql.php' y '.htaccess'.
1- Base datos (codigo para crearla)
Creamos la base de datos con nombre 'membership'. Luego creamos la tabla 'users' con el siguiente código:
Código:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE TABLE `users` (
`UserID` int(25) NOT NULL auto_increment,
`Username` varchar(65) NOT NULL,
`Password` varchar(32) NOT NULL,
`EmailAddress` varchar(255) NOT NULL,
PRIMARY KEY (`UserID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
2 index.php
Código:
<?php include "secured/mysql.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>User Management System (Tom Cameron for NetTuts)</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="main">
<?php
if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username']))
{
?>
<h1>Area Privada</h1>
<p>Hola! <?=$_SESSION['Username']?>. Your email address is <b><?=$_SESSION['EmailAddress']?>.</p>
<ul>
<li><a href="logout.php">Cerrar Area Privada</a></li>
</ul>
<?php
}
elseif(!empty($_POST['username']) && !empty($_POST['password']))
{
$username = stripslashes($_POST['username']);
$password = stripslashes($_POST['password']);
$username = mysql_real_escape_string($username);
$password = md5(mysql_real_escape_string($password));
$checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."' LIMIT 1");
if(mysql_num_rows($checklogin) == 1)
{
$row = mysql_fetch_array($checklogin);
$email = $row['EmailAddress'];
$_SESSION['Username'] = $username;
$_SESSION['EmailAddress'] = $email;
$_SESSION['LoggedIn'] = 1;
echo "<h1>Success</h1>";
echo "<p>Lo estamo redirigiendo a un Area Privada.</p>";
echo "<meta http-equiv='refresh' content='=2;index.php' />";
}
else
{
echo "<h1>Error</h1>";
echo "<p>Lo sentimos, su cuenta no ha sido encontrada. <a href=\"index.php\">clic aquí para intentarlo de nuevo</a>.</p>";
}
}
else
{
if($_POST['sent']){if(empty($_POST['username']) || empty($_POST['password'])){$mensaje="Debe ingresar su nombre de usuario y contraseña";}}else{$mensaje="Ingrese su nombre de usuario y contraseña";}
?>
<h1>Acceso Privado</h1>
<p><?php echo $mensaje; ?> o <a href="register.php">regístrese</a>.</p>
<form method="post" action="index.php" name="loginform" id="loginform">
<fieldset>
<label for="username">Usuario:</label><input type="text" name="username" id="username" /><br />
<label for="password">Contraseña:</label><input type="password" name="password" id="password" /><br />
<input type="hidden" name="sent" value="sent" />
<input type="submit" name="login" id="login" value="Ingresar" />
</fieldset>
</form>
<?php
}
?>
</div>
</body>
</html>
3- register.php
Código:
<?php include "secured/mysql.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>User Management System (Tom Cameron for NetTuts)</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="main">
<?php
if(!empty($_POST['username']) && !empty($_POST['password']))
{
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
$email = mysql_real_escape_string($_POST['email']);
$checkusername = mysql_query("SELECT * FROM users WHERE Username = '".$username."'");
if(mysql_num_rows($checkusername) == 1)
{
echo "<h1>Error</h1>";
echo "<p>Sorry, that username is taken. Please go back and try again.</p>";
}
else
{
$registerquery = mysql_query("INSERT INTO users (Username, Password, EmailAddress) VALUES('".$username."', '".$password."', '".$email."')");
if($registerquery)
{
echo "<h1>Success</h1>";
echo "<p>Your account was successfully created. Please <a href=\"index.php\">click here to login</a>.</p>";
}
else
{
echo "<h1>Error</h1>";
echo "<p>Sorry, your registration failed. Please go back and try again.</p>";
}
}
}
else
{
?>
<h1>Register</h1>
<p>Registro</p>
<form method="post" action="register.php" name="registerform" id="registerform">
<fieldset>
<label for="username">Usuario:</label><input type="text" name="username" id="username" /><br />
<label for="password">Contraseña:</label><input type="password" name="password" id="password" /><br />
<label for="email">Email:</label><input type="text" name="email" id="email" /><br />
<input type="submit" name="register" id="register" value="Register" />
</fieldset>
</form>
<?php
}
?>
</div>
</body>
</html>
4- logout.php
Código:
<?php include "secured/mysql.php";
$_SESSION = array();
session_destroy();
?>
<meta http-equiv="refresh" content="0;index.php">
5- mysql.php
Código:
<?php
session_start();
$dbhost = "localhost"; // comprueba si es tu caso
$dbname = "membership"; // el nombre de la base de datos
$dbuser = "########"; // el username para acceder a tu base de datos
$dbpass = "**********"; // la contraseña para acceder a tu base de datos
mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error());
mysql_select_db($dbname) or die("MySQL Error: " . mysql_error());
?>
6- .htaccess
Saludos