• Viernes 8 de Noviembre de 2024, 23:01

Autor Tema:  Sistema Login/Registro con almacén de fechas  (Leído 3924 veces)

ToNy_EsP

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Sistema Login/Registro con almacén de fechas
« en: Domingo 5 de Julio de 2009, 12:26 »
0
Hola a todos,

Pues me mandaron hacer un proyecto, consiste en crear una web que tenga un sistema (muy raro, porque yo a penas sé Html y ya me mandaron tal proyecto =S).

Se trata primeramente de crear un sistema de Registro/Login, de tal manera que una vez registrado un usuario, ese usuario pueda hacer Login. Al introducir ese usuario su user y pass y darle a Loguearse, se quede guardado en alguna parte (Base SQL...) y que en esa base SQL se guarde no su User y Pass, sino el día en que se loqueó. Y después el Administrador (en este caso yo) acceda a una url (donde se contengan los los días en que se loguearon esos usuarios) y vea esa información. También tengo que aclarar que me dijeron que, por ejemplo, si un usuario se logueó el Lunes, el Miércoles y el Viernes, cuando yo acceda a esa Url donde se contienen los datos aparezca una columna donde ponga todos los días que se ha logueado ese usuario [pone: Usuario: Tony (eso en una columna) (en otra columna pone) Fecha de loqueos: 1-03-09, 3-05-09 ...].

Sé que ésto es dificilísimo de hacer y que más de uno me dirá que contrate a un profesional (porque yo no tengo ni idea de como se podría hacer este sistema, y si no lo hago me suspenden :S) pero es que no tengo dineros para contratar a un profesional, y vengo aquí para ver si alguien tiene la amabilidad de ayudarme.  :good:  :ouch:

PD: YA ME SERVI DE INFO QUE ENCONTRE POR INTERNE, PERO AL SER UN SISTEMA TAN COMPLEJO NO HE LLEGADO A NADA TRAS HORAS, DÍAS Y SEMANAS DE BUSQUEDA. :s.

Muchas gracias por leer mi post y gracias de antemano

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #1 en: Domingo 5 de Julio de 2009, 21:14 »
0
En realidad no es tan dificil... ya tenés un sistema de registro y login hecho?
Porque a mi parecer lo único que necesitarías para eso es:

Script de registro (un formulario simple que mande los datos a un script que haga una consulta insert)

Script de login (un formulario que pida usuario y contraseña y verifique su existencia en la base de datos con una consulta select)

3 bases de datos (log de fechas / usuarios / usuario administrador) (si el usuario administrador es uno solo bien podrías ponerlo en el código)

Script de login para el administrador (un script simple que concuerde 2 valores con 2 variables o 2 datos de la db)

Lista de logueos (un script que lea todo lo ingresado en la base de datos de logs y lo muestre)

La única "dificultad" que le veo y en realidad no es para nada difícil, es que hay que grabar una fecha en el script de login...

Quedaría mas o menos

if($_POST['contraseña'] == $consulta['contraseña']) {
setcookie("Log",'1'); // Tal vez acá quieras usar un session para que no queden logueados mas de un dia...
session_start();
$_SESSION['log'] = 1;
mysql_query("INSERT INTO logs (user, fecha) values ('".$_POST['usuario']."','".date('d/m/y')."'");
}

Espero que ayude.

ToNy_EsP

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #2 en: Domingo 5 de Julio de 2009, 21:31 »
0
WOW, increible tu respuesta.

Sí, ya tenía hecho el sistema de Login/Registro. Me falta lo del almacenamiento de fechas.

Tu respuesta me inspiró muchísimo. Lo malo es que hace menos de 1 mes que empezaron las clases de Html y no sé a penas (sé lo básico solamente) de ello.

Entiendo las primeras lineas pero estas:

Citar
Script de login para el administrador (un script simple que concuerde 2 valores con 2 variables o 2 datos de la db)

Lista de logueos (un script que lea todo lo ingresado en la base de datos de logs y lo muestre)

