Foros del Web » Programando para Internet » PHP »

usuarios si, usuarios no...

Estas en el tema de usuarios si, usuarios no... en el foro de PHP en Foros del Web. Hola queridos amigos del cerebrito loco. Este es el mejor sitio de internet leeeejos y gracias a ustedes he aprendido muchisimo y me llena de ...
  #1 (permalink)  
Antiguo 28/06/2012, 21:01
Avatar de asus090102  
Fecha de Ingreso: mayo-2012
Ubicación: Ensenada- Buenos Aires
Mensajes: 67
Antigüedad: 11 años, 11 meses
Puntos: 1
usuarios si, usuarios no...

Hola queridos amigos del cerebrito loco. Este es el mejor sitio de internet leeeejos y gracias a ustedes he aprendido muchisimo y me llena de orgullo poder escribirles.
Esta vez tengo una pequeña duda:
Tengo mi base mysql y mi sitio armado con php, seguridad por usuarios registrados en mi base de datos y un funcionamiento perfecto.
Lo que quisiera aprender (que me ayuden porfa) es: Quisira ver que segun el usuario logueado, este pueda ver ciertos campos y botones de mi index php. De esta forma podria tener o no acceso a ciertas zonas del sitio. Un administrador vería todo y los demas usuarios verian solo lo que se le condiciona. Es posible, hay código para esto?

