Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

ayuda con registro de usuarios en php

  • Autor de tema Autor de tema DDEAD
  • Fecha de inicio Fecha de inicio

DDEAD

Bovino adolescente
Desde
13 Sep 2008
Mensajes
50
hola necesito que me ayuden lo que pasa es que estoy asiendo una pagina web sensillita digamos como practicapero estoy asiendo el registro de usuarios consegui un hosting gratuito este es el hosting http://members.000webhost.com/
despues cree mi base de datos
en sql
con el siguiente codigo:
HTML:
                              CREATE table usuarios (
id TINYINT(4) AUTO_INCREMENT,
nombre TEXT,
apellidos TEXT,
login VARCHAR(40),
password VARCHAR(20),
email TEXT,
UNIQUE (id) );
se creeo bien segun el phpMyAdmin despues cree el formulario es el siguiente
HTML:
                               <form action="crea_user.php" method="POST">
Login: <input type="text" name="login"><br>
Password: <input type="password" name="pass1"><br>
Repite Password: <input type="password" name="pass2"><br>
Nombre: <input type="text" name="nombre"><br>
Apellidos: <input type="text" name="apellidos"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit" name="Crear">
</form>
despues cree el archivo php
HTML:
                               <?
$server="localhost"; 
$database="bd"; 
$dbpass="password"; 
$dbuser="user"; 

$query="SELECT * FROM usuarios WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)){
echo "El usuario ya existe en la BD";
} else {
mysql_free_result($result);

if($pass1!=$pass2) {
echo "Los passwords deben coincidir<br>";
echo 'Clica <a href="form.php">aquí</a> para volver al formulario';
} else {
$pass1=crypt($pass2, "semilla"); 
 

$query="INSERT INTO usuarios (login, nombre, apellidos, password, email) VALUES ('$login','$nombre','$apellidos','$pass1','$email')";
 
$result=mysql_db_query($database,$query,$link);
if(mysql_affected_rows($link)){
echo "Usuario introducido correctamente";
} else {
echo "Error introduciendo el usuario";
} /* Cierre del else */
} /* Cierre del else que corresponde a if(mysql_affected_rows.....) */
} /* Cierre del else que corresponde a if(mysql_num_rows...) */
?>
logicamento puse los datos correspondientes de mi base de datos en la parte de arriba
pero al momento de probar mi registro de usuarios desde el formulario .
el primer usuario que introduje marca que el usuario se introdujo correctamente
vuelvo a registrar otro usuario diferente y me dice que el usuario ya existe en la base de datos
de ahy me boy a mi bace de datos y veo que si se regitra el primer usuario pero se registra mal como se muestra en la siguiente imagen
en la PARTE DONDE ESTAN LOS REGISTRO SI SE DAN CUENTA DONDE ESTAN LAS TABLAS DE USUARIOS ETC. SOLO SE REGISTRA UN PASSWORD QUE NO TIENE SENTIDO ESPERO QUE ME AYUDEN A ENCONTRAR EL ERROR QUE TENGO YA ME DESESPERE
155004_1362421960877_1841434782_690748_3568797_n.jpg
 
Hola amigo, el problema quizá esta en esta parte del código:


$query="SELECT * FROM usuarios WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);

Porque haces primero la consulta, debe de ser primero la conexión.


Prueba con el siguiente código, y me avisas.

Código:
<?php

$server="localhost"; 
$database="bd"; 
$dbpass="password"; 
$dbuser="user"; 

$link=mysql_connect($server,$dbuser,$dbpass);
$query="SELECT * FROM usuarios WHERE login='$login'";


$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)){
echo "El usuario ya existe en la BD";
} else {
mysql_free_result($result);

if($pass1!=$pass2) {
echo "Los passwords deben coincidir<br>";
echo 'Clica <a href="form.php">aquí</a> para volver al formulario';
} else {
$pass1=crypt($pass2, "semilla"); 
 

$query="INSERT INTO usuarios (login, nombre, apellidos, password, email) VALUES ('$login','$nombre','$apellidos','$pass1','$email')";
 
$result=mysql_db_query($database,$query,$link);
if(mysql_affected_rows($link)){
echo "Usuario introducido correctamente";
} else {
echo "Error introduciendo el usuario";
} /* Cierre del else */
} /* Cierre del else que corresponde a if(mysql_affected_rows.....) */
} /* Cierre del else que corresponde a if(mysql_num_rows...) */
?>
 
Revisa la siguiente linea:

mysql_affected_rows($link))

Ya que la función mysql_affected_rows devuelve el número de filas afectadas por el último insert, delete o update, pero en este caso, el parámetro que le mandas debería ser $result que es el que contiene la operación de la inserción, no $link. Prueba cambiarlo así:

mysql_affected_rows($result))

Además, el código del tutorial en el que te basaste ya esta algo viejo, funciones como mysql_db_query es obsoleta, en su lugar se utiliza mysql_query. Por cierto, buscando en la web encontré que ese ejemplo contiene unos que otros problemas. Trata de buscar un ejemplo mas actualizado para aprender, o trata de hacerlo a pie, quizá te lleve mas tiempo pero aprenderás mas.

Hola amigo, el problema quizá esta en esta parte del código:


$query="SELECT * FROM usuarios WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);

Porque haces primero la consulta, debe de ser primero la conexión.

Ahí no se ha ejecutado la consulta. Se ejecuta hasta $result=mysql_db_query($database,$query,$link);

Espero haberte ayudado.
Saludos
 
en tu codigo no veo donde tratas la información del formulario, por si acaso, debes usar en la pagina donde recibes los datos

$nombre = $_POST['nombre']
$clave = $_POST['clave']

el arreglo de la variable POST es porque así ilo definiste en tu formulario, y con esa variable se obtienen tus valores. Te recomiendo que leas sobre las varibles superglobales
 
Volver
Arriba