La única "dificultad" que le veo y en realidad no es para nada difícil, es que hay que grabar una fecha en el script de login...

Quedaría mas o menos

if($_POST['contraseña'] == $consulta['contraseña']) {
setcookie("Log",'1'); // Tal vez acá quieras usar un session para que no queden logueados mas de un dia...
session_start();
$_SESSION['log'] = 1;
mysql_query("INSERT INTO logs (user, fecha) values ('".$_POST['usuario']."','".date('d/m/y')."'");
}

Sé a lo que se refieren pero no sé cómo crear un script de login para el administrador, ni lo del grabado de la fecha (por cierto donde pusiste:  Tal vez acá quieras usar un session para que no queden logueados mas de un dia... es verdad, acabo de recordar que me dijeron justamente eso, ya que seria un porkect de como una mini-empresa. No pueden quedarse logueados más de un día).

Entiendo también la mayoría de parámetros del código Php que insertaste, y lo he probado, pero claro esta, no sé donde se consultarían esos datos de ingresos (que pueden ser públicos) ni algunas cosillas como esas.

Te agradezco muchísimo tu interes. Gracias.

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #3 en: Domingo 5 de Julio de 2009, 23:04 »
0
El script de login de administrador sería casi igual al login común, solo que en vez de comparar los datos ingresados con los de un usuario común, los compararía con los del usuario administrador...
La lista de logueos sería mas o menos asi:

Código: Text
  1.  
  2. session_start();
  3. if($_SESSION['log'] == 1) {
  4.    $consulta = mysql_query("SELECT * FROM logs ORDER BY usuario");
  5.    echo "<table><tr><td>Usuario</td><td>fecha</td></tr>";
  6.    while($registro = mysql_fetch_array($consulta)) {
  7.       echo "<tr><td>".$registro['usuario']."</td><td>".$registro['fecha']."</td></tr>";
  8.    }
  9.    echo "</table>";
  10. } else {
  11.    echo "debe loguearse para ver esta información";
  12. }
  13.  
  14.  


El script de login (que ya tenés hecho) debería estar basado en sessions y donde la session se define debería estar esta linea:

Código: Text
  1.  
  2. mysql_query("INSERT INTO logs (user, fecha) values ('".$_POST['usuario']."','".date('d/m/y')."'");
  3.  
  4.  

Y el script de login de administrador como ya te dije arriba sería casi igual que el login normal solo que en vez de buscar los datos en la tabla usuarios los deberías buscar en la tabla administradores.

Espero que salga :P.

ToNy_EsP

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #4 en: Lunes 6 de Julio de 2009, 00:19 »
0
ya hice lo otro :D. pero me queda lo de lista de login :S. mira, te dejo el codigo fuente completo del login (que creo que esta bien):

Código: PHP
  1.  
  2. <?php
  3.  
  4. include("config.php");
  5.  
  6. // connect to the mysql server
  7. $link = mysql_connect($server, $db_user, $db_pass)
  8. or die ("Could not connect to mysql because ".mysql_error());
  9.  
  10. // select the database
  11. mysql_select_db($database)
  12. or die ("Could not select database because ".mysql_error());
  13.  
  14. $match = "select id from $table where username = '".$_POST['username']."'
  15. and password = '".$_POST['password']."';";
  16.  
  17. $qry = mysql_query($match)
  18. or die ("Could not match data because ".mysql_error());
  19. $num_rows = mysql_num_rows($qry);
  20.  
  21. if ($num_rows <= 0) {
  22. echo "Sorry, there is no username or password with: <strong>".$_POST['username']."</strong><br>";
  23. echo "<a href=login.html>Try again</a>";
  24.  
  25. } else {
  26.  
  27. setcookie("loggedin", "".$_POST['username']."", time()+(3600 * 24));
  28. echo "Welcome: <strong>".$_POST['username']."</strong><br>";
  29. echo "Continue to the <a href=members.php>members</a> section.";
  30. $_SESSION['log'] = 1;
  31. mysql_query("INSERT INTO logs (usuario, fecha) values ('".$_POST['username']."','".date('d/m/y')."'");
  32. }
  33. $logeo=time();
  34. ?>
  35.  
  36.  

Aquí te dejo el codigo de lo de ver los logins:

Código: PHP
  1.  
  2.  if($_SESSION['log'] == 1) {
  3.     $consulta = mysql_query("SELECT * FROM logs ORDER BY usuario");
  4.     echo "<table><tr><td>Usuario</td><td>fecha</td></tr>";
  5.     while($registro = mysql_fetch_array($consulta)) {
  6.        echo "<tr><td>".$registro['usuario']."</td><td>".$registro['fecha']."</td></tr>";
  7.    }
  8.    echo "</table>";
  9.  } else {
  10.     echo "debe loguearse para ver esta información";
  11.  }
  12.  
  13.  
  14.  

Por cierto, quiero hacer que todo el mundo pueda ver los logins (los días en los que se ha logeado, osea, hacerlo público y no con contraseña).   :)

Pues resulta que el code que sirve para ver los logins que han hecho no sirve, lo hago con Dreamweaver 8, lo guardo en .Php y el codigo es exactamente en mismo que he puesto ahí arriba, pero a la hora de visualizar la página me aparece el mismo código (bueno eso ignoremoslo, por eso dije lo de hacerlo publico, porque ademas de que me dan más nota es más fácil  :P ).

¿Qué hago mal? o ¿Qué tengo que hacer?

Muchísimas gracias de nuevo, ojalá no te cause muchas molestias  :wacko:  :(  Muchisimas gracias de veras :D.

Un saludo

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #5 en: Lunes 6 de Julio de 2009, 00:37 »
0
Ok, vamos por partes... lo de la cookie lo tenés que sacar... porque vas a usar session...

Así que esta parte:

Código: Text
  1. } else {
  2.  
  3. setcookie("loggedin", "".$_POST['username']."", time()+(3600 * 24));
  4. echo "Welcome: <strong>".$_POST['username']."</strong><br>";
  5. echo "Continue to the <a href=members.php>members</a> section.";
  6. session_start();
  7. $_SESSION['log'] = 1;
  8. mysql_query("INSERT INTO logs (usuario, fecha) values ('".$_POST['username']."','".date('d/m/y')."'");
  9. }
  10.  

sería así:

Código: Text
  1.  } else {
  2.  
  3. session_start();
  4. $_SESSION['log'] = 1;
  5. mysql_query("INSERT INTO logs (usuario, fecha) values ('".$_POST['username']."','".date('d/m/y')."'");
  6. echo "Welcome: <strong>".$_POST['username']."</strong><br>";
  7. echo "Continue to the <a href=members.php>members</a> section.";
  8.  

Ahora el tema de los logins... te muestra el código porque no lo encerraste en los <?PHP ?>
Y si lo tienen que ver todos en vez de solo un administrador hay que dejarlo asi como está, y si lo pueden ver todos incluso sin loguearse, solo hay que sacar el if($_SESSION['log] == 1).

Espero que sirva.

ToNy_EsP

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #6 en: Lunes 6 de Julio de 2009, 11:45 »
0
Buenos días chesbor,

Antes que nada darte las gracias  :)  :good: .

Pues mira, elimine del código de administrador (para ver los logins) lo de: if($_SESSION['log] == 1) pero me sale un error a la hora de cargar la página:

Parse error: syntax error, unexpected T_ELSE in /home/a1830998/public_html/admin.php on line 10


Está claro, el error estáa en el Else, por eso eliminé la parte de código de Else. Por cierto, dejando lo de If... me decia que me indentificase (y ya estaba identificado :S). Bueno, elimine lo de If... y lo de Else... y me daba errores en lo de Mysql query... diciendome que se queria conectar pero habia un error.

Lo de Login creo que se quedó bien :D. Creo que el error está en el código donde dice: "usuario" y "fecha", no sé, eso me parece a mi.

Este es el código del login
Código: PHP
  1.  
  2. <?php
  3.  
  4. include("config.php");
  5.  
  6. // connect to the mysql server
  7. $link = mysql_connect($server, $db_user, $db_pass)
  8. or die ("Could not connect to mysql because ".mysql_error());
  9.  
  10. // select the database
  11. mysql_select_db($database)
  12. or die ("Could not select database because ".mysql_error());
  13.  
  14. $match = "select id from $table where username = '".$_POST['username']."'
  15. and password = '".$_POST['password']."';";
  16.  
  17. $qry = mysql_query($match)
  18. or die ("Could not match data because ".mysql_error());
  19. $num_rows = mysql_num_rows($qry);
  20.  
  21. if ($num_rows <= 0) {
  22. echo "Sorry, there is no username or password with: <strong>".$_POST['username']."</strong><br>";
  23. echo "<a href=login.html>Try again</a>";
  24.  
  25.   } else {
  26.  
  27.  mysql_query("INSERT INTO logs (usuario, fecha) values ('".$_POST['username']."','".date('d/m/y')."'");
  28.  echo "Welcome: <strong>".$_POST['username']."</strong><br>";
  29.  echo "Continue to the <a href=members.php>members</a> section.";
  30.  }
  31. $logeo=time();
  32. ?>
  33.  
  34.  


Este es el código de lo de administrar
Código: PHP
  1.  
  2. <?php
  3. {
  4.     $consulta = mysql_query("SELECT * FROM logs ORDER BY usuario");
  5.     echo "<table><tr><td>Usuario</td><td>fecha</td></tr>";
  6.     while($registro = mysql_fetch_array($consulta)) {
  7.        echo "<tr><td>".$registro['usuario']."</td><td>".$registro['fecha']."</td></tr>";
  8.    }
  9.    echo "</table>";
  10.  } else {
  11.     echo "debe loguearse para ver esta información";
  12.  }
  13. ?>
  14.  
  15.  

Este el de registro
Código: PHP
  1.  
  2. <?php
  3.  
  4. include("config.php");
  5.  
  6. // connect to the mysql server
  7. $link = mysql_connect($server, $db_user, $db_pass)
  8. or die ("Could not connect to mysql because ".mysql_error());
  9.  
  10. // select the database
  11. mysql_select_db($database)
  12. or die ("Could not select database because ".mysql_error());
  13.  
  14. // check if the username is taken
  15. $check = "select id from $table where username = '".$_POST['username']."';";
  16. $qry = mysql_query($check)
  17. or die ("Could not match data because ".mysql_error());
  18. $num_rows = mysql_num_rows($qry);
  19. if ($num_rows != 0) {
  20. echo "Sorry, there the username $username is already taken.<br>";
  21. echo "<a href=register.html>Try again</a>";
  22. } else {
  23.  
  24. // insert the data
  25. $insert = mysql_query("insert into $table values ('NULL', '".$_POST['username']."', '".$_POST['password']."', '".$_POST['name1']."', '".$_POST['name2']."', '".$_POST['email']."', '".$_POST['website']."', 'images/avatar.jpg')")
  26. or die("Could not insert data because ".mysql_error());
  27.  
  28. // print a success message
  29. echo "Your user account has been created!<br>";
  30. echo "Now you can <a href=login.html>log in</a>";
  31. }
  32.  
  33. ?>
  34.  
  35.  

Y por si las moscas dejo el de configuracion (contiene los passwords :D)
Código: PHP
  1.  
  2. <?php
  3. // Server to connect to, the default is 'LocalHost' but if it does not work use your IP address for your server
  4. $server = "mysql8.000webhost.com";
  5.  
  6. // The name of the database, when using cPanel you would normally have your user name first like so: username_DATABASE-NAME
  7. $database = "a1830998_db1";
  8.  
  9. // MySQL username to access the database with.  
  10. $db_user = "a1830998_db1";
  11.  
  12. // MySQL password to access the database with.
  13. $db_pass = "mgmhgev3";
  14.  
  15. // The table that this script will set up and use, you can change this but recommended to keep the same so if you require any support we can help faster
  16. $table = "ac_users";
  17. ?>
  18.  
  19.  

Deje todos los códigos  :rolleyes: . Creo que lo unico que falla es el código de "Administrar". Falla con la conexión al servidor.
Por cierto, ¿podrías poner el código de Administración sólo para que lo vean los usuarios registrador (no el admin solo, sino los registrados que hagan Login)? Es que llamé a mi profesor y me dijo que mejor que lo puedan ver solo los registrados logeados.

Muchísimas gracias por tu atención y por ayudarme.

Un saludo

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #7 en: Lunes 6 de Julio de 2009, 18:48 »
0
Para que lo puedan ver todos los usuarios registrados el código sería como estaba antes:

Código: Text
  1. session_start();
  2. if($_SESSION['log'] == 1) {
  3.    $consulta = mysql_query("SELECT * FROM logs ORDER BY usuario");
  4.    echo "<table><tr><td>Usuario</td><td>fecha</td></tr>";
  5.    while($registro = mysql_fetch_array($consulta)) {
  6.       echo "<tr><td>".$registro['usuario']."</td><td>".$registro['fecha']."</td></tr>";
  7.    }
  8.    echo "</table>";
  9. } else {
  10.    echo "debe loguearse para ver esta información";
  11. }
  12.  

ToNy_EsP

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #8 en: Lunes 6 de Julio de 2009, 20:11 »
0
No sirve :S. He puesto ese código, me he logeado y después he entrado a la pagina de Administracion, y me sale que no estoy logeado, pero es mentira porque si lo estoy. Creo que el problema esta en el .PHP del Login :S.

Un saludo y de nuevo, gracias.

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #9 en: Lunes 6 de Julio de 2009, 20:41 »
0
Jejejje si, ni lo leí el de login... el de login tendrías que cambiar esto:
Código: Text
  1.  } else {
  2.  
  3. session_start();
  4. mysql_query("INSERT INTO logs (usuario, fecha) values ('".$_POST['username']."','".date('d/m/y')."'");
  5. echo "Welcome: <strong>".$_POST['username']."</strong><br>";
  6. echo "Continue to the <a href=members.php>members</a> section.";
  7.  

Por esto:

Código: Text
  1.  } else {
  2.  
  3. session_start();
  4. $_SESSION['log'] = 1;
  5. mysql_query("INSERT INTO logs (usuario, fecha) values ('".$_POST['username']."','".date('d/m/y')."'");
  6. echo "Welcome: <strong>".$_POST['username']."</strong><br>";
  7. echo "Continue to the <a href=members.php>members</a> section.";
  8.  

es solo una línea, espero que salga :P.

ToNy_EsP

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #10 en: Martes 7 de Julio de 2009, 13:30 »
0
:lol:  :D  YA no me sale el error de: "No estas logeado" !!

Pero me sale otro error  :brickwall:  :hitcomp:  , mira, te dejo una imágen con el error:

img194.imageshack.us/img194/7579/errorp.png

El error es al intentarse conectar con la base de datos :S. Muchas gracias por tu ayuda :D. Ojalá pueda terminar el proyecto antes de dentro de 2 semanas (es cuando me lo pide, si no lo entrego me suspenden =S  :brickwall: ).

PD: Creo que el error es porque no se especificó un usuario, contraseña y todo eso.

Un saludo  B)

ToNy_EsP

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #11 en: Viernes 10 de Julio de 2009, 23:05 »
0
Por favor, no dejeis este tema de lado, tengo que entregar el Project dentro de 1 semana!  :ouch:

Aun no lo conseguí. Me he estado documentando de información de todo tipo, pero no conseguí nada.


Un saludo

chesbor

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Sistema Login/Registro con almacén de fechas
« Respuesta #12 en: Viernes 10 de Julio de 2009, 23:50 »
0
El usuario 'nobody' no tiene acceso a la base de datos.. poné el usuario correspondiente y la contraseña correspondiente y listo... el usuario puede ser root y sin contraseña... puede ser admin admin, o el que vos hayas elegido en el servidor...no es un problema de php...
Suerte.