Autor Tema: [Tutorial] Naresh's User System - PARTE 1 (Crear sistema de usuarios)  (Leído 2179 veces)

Desconectado Joel

  • PHPer@ Fijo
  • ***
  • Mensajes: 141
  • Karma: 5
    • Ver Perfil
[Tutorial] Naresh's User System - PARTE 1 (Crear sistema de usuarios)
« en: 07 de Diciembre de 2009, 15:36:00 pm »
NARESH'S USER SYSTEM
Sistema de Usuarios - PARTE 1
Traducción por: Joel

Codificado por Naresh. Enviado por adam127


Este tutorial te ayudará a crear un sistema seguro de usuarios, y avanzado. A diferencia de otras guías de aprendizaje, tenemos comentarios para casi cada línea de código, de modo que se aprende en el tutorial.

Base de datos de configuración
Vamos a utilizar una base de datos para almacenar toda la información de los usuarios. Una vez que hayas creado una base de datos, anda a phpMyAdmin y ejecuta esta consulta:

Citar
CREATE TABLE `users` (
`
idint(11NOT NULL auto_increment,
`
usernamevarchar(30NOT NULL default '',
`passwordvarchar(255NOT NULL default '',
`emailvarchar(40NOT NULL default '',
`msnvarchar(250NOT NULL default 'Sin especificar',
`aimvarchar(250NOT NULL default 'Sin especificar',
`locationvarchar(36NOT NULL default 'Sin especificar',
PRIMARY KEY (`id`)
TYPE=MyISAM;

Conexión a la base de datos
Ahora necesitamos un archivo para conectarse a la base de datos.

Citar
<?
   ob_start
(); // allows you to use cookies
   
$conn mysql_connect("localhost","DATABASE USERNAME","DATABASE PASSWORD");
   
mysql_select_db(DATABASE NAME) or die(mysql_error());
   
//fill in the above lines where there are capital letters.
   
$logged MYSQL_QUERY("SELECT * from users WHERE id=&#39;$_COOKIE[id]&#39;");
   
$logged mysql_fetch_array($logged);
   
//the above lines get the user&#39;s information from the database.
?>

Guarda el archivo como config.php

Configuración
Tendrás que añadir algo de código a la parte superior de cada página que desees utilizar en el sistema de inicio de sesión. (sin incluir las páginas a continuación). Este es el código:

Citar
<?
ob_start
();
include(
"config.php");
?>

Ahora estamos listos para comenzar la codificación de las páginas.

register.php

register.php permitirá a los usuarios a que se registren. Asegúrate de leer los comentarios.

Citar
<?php
ob_start
();
// allows you to use cookies
include("config.php");
//gets the config page
if ($_POST[register]) {
// the above line checks to see if the html form has been submitted
$username $_POST[username];
$password $_POST[pass];
$cpassword $_POST[cpass];
$email $_POST[emai1];
//the above lines set variables with the user submitted information
if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL) {
//checks to make sure no fields were left blank
echo "Un campo se dejo en blanco.";
}else{
//none were left blank!  We continue...
if($password != $cpassword) {
// the passwords are not the same!  
echo "Las contraseñas no coinciden";
}else{
// the passwords are the same!  we continue...
$password md5($password);
// encrypts the password
$checkname mysql_query("SELECT username FROM users WHERE username=&#39;$username&#39;");
$checknamemysql_num_rows($checkname);
$checkemail mysql_query("SELECT email FROM users WHERE email=&#39;$email&#39;");
$checkemail mysql_num_rows($checkemail);
if (
$checkemail>0|$checkname>0) {
// oops...someone has already registered with that username or email!
echo "El nombre de usuario o correo electrónico ya está en uso";
}else{
// noone is using that email or username!  We continue...
$username htmlspecialchars($username);
$password htmlspecialchars($password);
$email htmlspecialchars($email);
// the above lines make it so that there is no html in the user submitted information.
//Everything seems good, lets insert.
$query mysql_query("INSERT INTO users (username, password, email) VALUES(&#39;$username&#39;,&#39;$password&#39;,&#39;$email&#39;)");
// inserts the information into the database.
echo "Te has registrado con éxito.";
}
}
}
}
else
{
// the form has not been submitted...so now we display it.
echo ("
<center>
<form method=\"POST\">
Nombre de Usuario: <input type=\"text\" size=\"15\" maxlength=\"25\" name=\"username\"><br />
Contraseña: <input type=\"password\" size=\"15\" maxlength=\"25\" name=\"pass\"><br />
Confirmar Contraseña: <input type=\"password\" size=\"15\" maxlength=\"25\" name=\"cpass\"><br />
Email: <input type=\"text\" size=\"15\" maxlength=\"25\" name=\"emai1\"><br />
<input name=\"register\" type=\"submit\" value=\"Registrarme\">
</form>
</center>
"
);
}
?>

login.php
Ahora que la gente puede inscribirse, hay que dejar que se identifiquen. Puedes poner este código en un bloque de tu sitio, o colócalo en una página en blanco.

Citar
<?
oB_start
();
// allows you to use cookies.
include("config.php");
if (!
$logged[username])
{
if (!
$_POST[login])
{
echo(
"
<center><form method=\"POST\">
<table>
<tr>
<td align=\"right\">
Nombre de Usuario: <input type=\"text\" size=\"15\" maxlength=\"25\" name=\"username\">
</td>
</tr>
<tr>
<td align=\"right\">
Contraseña: <input type=\"password\" size=\"15\" maxlength=\"25\" name=\"password\">
</td></tr><tr>
<td align=\"center\">
<input type=\"submit\" name=\"login\" value=\"Iniciar Sesión\">
</td></tr><tr>
<td align=\"center\">
<a href=\"register.php\">¡Registrate gratis aquí!</a>
</td></tr></table></form></center>"
);
}
if (
$_POST[login]) {
// the form has been submitted.  We continue...
$username=$_POST[&#39;username&#39;];
$password md5($_POST[password]);
// the above lines set variables with the submitted information.  
$info mysql_query("SELECT * FROM users WHERE username = &#39;$username&#39;") or die(mysql_error());
$data mysql_fetch_array($info);
if(
$data[password] != $password) {
// the password was not the user&#39;s password!
echo "Nombre de usuario o contraseña incorrecta.";
}else{
// the password was right!
$query mysql_query("SELECT * FROM users WHERE username = &#39;$username&#39;") or die(mysql_error());
$user mysql_fetch_array($query);
// gets the user&#39;s information
setcookie("id"$user[id],time()+(60*60*24*5), "/""");
setcookie("pass"$user[password],time()+(60*60*24*5), "/""");
// the above lines set 2 cookies. 1 with the user&#39;s id and another with his/her password.  
echo ("<meta http-equiv=\"Refresh\" content=\"0; URL=http://yoursite.com\"/>¡Gracias! Redireccionando al sitio...");
// modify the above line...add in your site url instead of yoursite.com
}
}
}
else
{
// we now display the user controls.
echo ("<center>Bienvenido@ <b>$logged[username]</b><br /></center>
- <a href=\"editprofile.php\">Editar Perfil</a><br />
- <a href=\"members.php\">Lista de Miembros</a><br />
- <a href=\"logout.php\">Cerrar Sesión</a>"
);
}
?>

Editar perfil
Esta página permitirá a los usuarios a actualizar su información. Guarda como editprofile.php

Citar
<?
ob_start
();
include(
"config.php");
if (
$logged[username])
{
// the user is logged in!  We continue...
if (!$_POST[update])
{
// the form hasn&#39;t been submitted.  We continue...
$profile mysql_query("SELECT * from users where username = &#39;$logged[username]&#39;");
$profile mysql_fetch_array($profile);
// the above lines get the information so that it can be displayed in the html form.
echo("
<center><form method=\"POST\">
<table width=\"100%\">
<tr>
<td align=\"right\" width=\"25%\">
Ubicación
</td>
<td align=\"left\">
<input type=\"text\" size=\"25\" maxlength=\"25\" name=\"locate\" value=\"
$profile[location]\"></td>
</tr>
<tr>
<td align=\"right\" width=\"25%\">
MSN Messenger
</td>
<td align=\"left\">
<input size=\"25\" name=\"msn\" value=\"
$profile[msn]\"></td>
</tr>
<tr>
<td align=\"right\" width=\"25%\">
AOL Messenger</td>
<td align=\"left\">
<input size=\"25\" name=\"aim\"  value=\"
$profile[aim]\"></td>
</tr>
<tr>
<td align=\"right\" width=\"25%\">
Email</td>
<td align=\"left\">
<input size=\"25\"  name=\"email\" value=\"
$profile[email]\"></td>
</tr>
<tr>
<td align=\"center\">
</td>
<td align=\"left\">
<input type=\"submit\" name=\"update\" value=\"Actualizar\"></td>
</tr>
</table>
</form>
</center>"
);
}
else
{
$email htmlspecialchars($_POST[email]);
$aim htmlspecialchars($_POST[aim]);
$msn htmlspecialchars($_POST[msn]);
$locate htmlspecialchars($_POST[locate]);
// the above lines get rid of all html.
echo ("¡Su perfil ha sido actualizado!");
$update mysql_query("Update users set email = &#39;$email&#39;,
msn = &#39;
$msn&#39;, aim = &#39;$aim&#39;, location = &#39;$locate&#39; where username = &#39;$logged[username]&#39;");
// updates the information in the database.
}
}
else
{
// They aren&#39;t logged in!
echo ("<a href=\"login.php\">Debes ingresar</a>");
}
?>

Ver perfiles de los usuarios
Ahora tenemos que tener una página donde los miembros puedan ver los perfiles de otros miembros.

Utiliza este código, y guarda esto como members.php

Citar
<?
ob_start
();
include(
"config.php");
if (!
$_GET[user])
{
$getuser mysql_query("SELECT * from users order by id asc");
while (
$user mysql_fetch_array($getuser))
{
// gets all the users information.
echo ("<a href=\"members.php?user=$user[username]\">$user[username]</a><br />\n");
// links to a page to view the user&#39;s profile.
}
}
ELSE
{
$getuser mysql_query("SELECT * from users where username = &#39;$_GET[user]&#39;");
$usernum mysql_num_rows($getuser);
if (
$usernum == 0)
{
echo (
"Usuario no encontrado.");
}
else
{
$profile mysql_fetch_array($getuser);
echo (
"<center><b>Perfil de $profile[username]:</b><br /></center>
MSN Messenger: 
$profile[msn]<br />
AIM Messebger: 
$profile[aim]<br />
Ubicación: 
$profile[location]<br />
Email: 
$profile[email]");
// in the above code, we display the user&#39;s information.
}
}
?>

logout.php
Esta página registra el usuario a cabo. Simplemente se actualiza la cookie con información falsa.

Citar
<?
ob_start
();
setcookie("id"2132421,time()+(60*60*24*5), "/""");
setcookie("pass"loggedout,time()+(60*60*24*5), "/""");
echo (
"¡Ahora estás desconectado!");
?>

Con esto concluye este gran tutorial. Si necesitas cualquier ayuda, por favor deje un comentario en el siguiente link:
http://www.techtuts.com/forums/index.php?showtopic=48

Si quieres mostrar el cuadro de inicio de sesión en una caja de contenido
Añade este código donde desees:

Citar
<?
   
include("login.php");
?>

Sólo los miembros en las Páginas
Utilice este código para que solamente los miembros esten en algunas páginas.

Citar
<?
   ob_start
();
   include(
"config.php");
   if (
$logged[username])
   {
      echo(
"Estás conectado");
   }
   else
   {
      echo(
"No estás conectado");
   }
?>

Proximamente.. PARTE 2  :D

« Última modificación: 07 de Diciembre de 2009, 17:44:26 pm por Joel »

Comunidad PHPeros

[Tutorial] Naresh's User System - PARTE 1 (Crear sistema de usuarios)
« en: 07 de Diciembre de 2009, 15:36:00 pm »

Desconectado Tope

  • PHPero Experto
  • *****
  • Mensajes: 540
  • Karma: 23
  • Sexo: Masculino
  • Programador PHP
    • Ver Perfil
    • www.Info-Keko.Es
Re:[Tutorial] Naresh's User System - PARTE 1 (Crear sistema de usuarios)
« Respuesta #1 en: 07 de Diciembre de 2009, 17:01:43 pm »
El sitema en sí no está mal, pero me parece una chorrada poner que lo has traducido, cuando realmente has traducido 4 frases (y con un traductor online).

Cuando lo que más hace falta es traducir el código (los comentarios)... no esta mal, pero es eso.
Un Saludo, Tope >> Programador FIJO en PHPeros

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Naresh's User System - PARTE 1 (Crear sistema de usuarios)
« Respuesta #2 en: 07 de Diciembre de 2009, 17:11:20 pm »
Hello Joel , es la priemera vez que te veo en el foro desde que me registre XDD. Bueno en cuanto al sistema muy buen aporte , pero como dice Tope , tendrías que haber traducido todo el codigo

Voi a probralo , gracias por el aporte :)

#Fdo. Physlet

Desconectado Joel

  • PHPer@ Fijo
  • ***
  • Mensajes: 141
  • Karma: 5
    • Ver Perfil
Re:[Tutorial] Naresh's User System - PARTE 1 (Crear sistema de usuarios)
« Respuesta #3 en: 07 de Diciembre de 2009, 17:38:55 pm »
Hello Joel , es la priemera vez que te veo en el foro desde que me registre XDD. Bueno en cuanto al sistema muy buen aporte , pero como dice Tope , tendrías que haber traducido todo el codigo

Voi a probralo , gracias por el aporte :)

Lo tradusco entonces.. XD

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Naresh's User System - PARTE 1 (Crear sistema de usuarios)
« Respuesta #4 en: 08 de Diciembre de 2009, 14:33:33 pm »
Una pregunta , ¿Lo unico que tiene de diferencia esque se puede ver el perfil del usuario no?

#Fdo. Physlet

Desconectado Joel

  • PHPer@ Fijo
  • ***
  • Mensajes: 141
  • Karma: 5
    • Ver Perfil
Re:[Tutorial] Naresh's User System - PARTE 1 (Crear sistema de usuarios)
« Respuesta #5 en: 08 de Diciembre de 2009, 16:23:29 pm »
Una pregunta , ¿Lo unico que tiene de diferencia esque se puede ver el perfil del usuario no?

Man entra aqui: http://www.techtuts.com/forums/index.php?showforum=5&prune_day=100&sort_by=Z-A&sort_key=last_post&topicfilter=all

Esta lleno pero lleno de Addons para este sistema.
Los addons son como algo nuevo para agregarlo a un sistema de usuarios, minichat, etc..

Hay Addons Como: Shop Avanzada, Shoutbox, Image Security, Room Chats, buff muchos.

Y si que crees que solamente se puede ver el perfil agregale addons ;)