Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Resource id #6, cómo lo soluciono?

Estas en el tema de Resource id #6, cómo lo soluciono? en el foro de PHP en Foros del Web. Buenas gente, Antes de nada, comentar que soy novato. Ya llevo algun tiempo con mi primera web php y me estoy volviendo loco con un ...
  #1 (permalink)  
Antiguo 14/06/2011, 04:01
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Pregunta Resource id #6, cómo lo soluciono?

Buenas gente,

Antes de nada, comentar que soy novato. Ya llevo algun tiempo con mi primera web php y me estoy volviendo loco con un error que antes no tenia.

Resulta que estaba con el tema de formulario php y a la hora de tratar el campo "email" dejo de funcionarme a partir del momento en que le añadi una comprobación. A partir de esta comprobación paso de ponerme lo que le añadira al campo email a ponerme "Resource id #6".
Mi intención es que si detecta que el campo email tiene espacios en blanco que los elimine para poderlos añadir y si ve que esta en blanco, directamente que vuelva a cargar la pagina del formulario. Haber si veis algo que se me haya pasado. El código es el siguiente:
Código PHP:
Ver original
  1. <?
  2. include('config.php');
  3. ?>
  4. <!--incluimos el config.php que contiene los datos de la conexión a la db-->
  5. <HTML>
  6. <HEAD><TITLE>Registre</TITLE>
  7. </HEAD>
  8. <BODY>
  9. <?php
  10.  
  11. $user = $_POST['nick'];
  12. $user = mysql_real_escape_string($user);
  13. $user_noespais=trim($user); //Como la vas a ingresar a mysql es mejor escapar la variable
  14.  
  15. $pass = $_POST['pass'];
  16. $pass = mysql_real_escape_string($pass);
  17. $pass_noespais=trim($pass);
  18.  
  19. $pass1 = $_POST['pass1'];
  20. $pass1 = mysql_real_escape_string($pass1);
  21. $pass1_noespais=trim($pass1);
  22.  
  23. $email = $_POST['email'];
  24. $email = mysql_real_escape_string($email);
  25. $email_noespais=trim($email);
  26. $email_sin_espacios= str_replace(" ","",$email);
  27.  
  28.  
  29.  
  30. $fecha = date("Y/m/d");
  31. $fecha = mysql_real_escape_string($fecha);
  32.  
  33. if (!empty($_POST['level']))
  34. {
  35.    $level = $_POST['level'];
  36.    $level = mysql_real_escape_string($level);
  37.    $level_noespais=trim($level);
  38. }
  39. else
  40. {
  41. $level = 2; //valor por defecto si $_POST no tiene asignado ningun valor a level
  42. }
  43. $rollo = $_POST['rollo'];
  44. $rollo = mysql_real_escape_string($rollo);
  45.  
  46. if(empty($_POST['nick']) || empty($_POST['pass']) || empty($_POST['pass1']) || empty($_POST['email']))
  47.    {
  48. Header("Location: reg.php"); //enviamos al form de registro que esta en reg.php
  49.    }
  50.    else
  51.    {
  52.  
  53.       //Comprobamos que la pass y pass1 son iguales, sino, volvemos a reg.php
  54.       if($_POST['pass'] != $_POST['pass1'])
  55.       {
  56.       Header("Location: reg.php");  //Como deberia hacerlo para que me saliera al lado del formulario en vez de volver a ir are.g
  57.       echo 'Las passwords no son iguales';
  58.       }
  59.       else
  60.       {
  61.          //comprobamos que el usuario no existe en la db
  62.          $usuarios=mysql_query("SELECT nick FROM users WHERE nick='$user' ");
  63.      
  64.              if(mysql_num_rows($usuarios)>0) //Comprobem que si està registrat o no  
  65.              {
  66.              echo 'El usuario ya esta registrado';
  67.              mysql_free_result($usuarios); //liberamos la memoria del query a la db
  68.              }
  69.          else
  70.          {
  71.             $email=mysql_query("SELECT email FROM users WHERE email='$email' ");
  72.      
  73.              if(mysql_num_rows($email)>0)
  74.              {
  75.              echo 'El email ya esta registrado';
  76.              mysql_free_result($email); //liberamos la memoria del query a la db
  77.              }
  78.              else
  79.              {
  80.                      
  81.                if (mysql_query("INSERT INTO users (nick,pass,pass1,email,fecha,level,rollo) values ('" .$user . "','" .$pass . "','" .$pass1 . "','" .$email . "','" .$fecha . "','" .$level . "','" .$rollo . "') "))
  82.                {
  83.                echo 'Usuario registrado';
  84.                }
  85.                else
  86.                {
  87.                   echo 'Ocurrió un error, MySQL ha dicho: '.mysql_error();
  88.                }
  89.              }
  90.          }
  91.  
  92.       }
  93.    }
  94.  
  95.  
  96.  
  97. ?>
  98.  
  99.            
  100. </BODY>
  101. </HTML>