Por ahora mi seguridad es esta:
Código PHP:
<?
require 'conexion.php' ;
if(
$_POST[enviar]) {
function 
quitar($texto) {
$texto trim($texto) ;
$texto htmlspecialchars($texto) ;
# --> Elimina espacios que no pueden ser borrados por trim()
$texto str_replace(chr(160),'',$texto) ;
return 
$texto ;
}
$nick quitar($_POST[nick]) ;
$contrasena md5(md5(quitar($_POST[contrasena]))) ;
$con mysql_query("select id,contrasena from usuarios where nick='$ni$
$datos = mysql_fetch_assoc($con) ;
if(mysql_num_rows($con)) {
if($datos[contrasena] == $contrasena) {
setcookie('uid',$datos[id],time()+604800) ;
setcookie('unick',$nick,time()+604800) ;
setcookie('ucontrasena',$contrasena,time()+604800) ;
header("
location$_SERVER[HTTP_REFERER]") ;
}
else {
echo 'La clave es incorrecta.' ;
}
}
else {
echo 'El nick no existe.' ;
}
}
?>


Código PHP:
<?
require 'conexion.php' ;
if(
$_POST[enviar]) {
function 
quitar($texto) {
$texto trim($texto) ;
$texto htmlspecialchars($texto) ;
# --> Elimina espacios que no pueden ser borrados por trim()
$texto str_replace(chr(160),'',$texto) ;
return 
$texto ;
}
$nick quitar($_POST[nick]) ;
$contrasena md5(md5(quitar($_POST[contrasena]))) ;
$con mysql_query("select id,contrasena from usuarios where nick='$ni$
$datos = mysql_fetch_assoc($con) ;
if(mysql_num_rows($con)) {
if($datos[contrasena] == $contrasena) {
setcookie('uid',$datos[id],time()+604800) ;
setcookie('unick',$nick,time()+604800) ;
setcookie('ucontrasena',$contrasena,time()+604800) ;
header("
location$_SERVER[HTTP_REFERER]") ;
}
else {
echo 'La clave es incorrecta.' ;
}
}
else {
echo 'El nick no existe.' ;
}
}
?>
M U C H I S I M A S G R A C I A S ! ! ! ! ! !
  #2 (permalink)  
Antiguo 28/06/2012, 21:13
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: usuarios si, usuarios no...

Código PHP:
Ver original
  1. $con = mysql_query("select id,contrasena from usuarios where nick='$ni$
  2. $datos = mysql_fetch_assoc($con) ;
  3. if(mysql_num_rows($con)) {
  4. if($datos[contrasena] == $contrasena) {
  5. setcookie('uid',$datos[id],time()+604800) ;
  6. setcookie('unick',$nick,time()+604800) ;
  7. setcookie('ucontrasena',$contrasena,time()+604800) ;
y esto que es?
mezclas una consulta sql con cookies y condicionales if?

te esta faltando cerrar alguna comilla por ahi fijate
  #3 (permalink)  
Antiguo 28/06/2012, 21:18
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: usuarios si, usuarios no...

Joder, no puedo evitar comenzar con "jalarte las orejas", como es posible que guardes la contraseña en una cookie, no importa si "hasheas" dos veces la contraseña, es lo mas inseguro que puedas hacer, aparte, no usas comillas en los "index" de los super array $_SERVER, $_POST, etc, siempre debes usar comillas ya que PHP los puede interpretar como "constantes", en fin, para tu problema, deberás guardar en una cookie el "nivel" de usuario, así después puedes verificar el nivel del usuario y mostrar u ocultar código HTML..., solo una cosa, te recomiendo encarecidamente que para esto no uses cookies, usa sesiones, o si las usas "hashes" o encriptes el valor y no uses nombres obvios para que los usuario no esten "tentados" de manipular el valor de dicha cookie y que se haga pasar por un administrador por ejemplo...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 28/06/2012, 21:26
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: usuarios si, usuarios no...

Como dice este señor, las cookies son totalmente manipulables, si vos dejas una cookie en mi pc, yo la abro, veo su contenido, y si los datos en esa cookie no corresponden a mi usuario entonces ya me hice con un usuario que no me corresponde, USA VARIABLES DE SESSION
  #5 (permalink)  
Antiguo 28/06/2012, 22:02
Avatar de asus090102  
Fecha de Ingreso: mayo-2012
Ubicación: Ensenada- Buenos Aires
Mensajes: 67
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: usuarios si, usuarios no...

ok ok ok ok, NO SE ME PONGAN VIOLENTOS, JAJAJAJA. Lo de las comillas y malas escrituras es porque ese es el código de un block de notas que deje a medio terminar ya que no tengo en este momento el ingreso a la base como para copiar el codigo correcto, perdon por eso, Y con el tema de las cookies tienen toda la razon pero trate de entender como crear sesiones y no me dio la cabeza o no le preste la suficiente atencion. Y por eso utilize este método. Voy a reveer el tema de las sesiones, gracias por las respuestas .

Empiezo por aca?
http://www.forosdelweb.com/f142/configurar-manejo-sesiones-924279/

Última edición por asus090102; 28/06/2012 a las 22:33
  #6 (permalink)  
Antiguo 28/06/2012, 22:43
Avatar de Chico3001  
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 12 años, 7 meses
Puntos: 12
Respuesta: usuarios si, usuarios no...

Yo lo hago simple... al inicio de cada pagina mando llamar un archivo que se encarga de revisar los permisos... y en base a eso voy construyendo los menus...

Al loguearse el usuario le asigno un token que almaceno en la variable de sesion, despues cuando entra a diferentes partes reviso ese token contra lo que esta almacenado en la base de datos y ejecuto una serie de acciones secuenciales

primero se revisa si la sesion ha expirado, en caso negativo redirijo a la persona a la ventana de login para que se de de alta de nuevo, en el caso contrario actualizo la hora de expiracion y obtengo los permisos del usuario, que almaceno en un objeto

Y con eso voy construyendo el menu del siguiente modo:

Código PHP:
$menu_sup = new menu();
$menu_sup->anadir('Opcion 1''opcion1.php''clase_menu');
if (
$utilz->(level1))
    
$menu_sup->anadir('level1''level1.php''clase_menu');
if (
$utilz->admin())
    
$menu_sup->anadir('Admin''admin.php''clase_menu'); 
Y asi me la voy llevando hasta terminar los menus...
  #7 (permalink)  
Antiguo 01/07/2012, 10:45
Avatar de asus090102  
Fecha de Ingreso: mayo-2012
Ubicación: Ensenada- Buenos Aires
Mensajes: 67
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: usuarios si, usuarios no...

uuuhhh, buenisimo, entendí, ya me pongo, gracias por la ayuda. Muy groso lo tuyo. Un abrazo grande

Etiquetas: html, mysql, sql, 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 09:28.