help_outline
Ayudanos!
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Tutorial] Login y registro basico sin unas base de datos

  • 11 Respuestas
  • 7944 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado HckDrk

  • *
  • Underc0der
  • Mensajes: 55
  • Actividad:
    0%
  • Reputación 0
  • http://127.0.0.1
    • Ver Perfil
    • HckDrk
« en: Mayo 17, 2011, 04:22:15 pm »
hola!

jojo, aqui uno de mis pequeños aportes xD

les traigo amm un "tutorial" de un login y registro basico sin usar base de datos com mysql (el mas usado en php), oracle o algun otro tipo de DB

espero le entiendan, esta muy comentado, en casi todas las lineas, sino entienden algo solo me dicen! :)

ok, consistira de 3 paginas php, el primero sera el index.php, donde se mostrara el contenido, sino estas logueado nos redireccionara al login.php

Código: PHP
  1. <?php
  2.  
  3. if($_SESSION['login']!="ok"){ //si la variable de sesion login es diferente a "ok"
  4.  
  5.         header("Location: login.php"); //redirgimos al login.php
  6.  
  7. }else{ //si la variable es igual a "ok" mostramos el contenido..
  8. ?>
  9.  
  10. <html>
  11. <head>
  12. <title>aqui el contenido para usuarios registrados</title>
  13. </head>
  14. <body bgcolor="#000000" text="#FFFFFF">
  15. <p align="right">Bienvenido <b><?php echo $_SESSION['usuario']; ?></b> | <a href="login.php?action=logout">Cerrar Sesion</a></p><hr><br>
  16. <center>
  17. <h1>Aqui iria el contenido para los usuarios registrados</h1>
  18. blablabla xD<br>Visita <a href="http://zone-hack.net" target="_blank">http://zone-hack.net</a>
  19. </body>
  20. </html>
  21. <?php
  22. }
  23. ?>
  24.  

despues sigue el archivo registrar.php donde crearemos unas carpetas con el nombre del usuario, y ahi adentro crearemos un archivo con los datos del usuario. PD: hay que crear una carpeta que se llame "users" (sin comillas)

