Foros del Web » Programando para Internet » PHP »

Usuarios PHP y Mysql

Estas en el tema de Usuarios PHP y Mysql en el foro de PHP en Foros del Web. Buenas, Fui armando para el registro de usuarios en Mysql a travez de un formulario de html un codigo php. Mi problema esta en el ...
  #1 (permalink)  
Antiguo 15/01/2010, 02:49
Avatar de juaco14  
Fecha de Ingreso: mayo-2009
Mensajes: 185
Antigüedad: 14 años, 11 meses
Puntos: 1
Exclamación Usuarios PHP y Mysql

Buenas,
Fui armando para el registro de usuarios en Mysql a travez de un formulario de html un codigo php.
Mi problema esta en el codigo php.
Soy nuevo en esto y no puedo encontrar cual es mi error.
El codigo es este:

Código PHP:
<html>

<head>
  <title>Registro</title>

</head>
<body text="#000000" background="reelblue.jpg">

<?php

//conexion
$db mysql_connect("xxxx""xxxx""xxxxx"//conecto
or die ("No pude conectarme al servidor");
mysql_select_db("xxxxx"$db)                //selecciono
or die("No puedo acceder a la base de datos");


//declaro
$login $_POST['login'];   
$password $_POST['password'];   
$nombre $_POST['nombre'];   
$apellido $_POST['apellido'];   
$email $_POST['email'];   
$cedula $_POST['cedula'];   
$direccion $_POST['direccion'];   
$telefono $_POST['telefono'];   

function 
quitar($mensaje)
{
$mensaje str_replace("<","&lt;",$mensaje);
$mensaje str_replace(">","&gt;",$mensaje);
$mensaje str_replace("\'","'",$mensaje);
$mensaje str_replace('\"',"&quot;",$mensaje);
$mensaje str_replace("\\\\","\\",$mensaje);
return 
$mensaje;
}
if 
$login != "" && $password != "")
{
$sql "SELECT id FROM usuarios WHERE login=".quitar($HTTP_POST_VARS["login"])."";
$result mysql_query($sql);
if(
$row mysql_fetch_array($result))
{
echo 
"Error, ID escogido por otro usuario";
}
else
{
$sql "INSERT INTO usuarios (login, password, nombre, apellido, email, cedula, direccion, telefono) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["login"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["apellido"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["cedula"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["direccion"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["telefono"])."'";
$sql .= ")";
mysql_query($sql);
echo 
"Registro exitoso!";
}
mysql_free_result($result);
}
else
{
echo 
"Debe llenar como minimo los campos de email y password";
}
mysql_close();
?> 

</body>

</html>

Espero que me puedan ayudar, ya que es un trabajo que estoy haciendo.
Muchas gracias,
Joaquin.
  #2 (permalink)  
Antiguo 15/01/2010, 06:17
Avatar de blekia  
Fecha de Ingreso: julio-2009
Mensajes: 204
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: Usuarios PHP y Mysql

cual es el error que te da?
  #3 (permalink)  
Antiguo 15/01/2010, 08:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Usuarios PHP y Mysql

Traslado el tema al foro de PHP.

Así rápidamente lo que puedo sugerir es que uses $_POST en lugar de $HTTP_POST_VARS, y en lugar de la función quitar() que tienes definida usa mysql_real_escape_string para preparar la cadena, y para quitar los caracteres HTML especiales usa htmlspecialchars.

Además, imprime mysql_error para ver si las consultas producen algún error.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 15/01/2010, 10:08
Avatar de juaco14  
Fecha de Ingreso: mayo-2009
Mensajes: 185
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Usuarios PHP y Mysql

No me da ningun error, simplemente al rellenar el formulario y enviarlo me salta a una paguina en blanco y no me carga los datos en la BD.
No entiendo donde puede estar mi error, lo hice 20 veces de 20 formas distintas y sin conseguir resultados.
Si conocen otros sistemas de usuarios por favor comuniquenme.
Gracias!


Modifico:

Aca el codigo arreglado, sigue sin funcionar:

Código PHP:
<html>

<head>
  <title>Registro</title>

</head>
<body text="#000000" background="reelblue.jpg">

<?php

//conexion



//declaro
$login $_POST['login'];   
$password $_POST['password'];   
$nombre $_POST['nombre'];   
$apellido $_POST['apellido'];   
$email $_POST['email'];   
$cedula $_POST['cedula'];   
$direccion $_POST['direccion'];   
$telefono $_POST['telefono'];   

function 
quitar($mensaje)
{
$mensaje str_replace("<","&lt;",$mensaje);
$mensaje str_replace(">","&gt;",$mensaje);
$mensaje str_replace("\'","'",$mensaje);
$mensaje str_replace('\"',"&quot;",$mensaje);
$mensaje str_replace("\\\\","\\",$mensaje);
return 
$mensaje;
}
if 
$_POST['login'] != "" && $_POST['password'] != "")
{
$sql "SELECT id FROM usuarios WHERE login="htmlspecialchars($_POST['login'])"";
$result mysql_query($sql);
if(
$row mysql_fetch_array($result))
{
echo 
"Error, ID escogido por otro usuario";
}
else
{
$sql "INSERT INTO usuarios (login, password, nombre, apellido, email, cedula, direccion, telefono) VALUES (";
$sql .= "'"htmlspecialchars($_POST['login'])"'";
$sql .= ",'"htmlspecialchars($_POST['password'])"'";
$sql .= ",'"htmlspecialchars($_POST['nombre'])"'";
$sql .= ",'"htmlspecialchars($_POST['apellido'])."'";
$sql .= ",'"htmlspecialchars($_POST['email'])"'";
$sql .= ",'"htmlspecialchars($_POST['cedula'])"'";
$sql .= ",'"htmlspecialchars($_POST['direccion'])"'";
$sql .= ",'"htmlspecialchars($_POST['telefono'])"'";
$sql .= ")";
mysql_query($sql);
echo 
"Registro exitoso!";
}
mysql_free_result($result);
mysql_error
}
else
{
echo 
"Debe llenar como minimo los campos de email y password";
}
mysql_close();
?> 
</body>

</html>

Última edición por juaco14; 15/01/2010 a las 10:49
  #5 (permalink)  
Antiguo 15/01/2010, 10:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Usuarios PHP y Mysql

Esa no es la forma de usar mysql_error, mysql_error es una función.
Revisa el manual: mysql_error

Por ejemplo:
Código PHP:
Ver original
  1. if (!mysql_query($sql)) {
  2.     exit(mysql_error());
  3. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 15/01/2010, 10:37
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: Usuarios PHP y Mysql

Tienes un error en esta línea:

Código PHP:
$sql "SELECT id FROM usuarios WHERE login="htmlspecialchars($_POST['login'])""
Las cadenas se unen por medio de puntos:

Código PHP:
$sql "SELECT id FROM usuarios WHERE login=".htmlspecialchars($_POST['login']).""
Y como te dijeron, es mejor usar mysql_real_espape_string pues esta función te modificará solamente aquellos caracteres peligrosos para tu consulta tomando en cuenta la codificación de caracteres de tu BD, pues existe un ataque con UTF8 mal formado que puede llegar a saltar a htmlspecialchars:

Código PHP:
$sql "SELECT id FROM usuarios WHERE login=".mysql_real_espape_string($_POST['login'],$db).""
  #7 (permalink)  
Antiguo 15/01/2010, 10:44
Avatar de juaco14  
Fecha de Ingreso: mayo-2009
Mensajes: 185
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Usuarios PHP y Mysql

Voy a pprobar asi, MUCHAS GRACIAS!!

Sigue sin funcionar y no encuentro la manera de identificar mi error!!

Código PHP:
<html>

<head>
  <title>Registro</title>

</head>
<body text="#000000" background="reelblue.jpg">

<?php

//conexion
$db mysql_connect("xxxx""xxxx""xxxx"//conecto
or die ("No pude conectarme al servidor");
mysql_select_db("xxxx"$db)                //selecciono
or die("No puedo acceder a la base de datos");


//declaro
$login $_POST['login'];   
$password $_POST['password'];   
$nombre $_POST['nombre'];   
$apellido $_POST['apellido'];   
$email $_POST['email'];   
$cedula $_POST['cedula'];   
$direccion $_POST['direccion'];   
$telefono $_POST['telefono'];   

function 
quitar($mensaje)
{
$mensaje str_replace("<","&lt;",$mensaje);
$mensaje str_replace(">","&gt;",$mensaje);
$mensaje str_replace("\'","'",$mensaje);
$mensaje str_replace('\"',"&quot;",$mensaje);
$mensaje str_replace("\\\\","\\",$mensaje);
return 
$mensaje;
}
if 
$_POST['login'] != "" && $_POST['password'] != "")
{
$sql "SELECT id FROM usuarios WHERE login=".mysql_real_espape_string($_POST['login'],$db)."";
$result mysql_query($sql);
if(
$row mysql_fetch_array($result))
{
echo 
"Error, ID escogido por otro usuario";
}
else
{
$sql "INSERT INTO usuarios (login, password, nombre, apellido, email, cedula, direccion, telefono) VALUES (";
$sql .= "'".mysql_real_espape_string($_POST['login'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['password'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['nombre'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['apellido'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['email'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['cedula'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['direccion'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['telefono'],$db)."'";
$sql .= ")";
mysql_query($sql);
echo 
"Registro exitoso!";
}
mysql_free_result($result);
}
else
{
echo 
"Debe llenar como minimo los campos de email y password";
}
mysql_close();
?> 
</body>

</html>

Muchas gracias!

Última edición por juaco14; 15/01/2010 a las 10:55
  #8 (permalink)  
Antiguo 15/01/2010, 13:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Usuarios PHP y Mysql

Aún no imprimes el valor de mysql_error() como te indiqué.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 15/01/2010, 18:48
Avatar de juaco14  
Fecha de Ingreso: mayo-2009
Mensajes: 185
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Usuarios PHP y Mysql

Lo hice, pero no me dio resultado, me sigue devolviendo una paguina vacia y sin registrar los valores.

Código PHP:
<html>
<head>
  <title>Registro</title>
</head>
<body text="#000000" background="reelblue.jpg">

<?php

//conexion
$db mysql_connect("xxxxx""xxxx""xxxxx"//conecto
or die ("No pude conectarme al servidor");
mysql_select_db("xxxxx"$db)                //selecciono
or die("No puedo acceder a la base de datos");

//declaro
$login $_POST['login'];   
$password $_POST['password'];   
$nombre $_POST['nombre'];   
$apellido $_POST['apellido'];   
$email $_POST['email'];   
$cedula $_POST['cedula'];   
$direccion $_POST['direccion'];   
$telefono $_POST['telefono'];   

function 
quitar($mensaje)
{
$mensaje str_replace("<","&lt;",$mensaje);
$mensaje str_replace(">","&gt;",$mensaje);
$mensaje str_replace("\'","'",$mensaje);
$mensaje str_replace('\"',"&quot;",$mensaje);
$mensaje str_replace("\\\\","\\",$mensaje);
return 
$mensaje;
}


if 
$_POST['login'] != "" && $_POST['password'] != "")
{
$sql "SELECT id FROM usuarios WHERE login=".mysql_real_espape_string($_POST['login'],$db)."";
$result mysql_query($sql);
if(
$row mysql_fetch_array($result))
{
echo 
"Error, ID escogido por otro usuario";
}
else
{
$sql "INSERT INTO usuarios (login, password, nombre, apellido, email, cedula, direccion, telefono) VALUES (";
$sql .= "'".mysql_real_espape_string($_POST['login'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['password'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['nombre'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['apellido'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['email'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['cedula'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['direccion'],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST['telefono'],$db)."'";
$sql .= ")";
mysql_query($sql);

if (!
mysql_query($sql)) {
exit(
mysql_error());
}
          
echo 
"Registro exitoso!";
}
mysql_free_result($result);
}
else
{
echo 
"Debe llenar como minimo los campos de email y password";
}

mysql_close();
?> 
</body>
</html>
Quizas lo estoy colocando en un lugar incorrecto.
Gracias por tu ayuda!
  #10 (permalink)  
Antiguo 15/01/2010, 18:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Usuarios PHP y Mysql

Lo mismo aplica para la primera consulta:
Código PHP:
Ver original
  1. $sql = "SELECT id FROM usuarios WHERE login=".mysql_real_espape_string($_POST['login'],$db)."";
  2. $result = mysql_query($sql) or exit(mysql_error());
Que, por cierto, si login es texto, debería ir entre comillas el valor.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 15/01/2010, 19:45
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Usuarios PHP y Mysql

viendo tu problema y el porque no te muestra ningun error, es porque supongo que tendras desabilitado el short_open_tags.

short_open_tag = On

debes habilitarlo en tu php.ini de tu servidor local.

saludos.
  #12 (permalink)  
Antiguo 16/01/2010, 19:47
Avatar de juaco14  
Fecha de Ingreso: mayo-2009
Mensajes: 185
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Usuarios PHP y Mysql

Tras leer varios tutos, informarme aqui y con su ayuda llegue al siguiente coodigo:

Código PHP:
<html>

<head>
  <title>Registro</title>

</head>
<body text="#000000" background="reelblue.jpg">

<?php

//conexion
$db mysql_connect("xxxxx""xxxxx""xxxxx"//conecto
or die ("No pude conectarme al servidor");
mysql_select_db("xxxxx"$db)                //selecciono
or die("Problemas en el servidor".mysql_error());,;


if(.
mysql_real_espape_string($_POST["login"],$db). != "" && .mysql_real_espape_string($_POST["password"],$db). != "")
{
$sql "SELECT id FROM usuarios WHERE login=".mysql_real_espape_string($_POST["login"],$db)."";
$result mysql_query($sql) or exit(mysql_error());
if(
$row mysql_fetch_array($result))
{
echo 
"Error, nick escogido por otro usuario";
}
else
{
$sql "INSERT INTO usuarios (nombre,apellido,telefono,login,password,email,cedula,direccion) VALUES (";
$sql .= "'".mysql_real_espape_string($_POST["nombre"],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST["apellido"],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST["telefono"],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST["login"],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST["password"],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST["email"],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST["cedula"],$db)."'";
$sql .= ",'".mysql_real_espape_string($_POST["direccion"],$db)."'";
$sql .= ")";
mysql_query($sql) or die("Problemas en el select".mysql_error());
echo 
"Registro exitoso!";
}
mysql_free_result($result);
}
else
{
echo 
"Debe llenar como minimo los campos de ID y Password";
}
mysql_close();
?>
</body>

</html>
el problema es que al rellenar el form, me da la misma paguina en blanco de siempre.
Gracias!

Última edición por juaco14; 16/01/2010 a las 20:06
  #13 (permalink)  
Antiguo 17/01/2010, 10:56
 
Fecha de Ingreso: julio-2009
Mensajes: 111
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Usuarios PHP y Mysql

No se si te servira, pero cuando quiero insertar desde un formulario a una base de datos, el codigo de php lo coloco antes del lenguaje html...
Espero servirte de ayuda.
  #14 (permalink)  
Antiguo 18/01/2010, 00:42
Avatar de juaco14  
Fecha de Ingreso: mayo-2009
Mensajes: 185
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Usuarios PHP y Mysql

Gracias, pero probe y me sigue dando lo mismo... mi error esta en el codigo.
  #15 (permalink)  
Antiguo 19/01/2010, 06:38
 
Fecha de Ingreso: julio-2009
Mensajes: 111
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Usuarios PHP y Mysql

Código PHP:
<?php  
if (isset ($_POST['publicar']) ) {
    
    
$titulo=false;
    
$resumen=false;
    
$noticia=false;
    
$autor=false;
    
    
//TITULO
    
if (empty ($_POST['titulo'])) {
    
$msg='El campo titulo es obligatorio. ';
    
    }else{
    
$titulo=true;
    
$tituloBlog = ($_POST['titulo']);
    
    }
    
    
    
// RESUMEN
        
if (empty ($_POST['resumen'])) {
    
$msg.='El campo resumen es obligatorio. ';
    
    }else{
    
$resumen=true;
    
$resumenBlog =($_POST['resumen']);
    
    }
    
    
    
//NOTICIA
        
if (empty ($_POST['noticia'])) {
    
$msg.='El campo noticia es obligatorio. ';
    
    }else{
    
$noticia=true;
    
$noticiaBlog = ($_POST['noticia']);
    }
    
    
    
//AUTOR
        
if (empty ($_POST['autor'])) {
    
$msg.='El campo autor es obligatorio. ';
    
    }else{
    
$autor=true;
    
$autorBlog = ($_POST['autor']);
    }
    
    
    
    if (
$titulo && $resumen && $noticia && $autor) {
    
$fecha time();
    require_once(
'cnx.php');
    
    
$sql "INSERT INTO noticias (titulo, resumen, noticia, fecha, autor) VALUES ('$tituloBlog','$resumenBlog','$noticiaBlog',$fecha,'$autorBlog')";
    
    if(
mysql_query($sql$idcon)) {
      
$msg'Noticia insertada con exito!';
    }else{
    
$msg'Error en la insercion';
    }
    
    }
    
    
}
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>


</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="form1" id="form1">
<table>
<tr>
    <th ><label for="titulo">Titulo</label></th>
    <td>
      <input type="text" name="titulo" id="titulo" value="<?php echo $_POST['titulo']; ?>" /></td>
  </tr>
  <tr>
    <th><label for="resumen">Resumen</label></th>
    <td>
      <textarea name="resumen" id="resumen" cols="45" rows="3"><?php echo $_POST['resumen']; ?></textarea></td>
  </tr>
  <tr>
    <th> <label for="noticia">Su noticia</label></th>
    <td>
<textarea name="noticia" id="noticia" cols="45" rows="3"><?php echo $_POST['noticia']; ?></textarea>
  </td>
  </tr>
  <tr>
    <th><label for="autor">Autor</label></th>
    <td>
      <input name="autor" type="text" id="autor" value="<?php echo $_POST['autor']; ?>" /></td>
  </tr>
  <tr>
    <td></td>
    <td align="center"><input type="submit" name="publicar" id="publicar" value="Publicar" /></td>
  </tr>
  
</table>
</form>
</body>
</html>
Mira te pongo este ejemplo muy claro y a ver si puedes sacar algo de aqui...

Antes del html pongo el codigo php necesario...

Y en el html esta el formulario...

Espero que te sirva...

Etiquetas: mysql, usuarios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:28.