Foros del Web » Programando para Internet » PHP »

Restringir usuario

Estas en el tema de Restringir usuario en el foro de PHP en Foros del Web. Alguien que me pueda ayudar: Recien empece a dar mis primeros pasos en php y realice un script para que los usuarios inicien sesion y ...
  #1 (permalink)  
Antiguo 13/10/2008, 17:57
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Restringir usuario

Alguien que me pueda ayudar:

Recien empece a dar mis primeros pasos en php y realice un script para que los usuarios inicien sesion y los redirija a una X pagina del sitio, pero si no inician sesion y apuntan la url les abre perfectamente y yo no quiero que vean esa pagina a menos que se loguen, que necesito a parte del script de inicio:

<?
session_start();
$srv="localhost"; //server mysql
$bdname="x"; // nombre bd
$bduser="x"; // user mysql
$bdpass="x"; //contraseña del user mysql
$user = $_POST['user'];
$pass1 = $_POST['pass'];
$ssql="SELECT * FROM tabla WHERE user='" . $user . "'";
$link=mysql_connect($srv,$bduser,$bdpass);
$result=mysql_db_query($bdname,$ssql,$link);
if(!mysql_num_rows($result)){
echo "Usuario desconocido.";
} else {
$rs=mysql_fetch_array($result);
if($rs["pass1"]==$pass1 ){
$SESSION["user"]=$user;
session_register("SESSION");
header("location: miweb.html");
} else {
echo "El nombre de ususario o el password son incorrectos.";
}
}
?>
  #2 (permalink)  
Antiguo 13/10/2008, 18:08
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: Restringir usuario

lo ideal es una base de datos con la tabla usuarios donde este detallado el permiso que tienen, y luego comprobar a travez de php que el permiso sea el adecuado para mostrar tales contenidos, no solamente que el usuario este en la base de datos porque siertas partes de la web no vas a querer que la vean cualquiera como ser una parte administrativa o algo que modifique la estructura de tu web, una vez que tengas 'dibujada' la base de datos ejemplo simple:

Código PHP:
idUsuario
Login
Pass
Permiso
Email 
ya teniendo estos datos podemos usar una sola pagina pero la informacion va a depender del permiso ejemplo

suponiendo que los datos se guradaron en la variable global $_SESSION

Código PHP:
$permiso $_SESSION['permiso'];

if (
$permiso>200){
     
$html .= 

                     
'<p> Esto solo lo ven usuarios con permiso mayor a 200 <p>';
}

echo 
$html
  #3 (permalink)  
Antiguo 13/10/2008, 21:00
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Restringir usuario

Muchas gracias SAMU22 por tu respuesta, pero creo que el problema continua porque si en vez de un ECHO utilizamos un HEADER para redirecccionar a una pagina este codigo que propones no va a bloquear dicha pagina, es decir, cualquiera podria entrar tranquilamente con solo escribir la url. Detallando un poco mas, el punto es que si el usuario hace login, despues el php lee:

header("location: $user.html");

De este modo lo envio a una pagina personal, en ejemplo si el usuario fuera (dani) el codigo lo redirecciona a www.miweb/dani.html pero si yo escribo esta direccion sin hacer login me deja ver esa pagina sin ninguna restriccion, eso es lo que quiero evitar.

Navegando un poco me encontre con un codigo que pense era la solucion a mis problemas, pero por desgracia no me funciono.


Código PHP:

<?php

   
// Comprobar
   
if (!isset($PHP_AUTH_USER))
      {
      
header('WWW-Authenticate: Basic realm=" Zona Restringida "');
      
header('HTTP/1.0 401 Unauthorized');
      echo 
'ZONA RESTRINGIDA: se requiere autorización.';
      exit();
      }

   
// solo usuarios autorizados
    