Código: PHP
  1. <?php
  2.  
  3. //sistema de des/encriptacion por HckDrk, Zone-Hack.Net
  4. function des_encriptacion_zh($action,$cadena){ //primer parametro, encriptacion o desencriptacion. el segundo es la cadena a encriptar o desencriptar
  5.  
  6.         if($action=="encriptacion"){
  7.  
  8.                 $valor=file_get_contents("http://tools.zone-hack.net/Apis/Encriptacion/index.php?action=$action&cadena=$cadena");
  9.                 $valor=html_entity_decode($valor);
  10.                
  11.         }else if($action=="desencriptacion"){
  12.        
  13.                 $valor=file_get_contents("http://tools.zone-hack.net/Apis/Encriptacion/index.php?action=$action&cadena=$cadena");
  14.                 $valor=html_entity_decode($valor);
  15.        
  16.         }else{
  17.        
  18.                 exit("Error en la funcion </i>des_encriptacion_zh<i>, en el primer parametro solo se premite introducir \"encriptacion\" o \"desencriptacion\" ");
  19.        
  20.         }
  21.  
  22. return $valor;
  23.  
  24. }
  25.  
  26. if($_POST['action']=="enviar"){ //si mandamos el formulario...
  27.  
  28.         if($_POST['usuario']=="" || $_POST['email']=="" || $_POST['pregunta']=="" || $_POST['r_secreta']=="" || $_POST['pass']=="" || $_POST['pass2']==""){ //si los campos estan vacios
  29.  
  30.                 echo"<script>alert('debe rellerar todos los campos')</script>"; //mostramos error
  31.  
  32.         }else{ //sino estan vacios...
  33.        
  34.                 if($_POST['pass']!=$_POST['pass2']){ //si los password no coinciden
  35.                 echo "<script>alert('los password no coinciden!')</script>"; //mostramos mensaje de error
  36.                 }else{ //si coinciden..
  37.        
  38.                 if(!file_exists("./users/".$_POST['usuario'])){ //si no existe el usuario..
  39.                        
  40.                         mkdir("users/".$_POST['usuario'], 0777) or die("no se pudo crear el usuario "); //creamos una carpeta
  41.                         $fp=fopen("users/".$_POST['usuario']."/datos.php","w+") or die("no se pudo crear el usuarioo"); //creamos el archivo datos.php donde se guardara su user y su pass
  42.                         fputs($fp,"<?php\n");
  43.                         fputs($fp,"\$email=\"".strip_tags($_POST['email'])."\";\n"); //eliminamos etiquetas html, y guardamos el correo
  44.                         fputs($fp,"\$pregunta=\"".strip_tags($_POST['pregunta'])."\";\n"); //eliminamos etiquetas html, y guardamos la pregunta para cambiar pass
  45.                         fputs($fp,"\$r_secreta=\"".strip_tags($_POST['r_secreta'])."\";\n"); //eliminamos etiquetas html, y guardamos el user
  46.                         fputs($fp,"\$user=\"".strip_tags($_POST['usuario'])."\";\n"); //eliminamos etiquetas html, y guardamos el user
  47.                         fputs($fp,"\$pass=\"".des_encriptacion_zh("encriptacion",strip_tags($_POST['pass']))."\";\n"); //eliminamos etiquetas html, encriptamos con nuestro propio sistema de encriptamiento y guardamos el pass
  48.                         fputs($fp,"?>\n");
  49.                         echo "<script>alert('registro completo!')</script>"; //mostramos que todo salio bien
  50.                         echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php\">";
  51.                
  52.        
  53.                 }else{ //si ya existe el usuario
  54.                         echo "<script>alert('ya existe el usuario ".$_POST['usuario']."')</script>"; //mostramos que ya existe el usuario
  55.                 }
  56.                 }
  57.         }
  58. }
  59.  
  60.  
  61.  
  62. ?>
  63. <html>
  64. <head>
  65. <title>Registro de usuarios sin base de datos</title>
  66. </head>
  67. <body bgcolor="#000000" text="#FFFFFF">
  68.  
  69. <br>
  70. <?php
  71.  
  72. if($_SESSION['login']!="ok"){ //si la variable de sesion es diferente a ok entonces mostraremos el formulario de registro
  73.  
  74. ?>
  75. <center>
  76. <h1>Registro de usuarios sin base de datos</h1>
  77. <table border="0" align="center">
  78. <form method="post" action="registrar.php">
  79. <tr><td>usuario: </td><td><input type="text" name="usuario"></td></tr>
  80. <tr><td>E-mail: </td><td><input type="text" name="email"></td></tr>
  81. <tr><td>password: </td><td><input type="password" name="pass"></td></tr>
  82. <tr><td>repita el pass: </td><td><input type="password" name="pass2"></td></tr>
  83. <tr><td>pregunta seguridad: (<a href="javascript:alert('se te preguntara esta pregunta y su respuesta en caso de que olvides tu password')">?</a>)</td><td><select name="pregunta"><option value="">selecciona una pregunta</option><option value="mascota favorita">mascota favorita</option><option value="mejor amigo">mejor amigo</option><option value="pelicula favorita">pelicula favorita</option></select></td></tr>
  84. <tr><td>respuesta secreta: </td><td><input type="text" name="r_secreta"></td></tr>
  85. <input type="hidden" name="action" value="enviar">
  86. <tr><td colspan="2"><center><input type="submit" value="registrarse!"></center></td></tr>
  87. <tr><td colspan="2"><center><a href="login.php">Iniciar Sesion</a></center></td></tr>
  88. </form>
  89. </table>
  90. <?php
  91. }else{ //si la varieble de sesion es igual a ok entonces redirigimos al index
  92.  
  93. header("Location: index.php");
  94.  
  95. }
  96. ?>
  97. </body>
  98. </html>
  99.  

y por ultimo el login.php donde crearemos variables de sesion para poder ver el contenido del index, tambien aqui podremos recuperar el password, pos si se nos olvido..

