elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ayuda con conexión a base de datos!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con conexión a base de datos!  (Leído 2,353 veces)
kodeone

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Ayuda con conexión a base de datos!
« en: 24 Febrero 2011, 14:38 pm »

Buenas gente!

Tengo un problema al que no le encuentro solución ya que creo que el código lo tengo bien. Estoy haciendo una mini-página para probar y bueno, he hecho un form para registrarse y otro para iniciar sessión. La cosa está en que el script que mira si el usuario está en la base de datos para iniciar sessión se queda calado y me tira un error...

Este es el código de inicio de sessión:
Código
  1. <html>
  2. <title>Iniciar sessión</title>
  3. <head>
  4. <link rel="STYLESHEET" type="text/css" href="estil.css">
  5. <script>
  6. function validar(){
  7. if ((document.f1.n1.value == "") || (document.f1.p1.value == "")){
  8. alert('Campos vacíos');
  9. ok=false;
  10. }else{
  11. ok=true;
  12. }
  13. return ok;
  14. }
  15. </script>
  16. </head>
  17. <body bgcolor="black">
  18. <form name="f1" method="POST" onsubmit="return validar()" action="validar.php">
  19. <div id="d1" name="d1">
  20. <label for="Usuario">Usuario: </label><br>
  21. <input type="text" name="n1" value=""><br><br>
  22. <label for="cont">Contraseña: </label><br>
  23. <input type="password" name="p1" value=""><br>
  24. </div>
  25. <input type="submit" class="sub" value="iniciar sessión" name="s1"><br>
  26. <?php
  27. echo  "<center style='color:red'>$cont</center>";
  28. ?>
  29. </form>
  30. <form name="f2" method="GET" action="registrar.php">
  31. <input type="submit" class="sub" value="Regístrate" name="s2">
  32. </form>
  33. </body>
  34. </html>
  35.  

Este es el de conectar:

Código
  1. <?php
  2. $nom = $_POST['n1'];
  3. $con = $_POST['p1'];
  4. $cont= "";
  5. $ok=false;
  6.  
  7. $connexio = mysql_connect("localhost","root");
  8. mysql_select_db("login",$connexio);
  9.  
  10. $resultat=mysql_query("SELECT * FROM usuaris",$connexio);
  11. if($registre=mysql_fetch_assoc($resultat)){
  12.  
  13.  
  14. do{
  15. if(($nom == $registre['nombre']) && ($con == $registre['pass'])){ //si lo q hemos introducid
  16. $ok=true;  //esta n la bd salimos dl bucle
  17. }else{
  18. $registre=mysql_fetch_assoc($resultat);
  19. }
  20. }while(($registre!=false)||($ok!=true));
  21.  
  22. //Salimos del bucle y miramos si el usuario existe o no.
  23.  
  24. if($ok==true){
  25. header("location:pagina_principal.php");
  26. }else{
  27. $cont = "Usuario incorrecto";
  28. include 'primerap.php';
  29. }
  30.  
  31. }else{
  32. echo "ERROR AL SELECCIONAR BASE DE DATOS";
  33. }
  34. ?><?php
  35. $nom = $_POST['n1'];
  36. $con = $_POST['p1'];
  37. $cont= "";
  38. $ok=false;
  39.  
  40. $connexio = mysql_connect("localhost","root");
  41. mysql_select_db("login",$connexio);
  42.  
  43. $resultat=mysql_query("SELECT * FROM usuaris",$connexio);
  44. if($registre=mysql_fetch_assoc($resultat)){
  45.  
  46.  
  47. do{
  48. if(($nom == $registre['nombre']) && ($con == $registre['pass'])){ //si lo q hemos introducid
  49. $ok=true;  //esta n la bd salimos dl bucle
  50. }else{
  51. $registre=mysql_fetch_assoc($resultat);
  52. }
  53. }while(($registre!=false)||($ok!=true));
  54.  
  55. //Salimos del bucle y miramos si el usuario existe o no.
  56.  
  57. if($ok==true){
  58. header("location:pagina_principal.php");
  59. }else{
  60. $cont = "Usuario incorrecto";
  61. include 'primerap.php';
  62. }
  63.  
  64. }else{
  65. echo "ERROR AL SELECCIONAR BASE DE DATOS";
  66. }
  67. ?>
  68.  