Cómo lo soluciono? :S

Muchas grácias.

Saludos.
  #2 (permalink)  
Antiguo 14/06/2011, 04:20
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: Resource id #6, cómo lo soluciono?

Al darle un vistazo rápido, estás sobreescribiendo el contenido de la variable $email al hacer ésta consulta:

Código PHP:
Ver original
  1. $email=mysql_query("SELECT email FROM users WHERE email='$email' ");

Así que luego cuando intentas insertarlo en ésta linea:

Código PHP:
Ver original
  1. if (mysql_query("INSERT INTO users (nick,pass,pass1,email,fecha,level,rollo) values ('" .$user . "','" .$pass . "','" .$pass1 . "','" .$email . "','" .$fecha . "','" .$level . "','" .$rollo . "') "))

Ya no contiene "[email protected]" sino que contrendría un resultado de una consulta a la base de datos.

Prueba cambiando el nombre de la variable con la que haces la consulta.
__________________
Personaliza tu blog, crea, comparte y exporta tus tarjetas de visita
  #3 (permalink)  
Antiguo 14/06/2011, 04:49
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Resource id #6, cómo lo soluciono?

¿Te refieres a que cambie por ejemplo: "$email" por "$correo"?

Si la respuesta es que si, ¿no persistirá el problema? Me refiero a que, si solo cambio el nombre de la variable no seguira sobreescribiendose?

Grácias y sorry por las preguntas tontas jeje.

Saludos.
  #4 (permalink)  
Antiguo 14/06/2011, 06:39
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: Resource id #6, cómo lo soluciono?

Claro, pero cambia solo el nombre de la variable donde haces la consulta, no de donde tienes guardado el email :)

Código PHP:
Ver original
  1. $email = "[email protected]";
  2. $check_email=mysql_query("SELECT email FROM users WHERE email='$email' ");
__________________
Personaliza tu blog, crea, comparte y exporta tus tarjetas de visita
  #5 (permalink)  
Antiguo 15/06/2011, 03:32
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Resource id #6, cómo lo soluciono?

Bua! Por fin funciona! Grácias Annoying, mira que era una tonteria. Grácias por los consejos y la nueva lección :D.

Una cosa más, hace poco me pasaron un codigo para comprobación de email tambien, es el siguiente:
Código PHP:
Ver original
  1. function verifica_email($email){        
  2.     $reg="^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.([a-zA-Z]{2,6})$";
  3.     return (ereg($reg, $email));

La traducción literal dime si seria la siguiente:
"Antes del @ pueden haber hasta 2 palabras, las 2 en minusculas, mayusculas, numeros o "_", despues del @ viene 1 palabra con los mismos atributos y a partir de aqui se me escapa :S. La cosa es, esta comprobación es valida para : [email protected], [email protected]... Para que me es valida esta comprobación?


Grácias.

Saludos ;)

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:08.