Foros del Web » Programando para Internet » PHP »

Problemas con sistema de registro

Estas en el tema de Problemas con sistema de registro en el foro de PHP en Foros del Web. Buenas a todos, por fin he conseguido encontrar un codigo para realizar un sistema de registro que funcione de verdad, lo unico que me da ...
  #1 (permalink)  
Antiguo 12/02/2010, 13:24
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 16 años, 6 meses
Puntos: 2
Problemas con sistema de registro

Buenas a todos, por fin he conseguido encontrar un codigo para realizar un sistema de registro que funcione de verdad, lo unico que me da dos errores que despues de buscar informacion por la red no me aclaro:

El codigo es este:

Código PHP:
<?php
// Configura los datos de tu cuenta
$dbhost='...';
$dbusername='...';
$dbuserpass='...';
$dbname='...';
// Conexi&oacute;n a la base de datos
mysql_connect("localhost""...""..." ) or die(mysql_error());
mysql_select_db("...") or die(mysql_error());

// Preguntaremos si se han enviado ya las variables necesarias
if (isset($_POST["username"] ) ) {
$username $_POST["username"];
$password $_POST["password"];
$cpassword $_POST["cpassword"];
$email $_POST["email"];
// Hay campos en blanco
if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL) {
echo 
"Hay Campos Vacios";
}else{
// &iquest;Coinciden las contrase&ntilde;as?
if($password!=$cpassword) {
echo 
"Las Contrase&ntilde;as No Coinciden";
}else{
// Comprobamos si el nombre de usuario o la cuenta de correo ya exist&iacute;an
$checkuser mysql_query("SELECT username FROM users WHERE username='$username'" ) ;
$username_exist mysql_num_rows($checkuser);

$checkemail mysql_query("SELECT email FROM users WHERE email='$email'" );
$email_exist mysql_num_rows($checkemail);

if (
$email_exist>0|$username_exist>0) {
echo 
"EL Nombre de Usuario o la Cuenta de Correo Estan ya en Uso";
}else{
//Todo parece correcto procedemos con la inserccion
$query "INSERT INTO clientes (username, password, email) VALUES('$username','$password','$email')";
mysql_query($query) or die(mysql_error());
echo 
"El Usuario $username ha Sido Registrado de Manera Satisfactoria. Ahora Puedes Iniciar Session";
}
}
}
}
?>
Bien, el registro se lleva a cabo de forma normal salvo que me da estos errores:

- Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in line 27

- Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in line 30.

Estas lineas pertenecen al codigo para comprobar que el nombre de usuario y el email no estan ya en la base de datos, con lo cual cuando repito o un email o un nombre de usuario me los da de paso igualmente.

Estoy aprendiendo php, asique no seais muy tecnicos jeje... gracias.
  #2 (permalink)  
Antiguo 12/02/2010, 13:29
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 14
Respuesta: Problemas con sistema de registro

Cuando uses mysql_query() acostumbra a depurar la consulta:
Código PHP:
Ver original
  1. $checkuser = mysql_query("SELECT username FROM users WHERE username='$username'" ) or die (mysql_error()) ;
Añade esa última parte y yo diría que te dará algún error.
  #3 (permalink)  
Antiguo 12/02/2010, 13:32
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: Problemas con sistema de registro

Hola,
primero que nada, no es | es || que yo sepa.
El error esta en los sql siguientes:
Código PHP:
$checkemail mysql_query("SELECT email FROM users WHERE email='$email'" );
$checkuser mysql_query("SELECT username FROM users WHERE username='$username'" ) ; 
Estan bien escritos, pero por alguna razon da error, puede que la tabla users no exista, o que no se encontro un usuario con esos datos, para arreglarlo no pongas directamente mysql_fetch_array(), ponlo en un if
Código PHP:
if ($username_exist mysql_fetch_array($checkuser))
{
 
// Y aqui lo continuas

De esta forma lo solucionas.
__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #4 (permalink)  
Antiguo 12/02/2010, 13:36
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Problemas con sistema de registro

Seria muy practico que tu consulta tambien la hagas de una vez.. no verificar por separado el USER y el PASS

Código PHP:
Ver original
  1. $checkuser = mysql_query("SELECT username, email
  2. FROM users
  3. WHERE username='$username' AND email='$email'" )
  4. or die (mysql_error()) ;

Seria mas facil de encontrar errores y demas..

Tambien intenta establecer mayor seguridad en la consulta con un escape de Comillas y demas en para los campos de texto de tus formularios, asi evitas inyecciones
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 12/02/2010, 16:22
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Problemas con sistema de registro

Muchas gracias a los tres, os cuento que el fallo era de lo mas tonto como suele ocurrir, se me habia pasado cambiar el nombre de la tabla users por el de la nueva tabla que habia creado.... aisssss, pues llevaba toda la tarde con el dichoso fallo y mira!

Ryo ya he añadido lo que me dijiste y tambien he cambiado el | por || como comento Kenichi.

loncho_rojas, estoy empezando en este mundillo, asique no se muy bien a que te refieres con eso del Escape de comillas, si me lo pudieras explicar, porque he estado mirando por googe y no encuentra nada que me aclare.

Gracias.

Etiquetas: registro, sitemap
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 00:17.