Foros del Web » Programando para Internet » PHP »

PHP y Mysql identificacion segun tipo de usuario

Estas en el tema de PHP y Mysql identificacion segun tipo de usuario en el foro de PHP en Foros del Web. Hola, despues de probar muchos codigo y que no me funcionen os pregunto a vosotros a ver si me podeis ayudar. EL tema es que ...
  #1 (permalink)  
Antiguo 04/03/2010, 13:25
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
PHP y Mysql identificacion segun tipo de usuario

Hola, despues de probar muchos codigo y que no me funcionen os pregunto a vosotros a ver si me podeis ayudar.
EL tema es que tengo una base de datos con una tabla cn el nombre el password y el tipo de usuario administrador o usuario, quiero que los usuarios se logeen a traves de un formulario pero que solo pongan usuario y password y despues segun el tipo de acceso que este almacenado en la base de datos me lleve a una apgina de administrador o de usuario, creo que se puede hacer con header pero no lo tengo muy claro..
GRACIAS!!
  #2 (permalink)  
Antiguo 04/03/2010, 13:38
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: PHP y Mysql identificacion segun tipo de usuario

Eso es un formulario que envie los datos a un .php, en ese .php hacemos la consulta a la base de datos segun login y pass guardando todo el registro en un array si existe. Y por ultimo vemos si el tipo de usuario es uno u otro y redireccionamos con la funcion header(); de php

¿que tienes hecho?
  #3 (permalink)  
Antiguo 04/03/2010, 13:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: PHP y Mysql identificacion segun tipo de usuario

Tengo hecho esto exactamente pero al hacer el echo de la consulta el tipo de usuario me lo devuelve vacio porque espera que se lo diga en el formulario y es lo que no quiero, quiero que lo coga de la base de datos..





<?php
session_start();
//conecto con la base de datos
$conn = mysql_connect("localhost","root","");
//selecciono la BBDD
mysql_select_db("examen",$conn);
$query = "SELECT tipoAcceso FROM usuarios WHERE usuario='$usur' AND password='$pass' AND tipoAcceso='$tipo'";
$result = mysql_query($query,$conn);
mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
if ($row["password"]=$pass and $row["$tipo"]=usuario)
{
header("Location:usuario.php");
}
else if ($row["password"]= $pass and $row["$tipo"]=administrador)
{
header("Location:administrador.php");
}
else
{
header("Location:error.html");
}
mysql_close($conn);
?>
  #4 (permalink)  
Antiguo 04/03/2010, 13:48
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: PHP y Mysql identificacion segun tipo de usuario

AND tipoAcceso='$tipo' esto sale sobrando de la consulta, por eso espera que se lo des del formulario, por que lo especificas como parametro de busqueda, elimina esta parte y te debería de funcionar.
__________________
http://exegesis-biblica.com/
  #5 (permalink)  
Antiguo 04/03/2010, 13:49
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: PHP y Mysql identificacion segun tipo de usuario

Esto no esta bien:

$query = "SELECT tipoAcceso FROM usuarios WHERE usuario='$usur' AND password='$pass' AND tipoAcceso='$tipo'";

Tu solo tienes que buscar que coincida el usuario y password, nada mas:

$query = "SELECT tipoAcceso FROM usuarios WHERE usuario='$usur' AND password='$pass'";

Por cierto, es bueno que controles bien las varibles que se envian desde formulario y luego son usadas para acceder a tu base de datos, porque te hacen una INJECCION SQL y directamente te podrian borrar todo, acceder con cualquier cuenta, etc, etc...

Mas cosas, tampoco tiene sentido hacer un bucle while si realmetne vamos a buscar 1 solo registro:

while($row = mysql_fetch_array($result))

Hazlo asi:

$row = mysql_fetch_array($result);
if ($row["tipoAcceso"]==1) {header("Location:usuario.php");exit();}
elseif ($row["tipoAcceso"]==2) {header("Location:administrador.php");exit();}
else {header("Location:error.php");exit();}


Fijate que en ningun momento usaremos $tipo, usamos row["tipoAcceso"] que viene del registro capturado anteriormente si el login y pass coinciden en algun registro de nuestra base de datos, espero lo entiendas, sino pregunta!
  #6 (permalink)  
Antiguo 04/03/2010, 14:06
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: PHP y Mysql identificacion segun tipo de usuario

Muchisimas gracias pero creo que me he equivocado en algo, he hecho el echo ela consulta y me devuelve la conraseña y usuario correctos pero ahora siempre me lleva a la pagina de error.php

<?php
session_start();
//conecto con la base de datos
$conn = mysql_connect("localhost","root","");
//selecciono la BBDD
mysql_select_db("examen");
$query = "SELECT tipoAcceso FROM usuarios WHERE usuario='$usur' AND password='$pass'";
$result = mysql_query($query);
//echo $result;
$row = mysql_fetch_array($result);
if ($row["tipoAcceso"]==1)
{
header("Location:usuario.php");
exit();}
elseif ($row["tipoAcceso"]==2)
{
header("Location:administrador.php");
exit();
}
else {
header("Location:error.php");
exit();}
mysql_close($conn);
?>

Última edición por xSevix; 04/03/2010 a las 14:32
  #7 (permalink)  
Antiguo 04/03/2010, 17:24
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: PHP y Mysql identificacion segun tipo de usuario

Eso te pasa por que los datos comparados no son iguales a los datos recibidos. Decidete, el nivel de acceso es por palabra (usuario) o por numeros (1)? Veo que en tu primer mensaje lo manejas con palabras, y en el ultimo lo manejas con numero, que es lo que tienes en la base de datos numeros o palabras? digo esto por que si intentas comparar el resultado con numeros y en la base de datos tienes palabras siempre te mandara un error.
__________________
http://exegesis-biblica.com/
  #8 (permalink)  
Antiguo 04/03/2010, 18:53
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: PHP y Mysql identificacion segun tipo de usuario

Pero oye..... que lo de $row["tipoAcceso"]==1 o ==2 lo puse yo por poner! ni idea de que valores les das a ese campo para identificar un tipo de usuario o otro....

Tambien tienes que acostumbrarte a debuggear, esto es... ir metiendo echos por ahi para sacar info que pueda darte pistas de donde esta el error. Y por supuesto tambien hace un echo $query y llevartelo a la consola sql de phpmyadmin y ejecutar la consulta a ver que devuelve ¿entiendes esto que digo?
  #9 (permalink)  
Antiguo 05/03/2010, 00:49
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: PHP y Mysql identificacion segun tipo de usuario

Muchas gracias lo consegui!!!
  #10 (permalink)  
Antiguo 05/03/2010, 19:41
 
Fecha de Ingreso: marzo-2010
Ubicación: San Luis Potosi
Mensajes: 41
Antigüedad: 14 años, 1 mes
Puntos: 0
De acuerdo Respuesta: PHP y Mysql identificacion segun tipo de usuario

Cita:
Iniciado por xSevix Ver Mensaje
Muchas gracias lo consegui!!!
sera bueno que pongas la solución, para los que despues nos pueda tocar algo similar.
  #11 (permalink)  
Antiguo 05/03/2010, 22:15
Avatar de dcreate  
Fecha de Ingreso: octubre-2009
Ubicación: Veracruz
Mensajes: 536
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: PHP y Mysql identificacion segun tipo de usuario

dejo un aporte, saludos, espero te sirva
  #12 (permalink)  
Antiguo 06/03/2010, 03:23
 
Fecha de Ingreso: marzo-2010
Mensajes: 23
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: PHP y Mysql identificacion segun tipo de usuario

SOLUCION:
<?php
session_start();
//conecto con la base de datos
$conn = mysql_connect("localhost","root","");
//selecciono la BBDD
mysql_select_db("WEB");
$query = "SELECT tipoAcceso FROM usuarios WHERE usuario='$usur' AND password='$pass'";
$result = mysql_query($query);
//echo $result;
$row = mysql_fetch_array($result);
if ($row["tipoAcceso"] == 'usuario') {
header("Location:usuario.php");
}
elseif ($row["tipoAcceso"] == 'administrador') {
header("Location:administrador.php");
}
else {
header("Location:error.php");
}
mysql_close($conn);
?>
  #13 (permalink)  
Antiguo 07/03/2010, 18:39
 
Fecha de Ingreso: marzo-2010
Ubicación: San Luis Potosi
Mensajes: 41
Antigüedad: 14 años, 1 mes
Puntos: 0
De acuerdo Respuesta: PHP y Mysql identificacion segun tipo de usuario

Cita:
Iniciado por xSevix Ver Mensaje
SOLUCION:
<?php
session_start();
//conecto con la base de datos
$conn = mysql_connect("localhost","root","");
//selecciono la BBDD
mysql_select_db("WEB");
$query = "SELECT tipoAcceso FROM usuarios WHERE usuario='$usur' AND password='$pass'";
$result = mysql_query($query);
//echo $result;
$row = mysql_fetch_array($result);
if ($row["tipoAcceso"] == 'usuario') {
header("Location:usuario.php");
}
elseif ($row["tipoAcceso"] == 'administrador') {
header("Location:administrador.php");
}
else {
header("Location:error.php");
}
mysql_close($conn);
?>
GRACIAS amigo, me es de utilidad ya que estoy empezando en php y ahora me toca validar usuarios. muchas gracias.
  #14 (permalink)  
Antiguo 28/07/2010, 16:58
 
Fecha de Ingreso: julio-2010
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: PHP y Mysql identificacion segun tipo de usuario

bueno no se si me podrian ayudar lo ke pasa ke basandome con el codigo ke poner realice lo siguente ... nadamas ke mi conexion es Sql Server 2005 y php ...

mi base de datos consta de lo sigiente en la tabla usuarios:

usuario
password
tipoAcceso

posteriormente Relice mi pagina principal ke es autenticar.php y esta de la siguente manera:

<html>
<head>
<title>Sistema de autenticación</title>
</head>
<body>
<h1><center>Sistema de autenticación </h1>
<form action="control.php" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center"
<?if ($_GET["errorusuario"]=="si"){?>
bgcolor=yellow><span style="color:fa4c6a"><b>Error en los datos introducidos</b></span>
<?}else{?>
bgcolor=#cccccc>Introduce tus datos de acceso
<?}?></td>
</tr>
<tr>
<td align="right">Usuario:</td>
<td><input type="Text" name="usuario" size="9" maxlength="9"></td>
</tr>
<tr>
<td align="right">Password:</td>
<td><input type="text" name="password" size="9" maxlength="9"></td>
</tr>
<tr>
<td align="right">Tipo de Acsseso:</td>
<td><input type="text" name="tipoAcceso" size="15" maxlength="9"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
</tr>
</table>
</form>
<br>

</body>
</html>

y tengo posterior mente a control.php la cual valida al usuario por tipoAcceso y Contraseña ke es sobre la ke me guie de este foro y me keda de la sigiente manera :

<?php
session_start();
//conecto con la base de datos
$conn = mssql_connect("WOLF\SQLEXPRESS","sa","1234") or die ("No conecta con SQLSERVER 2005");
mssql_select_db("bd2",$conn);
$query = "SELECT tipoAcceso FROM usuarios WHERE usuario='$usuario' AND password='$password'AND tipoAcceso='$tipoAcceso'";
$result = mssql_query($query);
//echo $result;
$row = mssql_fetch_array($result);
if ($row["tipoAcceso"] == 'usuario') {
header("Location:mensuario.php");
}
elseif ($row["tipoAcceso"] == 'Administrador') {
header("Location:menu_Administrador.php");
}
else {
header("Location:autenticar.php?errorusuario=si");
}
mssql_close($conn);
?>

bueno me ocurre lo siguiente siempre ke ingreso los datos requeridos y el control de flujo (if,else) me manda al error !!

necesito me ayuden a corregir mi error de ante mano muchas gracias por su ayuda ..

Última edición por GatorV; 28/07/2010 a las 17:17
  #15 (permalink)  
Antiguo 29/12/2011, 20:37
 
Fecha de Ingreso: diciembre-2011
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: PHP y Mysql identificacion segun tipo de usuario

Ok, pana yo por lo general no acostumbro hacer eso de enviarlo a una pagina de verificación, para después enviarlo a la pagina correspondiente del usuario, pudiendo hacer esa verificación en la misma pagina de inicio, pero eso no es el punto tu error esta en los siguiente:
Como lo dijo Vun
Esto no esta bien
$query = "SELECT tipoAcceso FROM usuarios WHERE usuario='$usuario' AND password='$password'AND tipoAcceso='$tipoAcceso'";
Es asi
$query = "SELECT tipoAcceso FROM usuarios WHERE usuario='$usuario' AND password='$password''";
Después revisa bien los campos de los tipos de acceso, si están en mayúscula o minúscula, por ultimo coloca en vez de esto
else {
header("Location:autenticar.php?errorusuario=si");
}
Prueba asi
else {
header("Location:autenticar.php?errorusuario=='si' ");
}

Etiquetas: mysql, tipo, usuarios, identificador
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 08:31.