if (($PHP_AUTH_USER != 'usuario') || ($PHP_AUTH_PW != 'contraseña'))
      {
      
header('WWW-Authenticate: Basic realm=" Zona Restringida "');
      
header('HTTP/1.0 401 Unauthorized');
      echo 
'ZONA RESTRINGIDA: se requiere autorización.';
      exit();
      }

   
// Si todo es correcto, le dejamos pasar...
   
else
      {
  
header("location: $user.html");
      }

?>


Por lo tanto si tienes alguna otra opcion te lo agradecere infinitamente.
  #4 (permalink)  
Antiguo 13/10/2008, 21:24
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: Restringir usuario

hola fredrick24 en realidad lo que hace el codigo que mostrarte no es bloquear, ya que la pagina existe, si lo que queres es cargar una pagina solamente si el usuario esta logueado (cuando te logueas comprobas que el usuario existe en la base de datos) es como te lo explique antes solo que cambias los datos a comprar, en vez de ver si tiene permiso compruebas si existe la la id de session o algun dato

Código PHP:
if (isset($_SESSION['ID'])){
        
//si esta seteada $_SESSION['ID']
        // cargamos la pagina que van a ver nuestro usuario registrados
        // tambien podemos comprobar que permisos tienen para ver esta seccion
       
$permiso $_SESSION['permiso']
 
       if(
$permiso>200){
                 
//aca podriamos ejecutar una funcion que contenga el contenido html de un seccion
                 
loadPanel('Admin');
       }else{
                 
loadPanel();
        
}else{ 
// si el usuario no esta logueado
       
$html ' la pagina requiere autentificacion </br>';
       
loadForm('login');

Si el usuario no esta logueado le va a decir que la pagina requiere autorizacion y le va a poner un formulario de loguin por ejemplo (si la funcion loadForm existe)

para mandar a una pagina personal podrias usar variables por get y te ahorrarias de crear una pagina por usuario, luego con las funciones podrias ver que le corresponde a cada uno o con mysql.

eso lo tenes que comprobar en cada pagina que quieras proteger o quieras mostras a ciertos usuarios, obvio que si despues redireccionas a otra pagina que no contenga esta comprobacion va a verse que cualquier otra pagina

Última edición por samu22; 13/10/2008 a las 21:30
  #5 (permalink)  
Antiguo 13/10/2008, 22:10
Avatar de Celcius  
Fecha de Ingreso: febrero-2003
Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 21 años, 2 meses
Puntos: 5
Respuesta: Restringir usuario

Voy a tomar algunas ideas de éste Post... Muy bueno. Por lo pronto te digo que acabo de hacer una consulta similar a la tuya, solo que yo he hecho un auntentificador y quiero que lo prueben. Puedes descargarlo para que lo estudies si deseas, un saludo:
http://www.forosdelweb.com/f18/echen...icador-633995/
__________________
"Si tú conocieras el don de Dios, y quién es el que te dice: 'Dame de beber,' tú Le habrías pedido a El, y El te hubiera dado agua viva.
Sn. Juan 4:19
Jesus
  #6 (permalink)  
Antiguo 14/10/2008, 09:11
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Restringir usuario

Gracias SAMU22 y Celcius por sus respuestas.

Creo que por fin voy entendiendo y me parece muy pertinente lo que dice SAMU22 asi que me parece que no hay mas que ponerme a trabajar, ya les contare el resultado.
  #7 (permalink)  
Antiguo 14/10/2008, 09:27
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Restringir usuario

Que tal fredrick24, para que te empapes un poco mas lee este post que hace parte de los aportes del foro, creo que hace exactamente lo que necesitas, solo adaptalo con tus datos.
http://www.forosdelweb.com/f18/aport...aporte-561417/.



Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"

Última edición por Carlojas; 15/10/2008 a las 09:35
  #8 (permalink)  
Antiguo 15/10/2008, 09:08
 
Fecha de Ingreso: septiembre-2008
Mensajes: 22
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Restringir usuario

Muchas gracias Carlojas, es un gran aporte como todo en foros de web.
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 17:49.