Código: PHP
  1. <?php
  2.  
  3. //sistema de des/encriptacion por HckDrk, Zone-Hack.Net
  4. function des_encriptacion_zh($action,$cadena){ //primer parametro, encriptacion o desencriptacion. el segundo es la cadena a encriptar o desencriptar
  5.  
  6.         if($action=="encriptacion"){
  7.  
  8.                 $valor=file_get_contents("http://tools.zone-hack.net/Apis/Encriptacion/index.php?action=$action&cadena=$cadena");
  9.                 $valor=html_entity_decode($valor);
  10.                
  11.         }else if($action=="desencriptacion"){
  12.        
  13.                 $valor=file_get_contents("http://tools.zone-hack.net/Apis/Encriptacion/index.php?action=$action&cadena=$cadena");
  14.                 $valor=html_entity_decode($valor);
  15.        
  16.         }else{
  17.        
  18.                 exit("Error en la funcion </i>des_encriptacion_zh<i>, en el primer parametro solo se premite introducir \"encriptacion\" o \"desencriptacion\" ");
  19.        
  20.         }
  21.  
  22. return $valor;
  23.  
  24. }
  25.  
  26. if($_SESSION['login']=="ok"){ //si la variable de sesion login es igual a "ok"
  27.  
  28.         if($_GET['action']=="logout"){ //si el action obtenido de la ur es igual a logout destruimos las sessiones
  29.                 Session_destroy();
  30.                 header("Location: index.php");
  31.                 exit();
  32.         }else{ //sino es ninguna accion redirigimos al index
  33.  
  34.         header("Location: index.php");
  35.         exit();
  36.         }
  37.        
  38. }else{ //sino es igual a ok
  39.  
  40. if($_GET['action']=="remember"){ //si el action tomado del url es igual a remember
  41.  
  42.        
  43.         if($_POST['remember']=="enviar"){ //si enviamos el formulario de recordar pass
  44.                 if($_POST['usuario']=="" || $_POST['email']=="" || $_POST['pregunta']=="" || $_POST['r_secreta']==""){ //si los campos estan vacios..
  45.                         echo "<script>alert('debe rellenar todos los campos')</script>"; //mostramos mensaje de error
  46.                         echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php?action=remember\">"; //y redirigimos de nuevo al formulario
  47.                 }else{   //si los campos no estan vacios
  48.                         if(file_exists("./users/".$_POST['usuario'])){ //si existe el usuario
  49.                                 include("./users/".$_POST['usuario']."/datos.php"); //incluimos los datos
  50.                                         if($email==$_POST['email']){ //si el email del login coincide con el del registro
  51.                                                 if($pregunta==$_POST['pregunta'] && $r_secreta==$_POST['r_secreta']){ //si la pregunta de seguridad y el email coinciden con los del registro
  52.                                                         $encabezados = "From: admin@dominio.com\nReply-To: admin@dominio.com\nContent-Type: text/html; charset=iso-8859-1";
  53.                                                         $mensaje= "tu usuario es: ".$_POST['usuario']."<br><br>Tu password es: ".des_encriptacion_zh("desencriptacion",$pass);
  54.                                                         if(mail($_POST['email'], "has solicitado tu password",$mensaje, $encabezados)){ //mandamos el email con los datos
  55.                                                                 echo "<script>alert('tu pass ha sido enviado a tu correo')</script>";
  56.                                                         }else{ //sino se pudo mandar el email
  57.                                                                 echo "<script>alert('tu password es: ".des_encriptacion_zh("desencriptacion",$pass)."')</script>"; //mostramos el password
  58.                                                                 echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php\">"; //redirigimos al index
  59.                                                         }
  60.                                                 }else{ //si la pregunta o respuesta secreta no coindicen con los del registro...
  61.                                                         echo "<script>alert('la pregunta o respuesta secreta no coinciden con la pregunta o respuesta del registro')</script>"; //mostramos error
  62.                                                         echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php?action=remember\">"; //redirigimos al formulario
  63.                                                 }
  64.                                         }else{ //si el email no coindide con el del registro
  65.                                                 echo"<script>alert('el email no coincide con el del registro')</script>"; //mostramos error
  66.                                                 echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php?action=remember\">"; //redirigimos al formulario
  67.                                         }
  68.                
  69.                         }else{ //si el usuario no existe..
  70.                                 echo"<script>alert('el usuario no existe!')</script>"; //mostramos error
  71.                                 echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php?action=remember\">"; //redirigimos al formulario
  72.                         }
  73.                 }
  74.         }else{ //sino se ha enviado el formulario de recordar pass mostramos el formulario..
  75. ?>
  76. <html>
  77. <head>
  78. <title>Remeber Password</title>
  79. </head>
  80. <body bgcolor="#000000" text="#FFFFFF">
  81. <center>
  82. <h1>recordar pass</h1>
  83. <table border="0" align="center">
  84. <form method="post" action="login.php?action=remember">
  85. <tr><td>usuario: </td><td><input type="text" name="usuario"></td></tr>
  86. <tr><td>E-mail: </td><td><input type="text" name="email"></td></tr>
  87. <tr><td>pregunta seguridad: (<a href="javascript:alert('la pregunta que elegiste cuando te registraste')">?</a>)</td><td><select name="pregunta"><option value="">selecciona una pregunta</option><option value="mascota favorita">mascota favorita</option><option value="mejor amigo">mejor amigo</option><option value="pelicula favorita">pelicula favorita</option></select></td></tr>
  88. <tr><td>respuesta secreta: </td><td><input type="text" name="r_secreta"></td></tr>
  89. <input type="hidden" name="remember" value="enviar">
  90. <tr><td colspan="2"><center><input type="submit" value="Obtener Password"></center></td></tr>
  91. <tr><td colspan="2"><center><a href="login.php">Iniciar Sesion</a></center></td></tr>
  92. </form>
  93. </table>
  94. </body>
  95. </html>
  96. <?php
  97.         }
  98. }else{ //si el action obtenido de la url no es remember
  99.  
  100.  
  101. if($_POST['action']=="enviar"){ //si enviamos el formulario del login
  102.  
  103.         if($_POST['usuario']=="" || $_POST['pass']==""){ //si los campos estan vacios
  104.                 echo"<script>alert('debe introducir todos los datos!')</script>"; //mostramos error
  105.         }else{ //sino estan vacios
  106.  
  107.         if(file_exists("./users/".$_POST['usuario'])){ //si existe el usuario
  108.                 include("./users/".$_POST['usuario']."/datos.php"); //incluimos los datos
  109.                         if($pass==des_encriptacion_zh("encriptacion",$_POST['pass'])){ //si el pass del login coincide con el del rgistro
  110.                                 $_SESSION['usuario']=strip_tags($_POST['usuario']); //creamos una variable de sesion con el nombre del usuario
  111.                                 $_SESSION['login']="ok"; //creamos la variable de sesion login con el valor de ok
  112.                                 header("Location: index.php"); //redirigimos al index
  113.                         }else{ //si no coinciden los pass
  114.                                 echo"<script>alert('los datos son incorrectos!')</script>"; //mostramos que no son correctos los datos
  115.                         }
  116.                
  117.         }else{ //sino existe el usuario
  118.                 echo "<script>alert('el usuario no existe!')</script>"; //mostramos que no existe el usuario
  119.         }
  120.        
  121.         }
  122.  
  123. }
  124.  
  125. }
  126.  
  127. }
  128. if($_GET['action']!="remember"){ //si action obtenido de la url es diferente a remember mostramos el formulario de login
  129. ?>
  130. <html>
  131. <head>
  132. <title>Login</title>
  133. </head>
  134. <body bgcolor="#000000" text="#FFFFFF">
  135. <center>
  136. <h1>Login de usuarios</h1>
  137. <table border="0" align="center">
  138. <form method="post" action="">
  139. <tr><td>Usuario:</td><td><input type="text" name="usuario"></td></tr>
  140. <tr><td>Pass:</td><td><input type="password" name="pass"></td></tr>
  141. <input type="hidden" name="action" value="enviar">
  142. <tr><td colspan="2"><center><input type="submit" value="Enviar"></center></td></tr>
  143. </form>
  144. <tr><td><center><a href="registrar.php">Registrarse</a></td><td><center><a href="login.php?action=remember">Olvido su Password?</a></td></tr>
  145. </table>
  146. </body>
  147. </html>
  148. <?php
  149. }
  150. ?>
  151.  
