Foros del Web » Programando para Internet » PHP »

autenticar usuario

Estas en el tema de autenticar usuario en el foro de PHP en Foros del Web. tengo una base de datos en la que ya estan definidos los usuarios que van a acceder al sitio con un campo tipo_usuario para controlar ...
  #1 (permalink)  
Antiguo 24/02/2006, 12:51
 
Fecha de Ingreso: febrero-2006
Ubicación: Cienfuegos, Cuba
Mensajes: 14
Antigüedad: 11 años, 9 meses
Puntos: 0
autenticar usuario

tengo una base de datos en la que ya estan definidos los usuarios que van a acceder al sitio con un campo tipo_usuario para controlar a la pagina que van a acceder pero no me funciona bien el codigo siempre me devuele el mensaje que tengo de que el usuario no existe..
aqui esta el codigo espero ayuda


<?php
session_start();
require("securityheader.inc.php"); //esto quiere decir que tiene que estar abierta la session sino lo va a
// redireccionar a la pagina principal
include "config.inc.php";
if (isset ($_GET["action"]) && $_GET["action"]=="login")
{
//Almaceno los datos que viene desde la pagina principal y encripto el password
$nick = $_POST["user"];
$passw = md5($_POST["pass"]);
$passwencript=md5($passw);
//me conecto a la base de datos a la que voy trabajar
include"conexion.php";
//alamaceno en la variable $sql los datos que quiero de la base de datos
$sql = "select nombre,pass,tipo_usuario from usuarios where nombre='$nick' and pass='$passwencript'";
$rsl = mysql_query($sql) or die(mysql_error()) ;
$row = mysql_fetch_array($rs1);

// $nick ='".$_POST["user"]."';
//$passw = md5('".$_POST["pass"]."');

//nombre,pass,tipo_usuario son los nombres de estos campos en la base de datos

//abro la sesion con los datos del usuario
session_start();
session_register("nombre");
$pass = $passwencript;
session_register("pass");
$Rol = $row["tipo_usuario"];
session_register("Rol");
//compruebo el valor que posee en la tabla tipo_usuario y segun sea lo mando a la pagina que le corresponde
if ($row["rol"]=='a') { header("location:anexoa.php");}
if ($row["rol"]=='b'){header("location:secretaria.php");}
else header("location:index.php?action=error");
}
?>




saludos
  #2 (permalink)  
Antiguo 24/02/2006, 13:55
Avatar de axy108  
Fecha de Ingreso: diciembre-2003
Ubicación: En frente de mi Computadora
Mensajes: 415
Antigüedad: 14 años
Puntos: 0
Cita:
Iniciado por Luis__Daniel
Código PHP:
...
$passw md5($_POST["pass"]);
    
$passwencript=md5($passw);
... 
A menos de que me equivoque el error esta aqui, ya que estas encriptando dos veces el password, trata quitandole el md5 a la hora qu erecoges la variable, y solo dejarlo en el segundo algo asi:

Código PHP:
...
$passw $_POST["pass"];
    
$passwencript=md5($passw);
... 
PD: si sale eso "BEGIN__VBULLETIN__CODE__SNIPPET " ignoralo

SALUDOS

__________________
Todos somos muy ignorantes :pensando: . Lo que ocurre es que no todos ignoramos las mismas cosas ;-) .... Albert Einstein :cool:
  #3 (permalink)  
Antiguo 25/02/2006, 15:59
 
Fecha de Ingreso: febrero-2006
Ubicación: Cienfuegos, Cuba
Mensajes: 14
Antigüedad: 11 años, 9 meses
Puntos: 0
igual

ya arregle ese problema y nada.......
sigue saliendo el mensaje que puse para si no se encontraba en la base de datos el usuario o la contraseña estara bien la consulta que hice ???
  #4 (permalink)  
Antiguo 26/02/2006, 20:22
Avatar de axy108  
Fecha de Ingreso: diciembre-2003
Ubicación: En frente de mi Computadora
Mensajes: 415
Antigüedad: 14 años
Puntos: 0
pues ahorita revisando de nuevo tu script encontre que en esta parte de codigo:

Código PHP:
$rsl mysql_query($sql) or die(mysql_error()) ;
$row mysql_fetch_array($rs1); 
Las variables son diferentes la que asignas al resultado se llama $rsl, y la que le mandas de parametro a la funcion mysql_fetch_array, se llama $rs1.

Ademas de que en tu select solo mandas llamar a los campos nombre,pass,tipo_usuario y mas a bajo en tus comprobaciones tratas de hacer referencia a un campo que no seleccionaste:

Código PHP:
if ($row["rol"]=='a') { header("location:anexoa.php");}
if (
$row["rol"]=='b'){header("location:secretaria.php");} 
else 
header("location:index.php?action=error"); 
El campo rol, no lo seleccionas en tu instruccion select, y tal ves es por eso que siempre te redirecciona a la pagina con el error.

Revisa esto que te digo y si sigues teniendo problemas regresa y lo vemos.

SALUDOS

__________________
Todos somos muy ignorantes :pensando: . Lo que ocurre es que no todos ignoramos las mismas cosas ;-) .... Albert Einstein :cool:
  #5 (permalink)  
Antiguo 27/02/2006, 13:26
 
Fecha de Ingreso: febrero-2006
Ubicación: Cienfuegos, Cuba
Mensajes: 14
Antigüedad: 11 años, 9 meses
Puntos: 0
lo que me dices de la variable por eso no es porque en lo que tengo en mi codigo esta bien
ademas aqui en esta parte lo que se hace no es que se le asigna el valor que tiene tipo_usuario a la variable $rol por eso es que la utilizo luego y no el valor que obtengo de la consulta hecha a la base de datos


//abro la sesion con los datos del usuario
session_start();
session_register("nombre");
$pass = $passwencript;
session_register("pass");
$Rol = $row["tipo_usuario"];
session_register("Rol");
//compruebo el valor que posee en la tabla tipo_usuario y segun sea lo mando a la pagina que le corresponde
if ($row["rol"]=='a') { header("location:anexoa.php");}
if ($row["rol"]=='b'){header("location:secretaria.php");}
else header("location:index.php?action=error");
}
?>


saludos
  #6 (permalink)  
Antiguo 27/02/2006, 13:35
Avatar de axy108  
Fecha de Ingreso: diciembre-2003
Ubicación: En frente de mi Computadora
Mensajes: 415
Antigüedad: 14 años
Puntos: 0
pero si quisieras usar tu variable $rol en la comparacion deberias de hacerlo asi:

Código PHP:
if ($rol=='a') { header("location:anexoa.php");}
if (
$rol=='b'){header("location:secretaria.php");}
else 
header("location:index.php?action=error");

o asi:

Código PHP:
if ($_session('rol')=='a') { header("location:anexoa.php");}
if (
$_session('rol')=='b'){header("location:secretaria.php");}
else 
header("location:index.php?action=error");

ya que la registras como variable de session, no entiendo porque quieres hacer uso de la variable asi:

$row['rol']

eso no esta bien ya uqe tu variable $row trae una matriz de resultados de tu query.

algo asi:
nombre,pass,tipo_usuario
$row['nombre']
$row['pass']
$row['tipo_usuario']

que son los campos que seleccionas de la BD, mas nunca tienes un campo 'rol'

Espero te sea de ayuda.

SALUDOS

__________________
Todos somos muy ignorantes :pensando: . Lo que ocurre es que no todos ignoramos las mismas cosas ;-) .... Albert Einstein :cool:
  #7 (permalink)  
Antiguo 03/03/2006, 19:30
 
Fecha de Ingreso: febrero-2006
Ubicación: Cienfuegos, Cuba
Mensajes: 14
Antigüedad: 11 años, 9 meses
Puntos: 0
estos son los errores que me dan ahora
Cita:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\P3\action.php:3) in C:\wamp\www\P3\action.php on line 5

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\P3\action.php:3) in C:\wamp\www\P3\action.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\P3\action.php:3) in C:\wamp\www\P3\action.php on line 36
y este es el codigo que he ido mejorando aparentemente
Cita:


<?php

session_start();
// redireccionar a la pagina principal

if (isset ($_GET['action']) && $_GET['action']=="login")
{
//Almaceno los datos que viene desde la pagina principal y encripto el password
$nick = $_POST["user"];
$passw = md5($_POST["pass"]);
include "cconexion.php";
$conx=new conexion($baseDatos,$servidor,$usuario,$clave);
$conx->Conectar($baseDatos,$servidor,$usuario,$clave);

$sql = "select * from usuarios where nombre='.mysql_real_escape_string($nick).' and pass='.mysql_real_escape_string($passw).'";
$rsl = mysql_query($sql) or die(mysql_error()) ;
$row = mysql_fetch_array($rsl);

//nombre,pass,tipo_usuario son los nombres de estos campos en la base de datos

//abro la sesion con los datos del usuario
session_start();


}
session_register("nombre");
$pass = $passwencript;
session_register("pass");
$Rol = $row["tipo_usuario"];
session_register("Rol");
//compruebo el valor que posee en la tabla tipo_usuario y segun sea lo mando a la pagina que le corresponde
if ($row["rol"]=='a') { header("location:anexoa.php");}
if ($row["rol"]=='b'){header("location:secretaria.php");}
else header("location:index.php?action=error");
?>

espero ayuda ...
  #8 (permalink)  
Antiguo 03/03/2006, 19:40
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Cita:
Iniciado por axy108
PD: si sale eso "BEGIN__VBULLETIN__CODE__SNIPPET " ignoralo
Amigo respecto a ese error del foro al postiar entre etiquetas php

Saludos
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #9 (permalink)  
Antiguo 03/03/2006, 19:55
 
Fecha de Ingreso: febrero-2006
Ubicación: Cienfuegos, Cuba
Mensajes: 14
Antigüedad: 11 años, 9 meses
Puntos: 0
ok

ok, pero ese no es el problema principal que me sucede con lo de autenticar pero gracias de todas maneras
  #10 (permalink)  
Antiguo 04/03/2006, 07:17
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 12 años, 2 meses
Puntos: 2
fijate bien

este error sabe dar cuando al final de

Código HTML:
?>
dejas espacios o lineas en blanco

mira los archivos de cada include haber sin no dejaste espacios en blanco y si es asi borralos
saludos
__________________
DJJJ
  #11 (permalink)  
Antiguo 04/03/2006, 18:34
 
Fecha de Ingreso: febrero-2006
Ubicación: Cienfuegos, Cuba
Mensajes: 14
Antigüedad: 11 años, 9 meses
Puntos: 0
resuelto

ya solucione el problema, a cualquiera que le pase lo mismo me puede contactar que si puedo le ayudo...
  #12 (permalink)  
Antiguo 04/03/2006, 18:56
Avatar de decano  
Fecha de Ingreso: diciembre-2005
Ubicación: Montevideo, Uruguay
Mensajes: 146
Antigüedad: 12 años
Puntos: 0
hola luis daniel:
era ese el prblema de los espacios en balnco porque te cuento que ami me pasaba lo mismo y tuve que hacer otro invento sin poder redireccionar las paginas
saludos.
  #13 (permalink)  
Antiguo 05/03/2006, 08:42
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 12 años, 2 meses
Puntos: 2
Luis__Daniel

¿el problema fue los espacios en blanco?

te cuento que cuando uno pide ayuda en el foro, y todos tratan de ayudarte, y solucionas tu preguntas, debe poner cual fue la solucion asi todos aprendemos mas

salu2
__________________
DJJJ
  #14 (permalink)  
Antiguo 05/03/2006, 20:07
 
Fecha de Ingreso: febrero-2006
Ubicación: Cienfuegos, Cuba
Mensajes: 14
Antigüedad: 11 años, 9 meses
Puntos: 0
solucion al problema

aqui va la solucion...

Cita:
<?php

// redireccionar a la pagina principal
//Almaceno los datos que viene desde la pagina principal y encripto el password
$nick = $_POST["user"];
$passw=md5($_POST["pass"]);
include "cconexion.php";
$conx=new conexion($baseDatos,$servidor,$usuario,$clave);
$conx->Conectar($baseDatos,$servidor,$usuario,$clave);
$nickQuotes= mysql_real_escape_string($nick);
$passwQuotes= mysql_real_escape_string($passw);
$sql = "select * from usuarios where nombre='".$nickQuotes."' and pass='".$passwQuotes."'";
$rsl = mysql_query($sql) or die(mysql_error()) ;
$row = mysql_fetch_array($rsl);
//nombre,pass,tipo_usuario son los nombres de estos campos en la base de datos
//abro la sesion con los datos del usuario
session_start();
session_register("user");

$_SESSION["user"]=$nick;

session_register("pass");
$_SESSION["rol"] = $row['tipo_usuario'];
$rol=$_SESSION["rol"] ;
session_register("$rol");

//compruebo el valor que posee en la tabla tipo_usuario y segun sea lo mando a la pagina que le corresponde
if ($_SESSION["rol"]=='a') { header("location:anexoa.php");}
else
if($_SESSION["rol"]=='b')
{
header("location:secretaria.php");
}
else
if($_SESSION["rol"]=='c')
{
header("location:anexoa.php");
}
else
header("location:index.php?action=error");

?>
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 12:56.