PHP - Login segun nivel de acceso y paso de sesion

   
Vista:

Login segun nivel de acceso y paso de sesion

Publicado por Caruso (27 intervenciones) el 28/11/2013 22:05:30
Hola!

Tengo el siguiente codigo en php, no se si esta del todo bien, se que es recomendable usar funciones, pero lo hice asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
include("../../includes/php/conexion.php");
$conexion=conectarDB();
mysql_select_db("sgp",$conexion);
//obtener datos de html
$user = $_POST['user'];
$pass = $_POST['pass'];
//tomar datos en bd
$queryuser="SELECT idUsuario from usuarios where username='$user'";
$buscaruser=mysql_query($queryuser,$conexion) or die( "Error en " . mysql_error() );
$querypass="SELECT * from usuarios where username='$user'";
$validaruser=mysql_query($querypass,$conexion);
 
//manipular datos
$row=mysql_fetch_array($validaruser);
$existe=mysql_num_rows($buscaruser);
 
if ($_POST['Enviar']){
    if($user!='' && $pass!=''){
          if ($existe>0){
                if($row['password']==$pass){
                    if ($row['idTipoUsuario']=1){
                        Header("Location: ../../aplicaciones/usuarios.php");
                    }
                    else if ($row['idTipoUsuario']=2){
                        Header("Location: ../../aplicaciones/administradores.php");
                    }
                }
                else{
                    echo "contraseña incorrecta";
                }
          }
          else{
            echo "Ese usuario no existe";
          }
    }
    else{
        echo "Complete todos los campos";
    }
 
}
 
?>

Ahora tambien quiero saber, en caso tanto de que sea user normal o admin, como le paso el id de session?
Lo que no me funciona hasta ahora es que siempre se loguea como normal
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Login segun nivel de acceso y paso de sesion

Publicado por xve (5516 intervenciones) el 29/11/2013 07:57:12
Hola Caruso, como siempre comenta nuestra amiga Carmen en el foro, es recomendable no utilziar mysql_.... ya que en breve dejara de funcionar... mucho mejor mysqli o pda

sobre tu código, veo que ejecutas dos veces la consulta en la tabla usuarios, yo lo haría una única vez, y colocaría el código de base de datos dentro del if, cuando ya sabes si ha enviado los datos...

Siempre te cogia como usuario el tipo 1, porque la comparación, es con dos iguales (==).

Para saber si un usuarios es del tipo 1 o 2, yo utilizaría una variable de sesión... me he permitido modificar un poco el código para que lo veas... espero que te sirva...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
session_start();
 
include("../../includes/php/conexion.php");
$conexion=conectarDB();
mysql_select_db("sgp",$conexion);
 
if(isset($_POST['Enviar'])){
    //obtener datos de html
    $user = $_POST['user'];
    $pass = $_POST['pass'];
 
    if($user!='' && $pass!=''){
        //tomar datos en bd
        $querypass="SELECT * from usuarios where username='$user'";
        $validaruser=mysql_query($querypass,$conexion);
 
        //manipular datos
        $row=mysql_fetch_array($validaruser);
        $existe=mysql_num_rows($buscaruser);
 
        if ($existe>0)
        {
            if($row['password']==$pass)
            {
                if ($row['idTipoUsuario']==1)
                {
                    $_SESSION["TipUsuario"]==1;
                    Header("Location: ../../aplicaciones/usuarios.php");
                }else if ($row['idTipoUsuario']==2){
                    $_SESSION["TipUsuario"]==2;
                    Header("Location: ../../aplicaciones/administradores.php");
                }
            }else{
                echo "contraseña incorrecta";
            }
        }else{
            echo "Ese usuario no existe";
        }
    }else{
        echo "Complete todos los campos";
    }
}
?>

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login segun nivel de acceso y paso de sesion

Publicado por Caruso (27 intervenciones) el 30/11/2013 05:55:37
hola.. muchas gracias por tu ayuda. La variable $existe es mysql_num_rows($validaruser), y no mysql_num_rows($buscaruser), corrigiendo esto anduvo bien... Ahora lo que necesito es cuando entro en usuario.php, que es el usuario normal, saber el idUsuario, para identificar la cuenta de ese usuario y lo que quiera hacer el.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Login segun nivel de acceso y paso de sesion

Publicado por xve (5516 intervenciones) el 30/11/2013 22:07:06
Hola Caruso, gracias por comentarlo...

Sobre tu segunda pregunta, si también deseas obtener el id del usuario, añádelo a la sesión... algo así:

1
2
3
...
$_SESSION["idUsuario"]=$row['id'];
...

NOTA: No se que nombre tiene el campo id...

De esta manera, en cualquier página, haciendo referencia a esa variable, tendrás el id del usuarios.

Coméntanos si te sirve.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login segun nivel de acceso y paso de sesion

Publicado por Caruso (27 intervenciones) el 01/12/2013 17:32:23
Hola me funciono.. gracias..

Pero, en log.php que procesa el login pongo
1
$_SESSION["idUsuario"]=$row['id']

en log.php tengo enlace a usuarios que el user normal por ej:

1
Header("Location: ../../aplicaciones/usuarios.php?id='$id'");

Y luego ahi tengo ver perfil y modificar perfil. Ahora como vuelvo a pasar el id? Debo hacer obviamente que se reconozca por ese id cual es el usuario para mostrar el perfil del logueado..
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login segun nivel de acceso y paso de sesion

Publicado por Caruso (27 intervenciones) el 02/12/2013 13:46:50
Claro pero como hago para que si es usuario normal, redirija usuario.php con el idUsaurio, pero que ademas si hace click por ejemplo en verperfil, verperfil.php reciba su id para que muestre el perfil de ese user y no cualquiera?

Muchas gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Login segun nivel de acceso y paso de sesion

Publicado por xve (5516 intervenciones) el 02/12/2013 14:23:01
Hola Caruso, a mi modo de ver, no tienes que pasar siempre el id, si ya lo tienes en la variable de session.
La variable de sesión contendrá esa información en cualquier lugar como una variable cualquiera mientras dure la sesión.

Coméntanos si tienes dudas, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login segun nivel de acceso y paso de sesion

Publicado por Caruso (27 intervenciones) el 02/12/2013 18:03:45
ok me anduvo:


en log.php
1
$_SESSION["idUsuario"]=$row['idUsuario'];

Y en usuarios.php:

1
2
3
4
5
6
7
8
<?php echo "<a href='../usuarios/verperfil.php?id=".$_SESSION['idUsuario']."'>
					<img src='../imgs/edit_user.png'/>	Ver datos personales
				    </a>"?>
                </td>
                <td>
                    <?php "<a href='../aplicaciones/includes/modificardatos.php?id=".$_SESSION['idUsuario']."'>
					<img src='../imgs/edit_user.png'/>	Modificar datos personales
				    </a>"?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Login segun nivel de acceso y paso de sesion

Publicado por xve (5516 intervenciones) el 02/12/2013 21:49:23
Gracias por comentarlo Caruso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar