Foros del Web » Programando para Internet » PHP »

Privilegios de Usuarios

Estas en el tema de Privilegios de Usuarios en el foro de PHP en Foros del Web. Hola a todos. Este tema lo debo encontrar en un sinnumero de Post pero en realidad quiero amoldarlo a mi codigo, es decir que no ...
  #1 (permalink)  
Antiguo 08/11/2017, 08:20
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 450
Antigüedad: 16 años, 1 mes
Puntos: 2
Mensaje Privilegios de Usuarios

Hola a todos. Este tema lo debo encontrar en un sinnumero de Post pero en realidad quiero amoldarlo a mi codigo, es decir que no quiero cambiar mucho mi coodigo porque tendría que cambiar en un monton de paginas. Lo que quiero es tener privilegios de usuarios Admin y usuario normal para el acceso a dichos directorios.


Tengo el siguiente codigo ya funcionando pero me da accceso a todos los directorios de la aplicacion.

Código PHP:

<?php
 
if(isset($_SESSION["session_username"])){
// echo "Session is set"; // for testing purposes
header("Location: index.php");
}
 
if(isset(
$_POST["login"])){
 
if(!empty(
$_POST['username']) && !empty($_POST['password'])) {
 
$username=$_POST['username'];
 
$password=$_POST['password'];
 
$query =mysql_query("SELECT * FROM acceso_login WHERE username='".$username."' AND password='".$password."'");
 
$numrows=mysql_num_rows($query);
 if(
$numrows!=0)
 
{
 while(
$row=mysql_fetch_assoc($query))
 {
 
$dbusername=$row['username'];
 
$dbpassword=$row['password'];
 
$dbnombre $row['nombre'];
 
$id $row['cod_us'];
 
$correo $row['email'];
 
$telefono $row['celphone'];
 
$tipo_user $row['tipo_usuario'];
 
$foto $row['img_profile']; 
     
     
 }
 
if(
$username == $dbusername && $password == $dbpassword)
 
{
 
 
$_SESSION['session_username']=$username;
 
$_SESSION['nombre_usuario'] = $dbnombre;
 
$_SESSION['cod_us'] = $id;    
 
$_SESSION['email'] = $correo;    
 
$_SESSION['celphone'] = $telefono;    
 
$_SESSION['tipo_usuario'] = $tipo_user;    
 
$_SESSION['password'] = $dbpassword;
 
$_SESSION['img_profile'] = $foto;    
 
/* Redirect browser */
 
header("Location: index.php");
 }
 } else {
 
$message "Nombre de usuario ó contraseña invalida!";
 }
 
} else {
 
$message "Todos los campos son requeridos!";
}
}
?>
Tego un campo llamado tipo_user para saber si es admin o user, y quiera como dije anteriormente darles privilegios y no se como hacer, sin cambiar mucho mi codigo. Debo tener una carpeeta user y una carpeta para el usuario Admin


Este es el codigo de sesion de las paginas

Código PHP:
<?php
session_start
();
if(!isset(
$_SESSION["session_username"])) {
 
header("location:logea.php");
} else {
?>
<?php
Espero por favor me pueda colaborar con esto, me urge
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #2 (permalink)  
Antiguo 08/11/2017, 08:46
Avatar de haggenx  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 823
Antigüedad: 17 años, 9 meses
Puntos: 24
Respuesta: Privilegios de Usuarios

y porque cuando lees el tipo de user desde tu consulta, si es admin no lo dejas simplemente que lea la carpeta que le corresponda, si no lo es lea la otra carpeta?, es la manera mas simple.
__________________
Mi blog informático http://marjuanm.blogspot.mx
Fanpage del blog https://www.facebook.com/pages/Mis-p...36397183215592
  #3 (permalink)  
Antiguo 08/11/2017, 14:07
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Privilegios de Usuarios

Varias cosas

1. Pasate a mysqli, o pdo
2. Escapa los datos ingresados por usuario, o te pueden hacer inyection
3. Se entiende que no estás asegurando las contraseñas, ya que no usas ningun tipo de encriptación o hash, aseguralas
4. Si se supone que el usuario es único no es necesario un while siemplemente has esto

Código PHP:
Ver original
  1. $row=mysql_fetch_assoc($query);
  2. $dbusername=$row['username'];
  3. $dbpassword=$row['password'];
  4. $dbnombre = $row['nombre'];
  5. $id = $row['cod_us'];
  6. $correo = $row['email'];
  7. $telefono = $row['celphone'];
  8. $tipo_user = $row['tipo_usuario'];
  9. $foto = $row['img_profile'];

En cuanto a la carpetas, me apunto a haggenx, ¿Por qué no hacesto?

Código PHP:
Ver original
  1. <?php
  2.  
  3. $dir = "user_dir";
  4. if($tipo_user == "admin"){ $dir = "admin_dir"; }
  5.  
  6. ?>
  #4 (permalink)  
Antiguo 08/11/2017, 15:02
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 450
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Privilegios de Usuarios

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
Varias cosas

1. Pasate a mysqli, o pdo
2. Escapa los datos ingresados por usuario, o te pueden hacer inyection
3. Se entiende que no estás asegurando las contraseñas, ya que no usas ningun tipo de encriptación o hash, aseguralas
4. Si se supone que el usuario es único no es necesario un while siemplemente has esto

Código PHP:
Ver original
  1. $row=mysql_fetch_assoc($query);
  2. $dbusername=$row['username'];
  3. $dbpassword=$row['password'];
  4. $dbnombre = $row['nombre'];
  5. $id = $row['cod_us'];
  6. $correo = $row['email'];
  7. $telefono = $row['celphone'];
  8. $tipo_user = $row['tipo_usuario'];
  9. $foto = $row['img_profile'];

En cuanto a la carpetas, me apunto a haggenx, ¿Por qué no hacesto?

Código PHP:
Ver original
  1. <?php
  2.  
  3. $dir = "user_dir";
  4. if($tipo_user == "admin"){ $dir = "admin_dir"; }
  5.  
  6. ?>

Hola Amigo, disculpa, con respecto a los puntos que mencionas

1. Pasate a mysqli, o pdo
2. Escapa los datos ingresados por usuario, o te pueden hacer inyection
3. Se entiende que no estás asegurando las contraseñas, ya que no usas ningun tipo de encriptación o hash, aseguralas
4. Si se supone que el usuario es único no es necesario un while siemplemente has esto

¿Cómo me paso a mysqli p pdo?
¿Cómo escapo a los datos ingresados por usuarios, qué debo hacer?
¿COmo me aseguro las contraseñas?

Lo de los directorios admin_dir y user_dir donde ingreso esta info? en el codigo de session?

Podias ayudare un poco mas? Soy algo novato en php.
Bendiciones
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #5 (permalink)  
Antiguo 08/11/2017, 15:51
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Privilegios de Usuarios

pasarle a mysqli es como mysql pero con sus respectivas funciones

conexion: mysqli_connect(host,user,pass,db);
en mysqli no se usa select_database, derechamente se poner en la conexión

peticion: mysqli_query($conexion,$query)
En $conexion, poner la variable en donde hiciste la conexion
En $query pones la peticion
Ex.

$con = mysqli_connect(host,user,pass,db);
$q = mysqli_query($con,"SELECT * FROM tabla");

Y así... con todo, te dejo la documentación
http://php.net/manual/es/book.mysqli.php

---

escapar, es cerciorar que no se haga ningun tipo de hack, y ya que estamos en mysqli
$username = mysqli_real_escape_string($con, $_POST['username']);
De todas maneras te invito a que investigues sobre inyection sql y otros tipos de hackeo mediante sql y creés tus propias validaciones

---

Inicialmente lo ideal es guardar las contraseñas con un hash por ejemplo md5
Entonces cuando crees un nuevo usuario asegurate de darle md5
"INSERT INTO usuarios (col1,col2. ... , colpass) VALUES (var1,var2, ..., '".md5($pass)."')"
Donde $pass es la variable donde esta la clave
Y lo mismo para el login

$password=md5($_POST['password']);

Ojo que md5 ya no es muy seguro, y además solo darle hash tampoco es la mejor manera hay que encriptar, solo te di un empujoncito en cuanto seguridad, es tu deber aprender más acerca de seguridad e implementación

---

En cuanto a lo ultimo, la idea es que si vas a hacer uso de 2 carpetas, 1 para c/tipo de usuario, hay que definir que carpeta vas a usar, por eso lo que yo hago es, primero decir que la carpeta será del tipo usuario y si el usuario es admin la carpeta sera tipo admin

Código PHP:
Ver original
  1. <?php
  2. $carpeta_user = "carpeta_usuario";
  3. $carpeta_admin = "carpeta_admin":
  4. $carpeta_uso = $carpeta_user;
  5.  
  6. if($_SESSION['tipo_usuario'] == "admin"){ $carpeta_uso = $carpeta_admin; } //en $_SESSION['tipo_usuario']  == "admin" comparalo con el valor que tienes para el tipo de usuario administrador
  7.  
  8. ///Ahora que ya tienes $carpeta_uso, en el resto del código trabajas con esa carpeta
  9.      
  10. ?>

Espero poder ayudar

Última edición por alvaro_trewhela; 08/11/2017 a las 15:58
  #6 (permalink)  
Antiguo 08/11/2017, 16:11
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 450
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Privilegios de Usuarios

Hola, disculpa, pero esta parte no logro entenderla, donde va?

<?php
$carpeta_user = "carpeta_usuario";
$carpeta_admin = "carpeta_admin":
$carpeta_uso = $carpeta_user;

if($_SESSION['tipo_usuario'] == "admin"){ $dir = $carpeta_admin; } //en $_SESSION['tipo_usuario'] == "admin" comparalo con el valor que tienes para el tipo de usuario administrador

Ahora que ya tienes $carpeta_uso, en el resto del código trabajas con esa carpeta

Espero poder ayudar

?>
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #7 (permalink)  
Antiguo 08/11/2017, 20:37
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Privilegios de Usuarios

Usalo en donde tengas que usarlo, ya tienes el tipo de usuario en una $_SESSION con ella, el código que te di te dice que carpeta usar dependiendo el tipo de usuario, incluso te voy a dejar una funcion que es más simple:


Deja esta función que te deje en la parte de arriba de tu código, ni lo toques, solo dejalo arriba

Código PHP:
Ver original
  1. function carpeta_a_usar($carpetaUsuario, $carpetaAdmin, $tipoUsuario){
  2.  
  3. if($tipoUsuario == "admin"){ return $carpetaAdmin; }
  4. if($tipoUsuario == "usuario"){ return $carpetaUsuario; }
  5. return null;
  6. }

En ese código cambia la linea 3 y 4 por los valores que tienes fijado para tipo de usuario

¿Como usarlo?

Código PHP:
Ver original
  1. $carpeta_uso = carpeta_a_usar("directorio-de-tu-carpeta-admin", "directorio-de-tu-carpeta-usuario", $_SESSION['tipo_usuario']);

Entonces dependiendo de la sesion te dirá que directorio usar. ojo aplique por seguridad que retorne nulo si el tipo de usuario es incorrecto, solo por seguridad... asique tendrías que validar

Código PHP:
Ver original
  1. $carpeta_uso = carpeta_a_usar("directorio-de-tu-carpeta-admin", "directorio-de-tu-carpeta-usuario", $_SESSION['tipo_usuario']);
  2.  
  3. if(!empty($carpeta_uso)){
  4. //aca tu código para acceso de carpeta, ya sea leer la carpeta o leer un archivo
  5. }

Te repito usalo donde sea necesario, pero creo que tendría que ir en el utlimo código del primer post. y quedaría así

Código PHP:
Ver original
  1. <?php
  2. function carpeta_a_usar($carpetaUsuario, $carpetaAdmin, $tipoUsuario){
  3.  
  4. if($tipoUsuario == "admin"){ return $carpetaAdmin; }
  5. if($tipoUsuario == "usuario"){ return $carpetaUsuario; }
  6. return null;
  7. }
  8.  
  9. if(!isset($_SESSION["session_username"])) {
  10. header("location:logea.php");
  11. }
  12. else{
  13. $carpeta_uso = carpeta_a_usar("directorio-de-tu-carpeta-admin", "directorio-de-tu-carpeta-usuario", $_SESSION['tipo_usuario']); //con esto te dice que carpeta usar, y queda guardado en la variable $carpeta_uso
  14.     if(!empty($carpeta_uso)){
  15.     //aca tu código para acceso de carpeta, ya sea leer la carpeta o leer un archivo
  16.     }
  17. }
  18. ?>

Etiquetas: mysql, nombre, privilegios, select, 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




La zona horaria es GMT -6. Ahora son las 21:34.