Autor Tema: Duda con funcion en registro  (Leído 547 veces)

Desconectado Pc-Admin

  • PHPer@ Fijo
  • ***
  • Mensajes: 118
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
Duda con funcion en registro
« en: 07 de Marzo de 2012, 15:27:10 pm »
Buenas amigos, sigo trabajando en el registro de usuarios.
Estoy liado con una función que he hecho que sirve para comprobar si el nombre o email ya existen en la base de datos, pero no me acaba de funcionar.  El problema es que no me devuelve los alertas.
Aquí el código:
Funciones.php
Código: [Seleccionar]
<?php

include("conectar.php");

function 
comprobar($user,$email) {

$comprobar = (mysql_query("SELECT * FROM usuarios WHERE user = &#39;$user&#39;"));

if ($user == $comprobar[&#39;user&#39;]) {
echo &#39;<script language="javascript">alert(El nombre de usuario introducido ya existe)</script>&#39;;

} else {
if ($email == $comprobar[&#39;email&#39;]) {
echo &#39;<script language="javascript">alert(El e-mail introducido ya esta registrado.)</script>&#39;;

} else {
echo "guay";
}
echo "superguay";
}
}
?>

Aqui el crearUsuario.php
Código: [Seleccionar]
<?php

include("conectar.php");
include(
"funciones.php");

//Comprovem que s&#39;ha clicat el botó d&#39;enviar
if (isset($_POST[&#39;enviar&#39;])) {

$user $_POST[&#39;user&#39;];
$email $_POST[&#39;email&#39;];

//Comprovem que no hi hagi cap camp buit

if (!empty($_POST[&#39;user&#39;]) && !empty($_POST[&#39;pass&#39;]) && !empty($_POST[&#39;email&#39;])) { 

//Comprovem que no existeixin les dades.
comprobar($user,$email);

$pass md5($_POST[&#39;pass&#39;]);

//Insertem l&#39;usuari en la base de dades

$query "INSERT INTO usuarios (user, pass, email) VALUES (&#39;$user&#39;,&#39;$pass&#39;,&#39;$email&#39;)";

if(mysql_query($query)) {

echo "Se ha registrado el usuario "."$user"." con exito!";

} else {

echo "No se ha podido registrar el usuario.";
}
} else {
echo "Has d&#39;omplir tots els camps!";


} else { 

?>

<form action="" method="POST"> Usuario: <input type=
"text" name="user"><br> Contraseña: <input type="password"  name=
"pass"><br> E-mail: <input type="text"  name="email"><br> <input type
="submit" name="enviar" value="Enviar"> </form>
<?php ?>
Todo en esta vida, es practicar.

Comunidad PHPeros

Duda con funcion en registro
« en: 07 de Marzo de 2012, 15:27:10 pm »

Desconectado Pc-Admin

  • PHPer@ Fijo
  • ***
  • Mensajes: 118
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
Re:Duda con funcion en registro
« Respuesta #1 en: 09 de Marzo de 2012, 13:31:45 pm »
ayuda? :S
Todo en esta vida, es practicar.

Desconectado Animus

  • PHPero Avanzado
  • ****
  • Mensajes: 273
  • Karma: 1
  • Sexo: Masculino
  • Aprende a aprender, el resto vendrá solo.
    • Ver Perfil
Re:Duda con funcion en registro
« Respuesta #2 en: 09 de Marzo de 2012, 15:12:55 pm »
Primero
Este código:
Código: [Seleccionar]
$comprobar = (mysql_query("SELECT * FROM usuarios WHERE user = '$user'"));Tiene que ser así:
Código: [Seleccionar]
$comprobar = mysql_fetch_assoc(mysql_query("SELECT * FROM usuarios WHERE user = $user", $conexion));
Segunda
No se muy bien si es un error meter tanto html en un echo, pero yo para meter html masivo en cualquier php cierro y reabro el php así:

Código: [Seleccionar]
if(4 < 5){
?>
<b>Aquí puedes meter el html que quieras sin problemas
<?php
}else{
?>

Lo mismo
<?php
}

Tercera
En vez de utilizar MD5 para la encriptación recomiendo SHA512, utiliza la función hash(sha512, $var);

Cuarta
En vez de hacer isset($_POST['enviar']); sería mejor ésto:
Código: [Seleccionar]
<?php 
if($_POST[&#39;enviar&#39;]){
//contenido a hacer al clickear al botón
}
?>


-- El resto parece estar bien y PD:

Catalá?
xD, saps parlar el catalá, jo visc a catalunya pero no m'agrada gaire, si puc preguntar per que vols fer el codi en catalá? xDD
« Última modificación: 09 de Marzo de 2012, 15:16:15 pm por Animus »


La red social de tus sueños.


Desconectado -Pituko-

  • PHPero Experto
  • *****
  • Mensajes: 954
  • Karma: 20
  • Sexo: Masculino
  • ¡Hala Madrid!
    • Ver Perfil
Re:Duda con funcion en registro
« Respuesta #3 en: 09 de Marzo de 2012, 17:29:53 pm »
Primero
Este código:
Código: [Seleccionar]
$comprobar = (mysql_query("SELECT * FROM usuarios WHERE user = '$user'"));Tiene que ser así:
Código: [Seleccionar]
$comprobar = mysql_fetch_assoc(mysql_query("SELECT * FROM usuarios WHERE user = $user", $conexion));
Segunda
No se muy bien si es un error meter tanto html en un echo, pero yo para meter html masivo en cualquier php cierro y reabro el php así:

Código: [Seleccionar]
if(4 < 5){
?>
<b>Aquí puedes meter el html que quieras sin problemas
<?php
}else{
?>

Lo mismo
<?php
}

Tercera
En vez de utilizar MD5 para la encriptación recomiendo SHA512, utiliza la función hash(sha512, $var);

Cuarta
En vez de hacer isset($_POST['enviar']); sería mejor ésto:
Código: [Seleccionar]
<?php 
if($_POST[&#39;enviar&#39;]){
//contenido a hacer al clickear al botón
}
?>


-- El resto parece estar bien y PD:

Catalá?
xD, saps parlar el catalá, jo visc a catalunya pero no m'agrada gaire, si puc preguntar per que vols fer el codi en catalá? xDD
Estás pésimamente mal en lo del isset(), md5 es suficiente y exacto: el problema está en el mysql_fetch_Assoc que no introdujo.
Te recomiendo para ahorrar código hacer esto:

function comprobar($user$email) {
$query mysql_query("SELECT * FROM usuarios WHERE user = &#39;".$user."&#39; OR email = &#39;".$email."&#39;");
if(
mysql_num_rows($query) == 0) {
return 
false;
} else {
return 
true;
}
}

Y al utilizar comprobar() utilízalo como:

if(comprobar($user$email)) {
echo 
"El usuario o el mail ya está registrado en nuestra base de datos"//Yo no sé catalán así que reemplaza este mensaje por el adecuado
} else {
//código de registro...
}


PD: Animus, estás pésimamente mal equivocado porque el isset() verifica que exista y no usar isset comprobaría que es "true", es decir, asume que ya existe la variable. Lo que el quiere saber es si se ha enviado el formulario por lo tanto verificar que exista la variable es lo adecuado.

Suerte ;).
« Última modificación: 09 de Marzo de 2012, 17:33:22 pm por -Pituko- »

Desconectado Animus

  • PHPero Avanzado
  • ****
  • Mensajes: 273
  • Karma: 1
  • Sexo: Masculino
  • Aprende a aprender, el resto vendrá solo.
    • Ver Perfil
Re:Duda con funcion en registro
« Respuesta #4 en: 09 de Marzo de 2012, 17:37:11 pm »
Si, pero es mejor SHA512, y no hace falta poner isset();, funciona perfectamente sin.


La red social de tus sueños.


Desconectado -Pituko-

  • PHPero Experto
  • *****
  • Mensajes: 954
  • Karma: 20
  • Sexo: Masculino
  • ¡Hala Madrid!
    • Ver Perfil
Re:Duda con funcion en registro
« Respuesta #5 en: 09 de Marzo de 2012, 19:28:28 pm »
Si, pero es mejor SHA512, y no hace falta poner isset();, funciona perfectamente sin.
No funciona igual (te tira errores tipo "la variable tal no está definida"), y teoricamente estaría incorrecto; lo sé porque a mí me lo recomendaron (además se redujeron mis errores) y aprendí su funcionamiento, no hay que confundir usos. Además, con SHA512 se tarda más en cargar (microsegundos pero cuenta) que el md5 y de por sí para decriptar una contraseña en md5 te llevas mucho días...

Yo puse lo recomendado y si no lo sigue, es su problema.

Desconectado Animus

  • PHPero Avanzado
  • ****
  • Mensajes: 273
  • Karma: 1
  • Sexo: Masculino
  • Aprende a aprender, el resto vendrá solo.
    • Ver Perfil
Re:Duda con funcion en registro
« Respuesta #6 en: 09 de Marzo de 2012, 19:58:37 pm »
Pues gracias, la seguiré por seguro, (no te has enfadado no XD) ..

Pues pensaba que era mejor sin isset(); ^^


La red social de tus sueños.


Desconectado Pc-Admin

  • PHPer@ Fijo
  • ***
  • Mensajes: 118
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
Re:Duda con funcion en registro
« Respuesta #7 en: 10 de Marzo de 2012, 12:36:38 pm »
Muchas gracias cracks! Eso es lo que quería =)
Lo hago en catalán porque es el proyecto final y como la programación que hemos hecho ha sido en lenguajes sistema, mi proyecto se basa en aprender lenguaje web y crear una especie de bloque, tengo un año para aprender / hacer el proyecto, os seguiré consultando!
Gracias
Todo en esta vida, es practicar.

Desconectado Animus

  • PHPero Avanzado
  • ****
  • Mensajes: 273
  • Karma: 1
  • Sexo: Masculino
  • Aprende a aprender, el resto vendrá solo.
    • Ver Perfil
Re:Duda con funcion en registro
« Respuesta #8 en: 10 de Marzo de 2012, 14:29:54 pm »
De nada hombre :)


La red social de tus sueños.