Ni idea de que pasa -.-. El error que me da es este:

Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\validar.php on line 16

La linea 16 es donde ok=true, dentro del if. Pero también hay veces que se queda calado nada más empezar el if.

¿Alguien sabe que pasa?

Un saludo y gracias por adelantado!


En línea

bomba1990


Desconectado Desconectado

Mensajes: 395



Ver Perfil WWW
Re: Ayuda con conexión a base de datos!
« Respuesta #1 en: 24 Febrero 2011, 17:13 pm »

el error que te da se debe a que php tiene un tiempo maximo de ejecucion, y tu script en esa linea a exedido ese tiempo maximo de ejecucion. te recomiendo que en la sentencia sql pongas:

"select * from usuarios where nombre= '".$registre['nombre']."'"

para que haci te de como salida un solo usuario y no vayas comprobando uno a uno. otra cosa ese script asi es vulnerable a que escriba directamente la direccion de la pagina y entra porque no hay ninguna comprobacion


En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
kodeone

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Ayuda con conexión a base de datos!
« Respuesta #2 en: 24 Febrero 2011, 17:34 pm »

Con eso no funciona...Me sigue tirando error. Dudo que se colapse buscando porqué solo tengo 2 usuarios en la base de datos.

Un saludo.
En línea

kodeone

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Ayuda con conexión a base de datos!
« Respuesta #3 en: 24 Febrero 2011, 17:38 pm »

Lo acabo de solucionar!

He quitado el bucle y con el SELECT*FROM usarios WHERE nombre=$nom luego lo compruebo con un if y ya tira xD.

Código
  1. <?php
  2. $nom = $_POST['n1'];
  3. $con = $_POST['p1'];
  4. $cont= "";
  5. $ok=false;
  6.  
  7. $connexio = mysql_connect("localhost","root");
  8. mysql_select_db("login",$connexio);
  9. $resultat = mysql_query("SELECT * FROM usuaris where nombre = '$nom'",$connexio);
  10.  
  11. if($registre=mysql_fetch_assoc($resultat)){//Nos metemos en el array
  12.  
  13. if(($nom == $registre["nombre"]) && ($con == $registre["pass"])){ //Miramos que el nombre coincida con l pass
  14. $ok=true;  
  15. }
  16.  
  17.  
  18. if($ok==true){
  19. header("location:pagina_principal.php");
  20. }else{
  21. $cont = "Contraseña incorrecta";
  22. include 'primerap.php';
  23. }
  24.  
  25. }else{
  26. //Si a la hora de hacer el login el nombre no existe en la base de datos que nos redireccione.
  27. $cont = "Usuario incorrecto";
  28. include 'primerap.php';
  29. }
  30. ?>
  31.  



Un saludo y gracias!
« Última modificación: 24 Febrero 2011, 17:43 pm por kodeone » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con conexion con Base de datos
Programación Visual Basic
Sakoda 1 1,539 Último mensaje 13 Septiembre 2005, 00:46 am
por Slasher-K
ayuda en conexion a base de datos con access
Java
mojittoo 1 2,292 Último mensaje 16 Junio 2009, 03:40 am
por h0oke
Ayuda con conexión de base de datos !Urgente!
.NET (C#, VB.NET, ASP)
Brian1511 9 6,247 Último mensaje 28 Octubre 2012, 06:34 am
por .::IT::.
Ayuda en conexion a base de datos con java
Java
Dra25 5 2,419 Último mensaje 17 Abril 2015, 02:24 am
por Dra25
AYUDA error de conexion a base de datos
Java
silfer_1908 0 1,676 Último mensaje 9 Noviembre 2019, 01:27 am
por silfer_1908
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines