Foros del Web » Programando para Internet » PHP »

problemas con login

Estas en el tema de problemas con login en el foro de PHP en Foros del Web. que tal est vez acudo a ustedes porque estoy teniendo problemitas con el login que estoy realizando he aqui el codigo> Código PHP: <?php      ...
  #1 (permalink)  
Antiguo 04/02/2010, 10:42
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
problemas con login

que tal est vez acudo a ustedes porque estoy teniendo problemitas con el login que estoy realizando he aqui el codigo>

Código PHP:
<?php
    
include( "conex/conect.php"); 
    
$link=Conectarse();
    
$usuario=$_POST["txtusuario"];
    
$pass=$_POST["txtpass"];
    if(
trim($usuario) != "" && trim($pass) != ""){
    
$sql="SELECT * FROM peru2business where usuario = $usuario and pass= $pass ";
    
$rs mysql_query($sql,$link);
    if(
$row mysql_fetch_array($rs)){
        if(
$row['usuario']==$usuario){
            if(
$row['pass']==$pass){
                
$_SESSION['user']='si';
                
$_SESSION["usuario"]=$row["usuario"];
                
header("Location:index.php");
    }else{echo 
'pass incorrecto';}
    }else{echo
'error usuario!!!';}
    }    
    
mysql_close($link);
    
header("Location:index.php?msg='no'");
    }else{echo
'identifiquese';}    

?>
estuve probando por todos lados para ver el error y la verdad me estoy volviendo loca O.O porque no lo encuentro me podrian ayudar a ver en que esta fallando?? gracias
  #2 (permalink)  
Antiguo 04/02/2010, 10:45
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: problemas con login

usuario y pass son campos no numéricos, por lo que los valores deben ir entre comillas:
Código MySQL:
Ver original
  1. usuario = '$usuario' AND pass = '$pass';
Además, antes de usar las variables en la consulta, fíltralas usando mysql_real_escape_string
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 04/02/2010, 10:45
 
Fecha de Ingreso: noviembre-2004
Mensajes: 5
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: problemas con login

Cita:
Iniciado por ahome8990 Ver Mensaje
que tal est vez acudo a ustedes porque estoy teniendo problemitas con el login que estoy realizando he aqui el codigo>

Código PHP:
<?php
    
include( "conex/conect.php"); 
    
$link=Conectarse();
    
$usuario=$_POST["txtusuario"];
    
$pass=$_POST["txtpass"];
    if(
trim($usuario) != "" && trim($pass) != ""){
    
$sql="SELECT * FROM peru2business where usuario = $usuario and pass= $pass ";
    
$rs mysql_query($sql,$link);
    if(
$row mysql_fetch_array($rs)){
        if(
$row['usuario']==$usuario){
            if(
$row['pass']==$pass){
                
$_SESSION['user']='si';
                
$_SESSION["usuario"]=$row["usuario"];
                
header("Location:index.php");
    }else{echo 
'pass incorrecto';}
    }else{echo
'error usuario!!!';}
    }    
    
mysql_close($link);
    
header("Location:index.php?msg='no'");
    }else{echo
'identifiquese';}    

?>
estuve probando por todos lados para ver el error y la verdad me estoy volviendo loca O.O porque no lo encuentro me podrian ayudar a ver en que esta fallando?? gracias
Pero que error tenes ??
Explica un poco mas
  #4 (permalink)  
Antiguo 04/02/2010, 10:52
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: problemas con login

Fuera de lo que dijo David, estas segura de que recivis todos los datos por $_POST? Podrias comprobarlo haciendo un echo por ahi...

Para que tenes la funcion Conectarse() ? :S no es mas facil armar el link directamente en el archivo conect.php ? Puede que tu error este en esa función también.

if(trim($usuario) != "" && trim($pass) != "") no habrás querido hacer: if(!empty($usuario) && !empty($pass)); ?? Se que son cosas diferentes, pero en una de esas.....

Como tip, te recomiendo usar mysql_real_escape_string() con el user para evitar alguna inyeccion SQL. Tambien codificar la password en md5() para mantener a los usuarios mas seguros.
  #5 (permalink)  
Antiguo 04/02/2010, 10:54
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

corrigiendo lo que me han indicado me aparecen estos errores:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\peru2business\ingreso.php on line 9

linea 9:

Código PHP:
if($row mysql_fetch_array($rs)){ 
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\peru2business\conex\conect.php:18) in C:\xampp\htdocs\peru2business\ingreso.php on line 19

linea 19:

Código PHP:
header("Location:index.php"); 
pero que error tienen?? no falta comillas ni nada


Si hice el echo y si esta recibiendo los valores
  #6 (permalink)  
Antiguo 04/02/2010, 10:58
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: problemas con login

Imprime el valor de mysql_error() para obtener una descripción más detallada del problema en la consulta.

En cuanto a header(), no puedes usarlo si ya enviaste una salida al navegador.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 04/02/2010, 10:59
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

Si no ingreso valores me sale el último mensaje de error pero si coloco valores que no estan en la base de datos me salen esos 2 errores, disculpa bioxido pero como se usa el mysql_real_escape_string() o el md5()??? O.O?
  #8 (permalink)  
Antiguo 04/02/2010, 11:00
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: problemas con login

¿Cuál es el código que tienes ahora mismo?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 04/02/2010, 11:03
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

sale esto pero no entiendo mucho a que se refiere con lo del header

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\peru2business\ingreso.php on line 9

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\peru2business\conex\conect.php:18) in C:\xampp\htdocs\peru2business\ingreso.php on line 19
Código PHP:
<?php
    
include( "conex/conect.php"); 
    
$link=Conectarse();
    
$usuario=$_POST["txtusuario"];
    
$pass=$_POST["txtpass"];
    if(
trim($usuario) != "" && trim($pass) != ""){
    
$sql="SELECT * FROM peru2business where usuario = '$usuario' and pass= '$pass'";
    
$rs mysql_query($sql,$link);
    if(
$row mysql_fetch_array($rs)){
    if(
$row['usuario']==$usuario){    
            if(
$row['pass']==$pass){
                
$_SESSION['user']='si';
                
$_SESSION["usuario"]=$row["usuario"];
                
header("Location:index.php");
    }else{echo 
'pass incorrecto';}
    }else{echo
'error usuario!!!';}
    }    
    
mysql_close($link);
    
header("Location:index.php");
    }else{echo
'identifiquese';}    

?>
  #10 (permalink)  
Antiguo 04/02/2010, 11:06
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: problemas con login

Imprime mysql_error() (Enlace al manual)

No puedes enviar ninguna información al navegador cuando usas header() (Enlace al manual), ningún echo, ningún código HTML.

Para entender cómo usar mysql_real_escape_string puedes revisar el manual.

Si aún no logras encontrar el error, muestra los mensajes que te genera y el código como lo tienes ahora.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 04/02/2010, 11:16
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: problemas con login

El segundo error se te va a solucionar cuando soluciones el primero, asique por ahora no le hagas caso.

Usar esas funciones es tan simple como:
Código PHP:
$user mysql_real_escape_string($_POST['user']);
$pass md5($_POST['pass']); //Esto te va a devolver una mezcla de numeros y letras nada entendible. Guardas eso en la DB cuando se registra el usuario y despues cada vez que se logee haces lo mismo que ahora, convertis la pass a md5 y comparas con la pass YA CONVERTIDA EN MD5 que tenes en la DB. 
Como otro tip para optimizar, te recomiendo usar mysql_fetch_assoc() envezde mysql_fetch_array() Para la forma que vos lo estas usando, es exactamente lo mismo con la diferencia de que mysql_fetch_array es bastante mas caro (respecto a rendimiento) que mysql_fetch_assoc.

FROM `peru2business` Agrega las comillas, no creo hagan diferencia, pero nunca es malo probar :P
  #12 (permalink)  
Antiguo 04/02/2010, 11:17
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

Gracias ahora mismo estoy revisando los links que me has dado
  #13 (permalink)  
Antiguo 04/02/2010, 11:26
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

arregle 1 error corrigiendo algo en la conexion, pero el otro solo lo arregle borrando los headers, ahora como redirigiria al index sin el header??? supuesamente al loguearse se redirige al index en la parte superior aparece su usuario con la bienevenida, pero sin el header no me redirige solo me quedo estancada en ingreso.php

el código quedó asi porque no se me ocurre algo para reemplazar el header TT___TT
Código PHP:
<?php
    
include( "conex/conect.php"); 
    
$link=Conectarse();
    
$usuario=$_POST["txtusuario"];
    
$pass=$_POST["txtpass"];
    if(
trim($usuario) != "" && trim($pass) != ""){
    
$sql="SELECT * FROM empresa where usuario = '$usuario' and pass= '$pass'";
    
$rs mysql_query($sql,$link);
    if(
$row mysql_fetch_array($rs)){
    if(
$row['usuario']==$usuario){    
            if(
$row['pass']==$pass){
            
                
$_SESSION['user']='si';
                
$_SESSION["usuario"]=$row["usuario"];
    }else{}
    }else{}
    }else{}
    }else{}    
    
mysql_close($link);
?>
Gracias bioxido ahora mismo lo agrego a mi código
  #14 (permalink)  
Antiguo 04/02/2010, 11:37
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: problemas con login

Puedes usar header, siempre y cuando no hayas enviado antes alguna salida al navegador.
Revisa esto: http://www.forosdelweb.com/wiki/PHP:...n_line_4%22%3F

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #15 (permalink)  
Antiguo 04/02/2010, 12:01
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: problemas con login

tambien podes usar javascript o meta de html. Busca en google o en el foro de javascript\html.
  #16 (permalink)  
Antiguo 04/02/2010, 12:02
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

ya corregí el error de los headers y ya me funciona bien pero ahora si coloco un usuario existente siempre me manda que no existe este es el código:
Código PHP:
<?php
    
include( "conex/conect.php"); 
    
$link=Conectarse();
    
$usuario =mysql_real_escape_string($_POST['usuario']);
    
$pass=md5($_POST["txtpass"]);
    if(
trim($usuario)!= "" && trim($pass)!= ""){
    
$sql="SELECT * FROM 'empresa' where usuario = '$usuario' and pass= '$pass'";
    
$rs mysql_query($sql,$link);
    if(
$row mysql_fetch_array($rs)){
    if(
$row['usuario']==$usuario){    
            if(
$row['pass']==$pass){
                
$_SESSION['user']='si';
                
$_SESSION["usuario"]=$row["usuario"];
                
header("Location:/admin/index.php");
                echo 
$usuario
    }else{
header("Location:index.php?msg='1'");}
    }else{
header("Location:index.php?msg='2'");}
    }else{
header("Location:index.php?msg='3'");}
    }else{
header("Location:index.php?msg='4'");}    
    
mysql_close($link);
?>
  #17 (permalink)  
Antiguo 04/02/2010, 12:08
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: problemas con login

Te recomiendo leer esto: EasyLogin

if($row['usuario']==$usuario){

Ese if es como comparar 1 == 1 no tiene caso te va a dar siempre true.
  #18 (permalink)  
Antiguo 04/02/2010, 12:11
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

ahi no me da error pero el msg siempre es 4 ahi siempre se traba si lo quito se queda en 3 y si lo quito se queda en 2 y asi asi asiiii.... xD pero si ya no hay problema con el header porque si me redirecciona no se mirar ahora lo que me mandaste

ya lo habia visto xD ... creo que en el header le colocare en vez de eso javascript a ver como sale
  #19 (permalink)  
Antiguo 04/02/2010, 12:16
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: problemas con login

Hacelo asi mejor:

Código PHP:
<?php

    
include( "conex/conect.php"); 
    
$link=Conectarse();
    
$usuario =mysql_real_escape_string(trim($_POST['usuario']));
    
$pass=md5(trim($_POST["txtpass"]));
    if(!empty(
$usuario) && !empty($pass)){
    
$sql="SELECT * FROM 'empresa' where usuario = '$usuario' and pass= '$pass'";
    
$rs mysql_query($sql,$link);
    if(
$row mysql_fetch_array($rs)){
    if(
$row['usuario']==$usuario){    
            if(
$row['pass']==$pass){
                
$_SESSION['user']='si';
                
$_SESSION["usuario"]=$row["usuario"];
                
header("Location:/admin/index.php");
                echo 
$usuario
    }else{
header("Location:index.php?msg='1'");}
    }else{
header("Location:index.php?msg='2'");}
    }else{
header("Location:index.php?msg='3'");}
    }else{
header("Location:index.php?msg='4'");}    
    
mysql_close($link); 

?>
  #20 (permalink)  
Antiguo 04/02/2010, 12:43
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

me sigue saliendo error TT___TT....en la url queda msg='4';por mas que coloque bien los datos o coloque mal uno de ellos adrede simpre manda el msg=4

Última edición por ahome8990; 04/02/2010 a las 12:51
  #21 (permalink)  
Antiguo 04/02/2010, 12:50
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: problemas con login

Que mensaje de error te tira?
  #22 (permalink)  
Antiguo 04/02/2010, 13:13
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

ninguno solamente se queda en el echo header:"Location index.php?msg='4'" hice un echo y no jala el usuario; si existe la tabla pero no se porque no jala el usuario

Código PHP:
mysql_real_escape_string(trim($_POST['txtusuario'])); 
esta linea es del usuario

Última edición por ahome8990; 04/02/2010 a las 13:21
  #23 (permalink)  
Antiguo 04/02/2010, 13:19
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: problemas con login

Y bueno, empeza a hacer comprobaciones que la tabla exista, que los datos lleguen bien por $_POST, etc,etc... Tenes varias cosas para comprobar =D
  #24 (permalink)  
Antiguo 04/02/2010, 13:34
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

Bien quite cosas innecesarias xD arregle algunos errores y quedo asi:
Código PHP:
<?php

    
include( "conex/conect.php"); 
    
$link=Conectarse();
    
$usuario =mysql_real_escape_string(trim($_POST['txtusuario']));
    
$pass=md5(trim($_POST["txtpass"]));    
    if(!empty(
$usuario) && !empty($pass)){
    
$sql="SELECT * FROM empresa where usuario = '$usuario' and pass= '$pass'";
    
$rs mysql_query($sql,$link);    
    if(
$row mysql_fetch_array($rs) ){
                
$_SESSION['user']='si';
                
$_SESSION["usuario"]=$row["usuario"];
                
header("Location:.../admin/index.php");
                echo 
$usuario
    }else{
    
header("Location:index.php?msg='3'");
    }
    }else{
header("Location:index.php?msg='4'");}    
    
mysql_close($link); 

?>
pero se queda siempre en esta linea:

if($row = mysql_fetch_array($rs) ) el valor siempre es falso asi que queda en el else:

header("Location:index.php?msg='3'");


las valores existen en la tabla, si jala los datos pero el error ocurre en esa linea siempre es falso
  #25 (permalink)  
Antiguo 04/02/2010, 13:36
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: problemas con login

El problema es que si el password no está guardado en la base de datos con su hash MD5, cuando uses esa función causará discrepancia, no va a devolver ningún registro.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #26 (permalink)  
Antiguo 04/02/2010, 13:39
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

en la base de datos si esta guardado con md5 pues es un ultimo registro que ingrese con md5; seguire revisando por ahi se me escapo algo gracias, les avisare cualquier cambio. Gracias otra vez n.n
  #27 (permalink)  
Antiguo 04/02/2010, 14:52
 
Fecha de Ingreso: enero-2010
Mensajes: 79
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: problemas con login

Disculpa ahome8990 puedes mostrar el resultado final es que tengo algo parecido y no se como manejarlo
  #28 (permalink)  
Antiguo 04/02/2010, 14:55
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemas con login

Ok no hay problema ;D
Código PHP:
<?php
    session_start
();
    include( 
"conex/conect.php"); 
    
$link=Conectarse();
    
$usuario =mysql_real_escape_string(trim($_POST['user']));
    
$pass=addslashes($_POST["pass"]);
    
$sql="SELECT * FROM empresa where usuario = '$usuario' and pass= '$pass'";
    
$rs mysql_query($sql,$link);
    
$num mysql_num_rows($rs);
    if(
$num>0){
                        
$row mysql_fetch_array($rs);
            
$_SESSION['user']='si';
                        
$_SESSION["usuario"]=$row["usuario"];
                        
header:("location:admin/index.php");

    }else{
    echo 
'usuario y password incorrectos';
    }
    
mysql_close($link); 
?>
nuevamente gracias chicos, problema resuelto n.n

Etiquetas: login
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 10:14.