« Última modificación: Marzo 27, 2014, 05:51:55 pm por Expermicid »

Desconectado Xt3mP

  • *
  • Underc0der
  • Mensajes: 432
  • Actividad:
    0%
  • Reputación 0
  • Ellos me están buscando, pero yo los encontraré.
    • MSN Messenger - Xt3mP@h4x0rz.us
    • AOL Instant Messenger - Xt3mP@h4x0rz.us
    • Yahoo Instant Messenger - Xt3mP@h4x0rz.us
    • Ver Perfil
    • Xt3mP
« Respuesta #1 en: Mayo 17, 2011, 07:49:46 pm »
¿Es seguro?, ¿Qué pasa si en vez de meter etiquetas HTML y suponiendo que tienes las magic_quotes() OFF pongo ' o "? tu datos.php pasaría a verse porque daría un error de sintáxis, por lo demás esta muy bueno, te recomiendo que cuando utilizes solo string utilizes comillas simples para evitar poner la diagonal invertida:

Tu línea:
Código: PHP
  1. <?php
  2. fputs($fp,"\$email=\"".strip_tags($_POST['email'])."\";\n");
  3. ?>
  4.  

Mi línea:
Código: PHP
  1. <?php
  2. fputs($fp,'$email="'.strip_tags($_POST['email']).'";'."\n");
  3. ?>
  4.  

