¡Hola amigos y amigas de
Phperos.net! Les traigo un
snippet (?) de un Sistema de Usuarios, tiene inicio de sesión, registro y restricción de página. Cabe aclarar que hice lo posible para que este código se fusionara y funcione perfectamente en sus webs, hay le agregue unas cuantas cosas mas, agradezco el código a
http://phpsnips.com/.
Funciona perfectamente, cualquier error reportenlo.
NOTA: Agregue la función "recordarme" para que se conecten automáticamente al entrar a la página

1.- Nos bajamos el archivo CSS para darle estilo a nuestro Sistema de Usuarios (OPCIONAL)
http://www.sendspace.com/file/iccjsq
2.- Insertamos nuestra tabla de datos en PHPMyAdmin
CREATE TABLE IF NOT EXISTS `members` (
`id` int(50) NOT NULL AUTO_INCREMENT,
`username` varchar(500) NOT NULL DEFAULT '',
`password` varchar(500) NOT NULL DEFAULT '',
`email` varchar(500) NOT NULL DEFAULT '',
`reg_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
3.- Creamos el archivo de conexión a la Base de Datos.
Connect.php
<?php
#ACCOUNT DATA MYSQL
define('DB_SERVER','el server');
define('DB_NAME','nombre de la db');
define('DB_USER','usuario de la db');
define('DB_PASS','contraseña');
#CONNECT TO THE DATABASE
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
mysql_select_db(DB_NAME,$connection);
#SET CHARSET
mysql_query("SET names UTF8");
?>
4.- Hacemos nuestro lugar de inicio de sesión, para que puedan entrar los usuarios.
Login_Page.php
<link rel="stylesheet" href="css/d13.css">
<div class="fnews">
<form action="Verify.php" method="POST" enctype="multipart/form-data">
Por favor, escriba los datos necesarios para iniciar sesión:
<br>
<br>
Nombre de Usuario:
<input type="text" value="<?php
echo $_COOKIE['remember_me']; ?>" name="username" placeholder="Nombre de usuario" />
Contraseña:
<input type="password" name="password" placeholder="Contraseña" />
<div align="right" style="padding-top:5px; padding-bottom:5px;">¿Recordarme? <input type="checkbox" name="remember" <?php if(isset($_COOKIE['remember_me'])) {
echo 'checked="checked"';
}
else {
echo '';
}
?> ></div>
<input name="login" type="submit" class="m" value="Iniciar sesión">
</form><br><br>
<strong>¿No tienes una cuenta? Registrate gratis</strong> <a class="sm" href="Register.php"><strong>aquí</strong></a></div>
5.- Creamos el registro para los nuevos miembros que se unan a la página.
Register.php
<?php
session_start();
include("Connect.php");
?>
<link rel="stylesheet" href="css/d13.css">
<H1>Crear una nueva cuenta</H1><br>
<?php
if(isset($_POST['register'])) { // Check that the data sent from the form
# search the database to see if the user name has been taken or not
$query = sprintf("SELECT * FROM members WHERE username='%s' LIMIT 1",mysql_real_escape_string($_POST['username']));
$sql = mysql_query($query);
$row = mysql_fetch_array($sql);
#check too see what fields have been left empty, and if the passwords match
$not_blank = count_chars($_POST['username'], 1);
if(!empty($not_blank[32])) {
$error .= '<p><div style="background-color:#FFBABA; border-radius: 4px; padding: 10px;"><b><font color="#D8000C">El nombre de usuario no puede tener espacios en blancos. Por favor, inténtalo de nuevo.</font></b></div></p>';
}
if($row||empty($_POST['username'])|| empty($_POST['email'])||empty($_POST['password'])|| empty($_POST['re_password'])||$_POST['password']!=$_POST['re_password']){
# if a field is empty, or the passwords don't match make a message
$error = 'Revisa los siguientes errores:';
if(empty($_POST['username'])){
$error .= '<p><div style="background-color:#FFBABA; border-radius: 4px; padding: 10px;"><b><font color="#D8000C">El nombre de usuario no puede estar vacío.</font></b></div></p>';
}
if(empty($_POST['password'])){
$error .= '<p><div style="background-color:#FFBABA; border-radius: 4px; padding: 10px;"><b><font color="#D8000C">La contraseña no puede estar vacía.</font></b></div></p>';
}
if(empty($_POST['re_password'])){
$error .= '<p><div style="background-color:#FFBABA; border-radius: 4px; padding: 10px;"><b><font color="#D8000C">Debes repetir tu contraseña.</font></b></div></p>';
}
if($_POST['password']!=$_POST['re_password']){
$error .= '<p><div style="background-color:#FFBABA; border-radius: 4px; padding: 10px;"><b><font color="#D8000C">Al parecer, las contraseñas no coinciden.</font></b></div></p>';
}
if(empty($_POST['email'])){
$error .= '<p><div style="background-color:#FFBABA; border-radius: 4px; padding: 10px;"><b><font color="#D8000C">Es necesario que nos proporciones un e-mail.</font></b></div></p>';
}
if($row){
$error .= '<p><div style="background-color:#FFBABA; border-radius: 4px; padding: 10px;"><b><font color="#D8000C">El nombre de usuario que has escogido ya existe en nuestro sistema.</font></b></div></p>';
}
}else{
# If all fields are not empty, and the passwords match,
# create a session, and session variables,
$password = mysql_real_escape_string($_POST['password']);
$password_md5 = md5($password); // encrypt the entered password with md5
$query_register = "INSERT INTO members (username,email,password,reg_date) VALUES ('".mysql_real_escape_string($_POST['username'])."', '".mysql_real_escape_string($_POST['email'])."', '".$password_md5."', NOW())";
if (mysql_query($query_register) or die (mysql_error())) {
# Redirect the user to a login page
echo "<p><div style=\"background-color:#DFF2BF; border-radius: 4px; padding: 10px;\"><b><font color=\"#4F8A10\">¡Tu cuenta ha sido creada con éxito! Por favor, espera mientras lo redireccionamos a la página principal (3 seg).</font></b></div><meta http-equiv=\"refresh\" content=\"3;URL=Login_Page.php\"></p>";
} else {
echo "<p><div style=\"background-color:#FFBABA; border-radius: 4px; padding: 10px;\"><b><font color=\"#D8000C\">¡Oops! Ha ocurrido un error inesperado, inténtalo de nuevo.</font></b></div></p>";
}
}
# echo out each variable that was set from above,
# then destroy the variable.
if(isset($error)){
echo $error;
unset($error);
}
}else {
?>
¡Bienvenid@ al registro! Por favor, para que tengas acceso a mas privilegios, es necesario que crees una cuenta. No te tomará mucho tiempo.
<?php
}
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
<div align=center>
<h3>Datos principales: </h3>
<TABLE class="gp">
<TR>
<TD CLASS="slim">Usuario:</TD>
<TD colspan=2><input name="username" type="text" title="Solo esta permitido caracteres alfanuméricos" maxlength="15" pattern="[a-zA-Z0-9]+" /></TD></TR>
<TR>
<TD CLASS="slim">Correo electrónico:</TD>
<TD><input type="text" name="email" pattern="[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+" title="El e-mail tiene que tener el siguiente formato: user@site.com" /></td><td>
</TD></TR>
<TR>
<TD CLASS="slim">Contraseña:</TD>
<TD><input type="password" name="password" pattern="[a-zA-Z0-9]+" title="Solo esta permitido caracteres alfanuméricos" /></TD></TR>
<TR>
<TD CLASS="slim">Repite contraseña:</TD>
<TD><input type="password" name="re_password" /></TD></TR>
</TABLE><br>
PHP Snippets - Sistema de Usuarios<br>
<br>
</p>
<input name="register" type="submit" class="sum" VALUE="¡Registrar cuenta!">
</div>
</form>
6.- Ahora que tenemos todo lo esencial, creamos el archivo de verificación al iniciar sesión.
Verify.php
<?php
session_start();
include("Connect.php");
// Login Function
if(isset($_POST['login'])) { // Check that the data sent from the form
if(empty($_POST['Username']) || empty($_POST['Password'])) {
echo "<div style=\"background-color:#FFBABA; border-radius: 4px; padding: 10px;\"><font color=\"#D8000C\"><strong>¡Oops! Parece que has dejado algún campo vacío.</strong></font></div>";
}else {
$username = mysql_real_escape_string($_POST['Username']);
$password = hash('md5', mysql_real_escape_string($_POST['Password']));
$sql = mysql_query("SELECT * FROM members WHERE username='".$username."' AND password='".$password."' LIMIT 1");
if(mysql_num_rows($sql) == 1){
$row = mysql_fetch_array($sql);
$_SESSION['id'] = $row['id'];
$_SESSION['username'] = $row["username"];
$_SESSION['logged'] = TRUE;
if($_POST['remember']) {
$year = time() + 31536000;
setcookie('remember_me', $_POST['Username'], $year);
}
elseif(!$_POST['remember']) {
if(isset($_COOKIE['remember_me'])) {
$past = time() - 100;
setcookie(remember_me, gone, $past);
}
}
echo "<div style=\"background-color:#DFF2BF; border-radius: 4px; padding: 10px;\"><font color=\"#4F8A10\"><strong>Ingresando al sistema... por favor, espera mientras es redireccionado al panel de usuario (3 seg)</strong></font></div><meta http-equiv=\"refresh\" content=\"3;URL=Main.php\">";
}else {
echo "<div style=\"background-color:#FFBABA; border-radius: 4px; padding: 10px;\"><font color=\"#D8000C\"><strong>Has ingresado datos erróneos, ¿seguro que no has olvidado tu contraseña o el nombre de usuario?</strong></font></div>";
}
}
}else {
header("Location: Login_Page.php");
exit;
}
?>
7.- Por ultimo, para concretar este tutorial, haremos la página privada que solo el usuario registrado puede ver:
Main.php
<?php
session_start();
include("Connect.php");
?>
<link rel="stylesheet" href="css/d13.css">
<?php
if($_SESSION['logged']==TRUE) {
?>
<H1>Página privada de usuarios</H1><br>
<div class="fnews">
¡Hola, <? echo("$_SESSION[username]");?>! Eres un usuario registrado, por lo tanto, puedes ver esta página.
</div>
<?php
}else {
?>
No tienes permisos para ver esta página... ¡Inicia sesión!
<?php
}
?>
Si quieres agregar páginas privadas, lo unico que tienes que hacer es esto...
<?php
session_start();
include("Connect.php");
if(!$_SESSION['logged']){
header("Location: Login_Page.php");
exit;
} // Si el usuario no esta conectado, no podrá ver esta página y sera redirigido a la página de inicio de sesión
?>
Holaaaaaaaaaaaaaaaaaaaaaaaaaa. Solo usuarios registrados pueden verme jijijij
Eso es todo.

Espero que les haya gustado.