Solo uso comillas dobles en el \n ya que las comillas simples no lo procesan, saludos.

P.D. Buen método.
Cada vez que me das Karma me motivas

Desconectado d33k40

  • *
  • Underc0der
  • Mensajes: 94
  • Actividad:
    0%
  • Reputación 0
  • En la tierra de los ciegos, el tuerto es el rey.
    • Ver Perfil
    • Email
« Respuesta #2 en: Mayo 17, 2011, 08:24:41 pm »
Buenas, decir que me parece muy bueno el código y que si pudiera usarlo para un proyecto.

un saludo!

Desconectado frank01

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #3 en: Noviembre 18, 2011, 01:50:32 pm »
saludos soy nuevo en e foro y en programacion, probe el cdigo y me aparecen los siguientes errores, Notice: Undefined index: login , Notice: Undefined index: action
uso windows wampserver y visualizo el codigo en locahost. ayuda por favor y gracias

Desconectado rabulu

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #4 en: Noviembre 18, 2011, 11:50:20 pm »
Me parece muy buen post, solo tengo una pregunta según lo que vi del código el mismo código crea la carpeta, pero y como o donde le ponemos el usuario y la contraseña, la duda es en la linea 40 y 41 de registrar.php, en caso de ser así, y si no pues de plano no entendí nada, si me pudieras echar una mano HckDrk. gracias. ;D

Desconectado Xt3mP

  • *
  • Underc0der
  • Mensajes: 432
  • Actividad:
    0%
  • Reputación 0
  • Ellos me están buscando, pero yo los encontraré.
    • MSN Messenger - Xt3mP@h4x0rz.us
    • AOL Instant Messenger - Xt3mP@h4x0rz.us
    • Yahoo Instant Messenger - Xt3mP@h4x0rz.us
    • Ver Perfil
    • Xt3mP
« Respuesta #5 en: Noviembre 19, 2011, 02:04:14 am »
La verdad (sin ofender a HckDrk) no recomiendo hacer un login y registro de esta manera; en unos momentos trataré de subir uno más actualizado y explicando batantes cosas.

Saludos.
Cada vez que me das Karma me motivas

Desconectado s00rk

  • *
  • Underc0der
  • Mensajes: 68
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #6 en: Noviembre 19, 2011, 04:40:32 am »
Para esto prefiero hacer una clase, luego crear el objeto y de ahi crear una de-serializacion segun lo que ocupe y ya. (Esto en PHP nunca lo he hecho, pero he leido que tambien existe tal funcion y si se puede tratar como lo he hecho en C# es posible y bastante sencillo)

O tambien hacerlo directamente todo en un xml.
« Última modificación: Noviembre 19, 2011, 04:43:11 am por s00rk »

Desconectado rabulu

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #7 en: Noviembre 19, 2011, 06:36:15 pm »
pues espero ese tuto Xt3mP, si furas tan amable de avisar cuando este listo. gracias.

Desconectado Xt3mP

  • *
  • Underc0der
  • Mensajes: 432
  • Actividad:
    0%
  • Reputación 0
  • Ellos me están buscando, pero yo los encontraré.
    • MSN Messenger - Xt3mP@h4x0rz.us
    • AOL Instant Messenger - Xt3mP@h4x0rz.us
    • Yahoo Instant Messenger - Xt3mP@h4x0rz.us
    • Ver Perfil
    • Xt3mP
« Respuesta #8 en: Noviembre 19, 2011, 07:06:23 pm »
Yo te aviso rabulu.
Cada vez que me das Karma me motivas

Desconectado rabulu

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #9 en: Noviembre 21, 2011, 01:55:18 am »
Ok Xt3mP espero......  tic tac tic tac............
saludos.

Desconectado caqca1

  • *
  • Underc0der
  • Mensajes: 32
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #10 en: Noviembre 21, 2011, 03:16:05 am »
concuerdo con Xt3mP
nadie con experiencia usaria ese codigo, pero es un claro ejemplo de como manejar las sesiones
PD: las contraseñas no son necesesarias, solo son medidas de seguridad para evitar el rovo de identidad

Desconectado Xt3mP

  • *
  • Underc0der
  • Mensajes: 432
  • Actividad:
    0%
  • Reputación 0
  • Ellos me están buscando, pero yo los encontraré.
    • MSN Messenger - Xt3mP@h4x0rz.us
    • AOL Instant Messenger - Xt3mP@h4x0rz.us
    • Yahoo Instant Messenger - Xt3mP@h4x0rz.us
    • Ver Perfil
    • Xt3mP
« Respuesta #11 en: Noviembre 21, 2011, 07:37:49 am »
Así es, aunque no recomiendo hacer login sin base de datos; te expones más en términos de seguridad.

En cuanto logre montar videos HD haré un tutorial de como crear un login básico con sesiones + DB.

P.D. Aprovecho el post para saber si alguien sabe como puesto que cambie de camtasia y de resolución... y ver videos pantalla completa no me favorece porque el código no se aprecia bien.
Cada vez que me das Karma me motivas

 

¿Te gustó el post? COMPARTILO!



10 Mejores Librerías Para Seguridad En PHP - Seguridad De Datos Desde PHP

Iniciado por graphixx

Respuestas: 0
Vistas: 2062
Último mensaje Enero 23, 2016, 06:03:10 am
por graphixx
[Tutorial] Utilizar el método GET para simplificar páginas [Xt3mP]

Iniciado por Xt3mP

Respuestas: 0
Vistas: 1558
Último mensaje Marzo 19, 2010, 01:15:53 am
por Xt3mP
[Tutorial] Utilizando localhost para visualizar .php by Subzer [PHP]

Iniciado por Subzer

Respuestas: 2
Vistas: 1668
Último mensaje Noviembre 14, 2012, 09:57:49 pm
por Subzer
[Tutorial] Cambiar password aleatoriamente y UPDATE a la DB [Xt3mP]

Iniciado por Xt3mP

Respuestas: 0
Vistas: 1267
Último mensaje Marzo 19, 2010, 01:21:11 am
por Xt3mP
Tutorial Formularios POST-GET con Arrays predifinidos.

Iniciado por Matabarras

Respuestas: 0
Vistas: 1180
Último mensaje Noviembre 24, 2012, 12:44:42 pm
por Matabarras