Foros del Web » Programando para Internet » PHP »

Restringir acceso a pagina con sesion

Estas en el tema de Restringir acceso a pagina con sesion en el foro de PHP en Foros del Web. Intento restringir el acceso directo a paginas colocando este script en cada pagina, el todo esta funcionando perfectamente menos esto, alguien sabe ver que esta ...
  #1 (permalink)  
Antiguo 03/02/2009, 08:35
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 2 meses
Puntos: 0
Restringir acceso a pagina con sesion

Intento restringir el acceso directo a paginas colocando este script en cada pagina, el todo esta funcionando perfectamente menos esto, alguien sabe ver que esta mal en las variables?

<?
//Inicio la sesion
session_start();
session_register("autentificado");
//compruebo que el usuario este autentificado
if($autentificado!="SI"){
//si no existe, va a la pagina de loggin
header("Location: index.php");
exit();
}
//salgo del script
exit();
}
?>

Gracias a todos
  #2 (permalink)  
Antiguo 03/02/2009, 08:56
Avatar de eft0  
Fecha de Ingreso: junio-2003
Ubicación: Santiago - Chile
Mensajes: 635
Antigüedad: 20 años, 10 meses
Puntos: 9
Respuesta: Restringir acceso a pagina con sesion

DejaVu? Duplicado.
__________________
eft0's stuff! - http://estebanfernandez.net
  #3 (permalink)  
Antiguo 03/02/2009, 09:09
Avatar de FabianSN  
Fecha de Ingreso: enero-2007
Ubicación: SNicolas, BsAs, Argentina
Mensajes: 96
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Restringir acceso a pagina con sesion

Fijate este post
http://www.forosdelweb.com/f18/_session-session_register-mismo-403973/

Pero tambien creo que estas lineas, están demás
Código PHP:
//salgo del script 
exit(); 

__________________
Letra de Canciones
  #4 (permalink)  
Antiguo 03/02/2009, 09:14
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Restringir acceso a pagina con sesion

session_register() esta obsoleto. Utiliza $_SESSION['foo'] = 'bar';

:P Espero que eso solo sea un ejemplo, ya que si asignas siempre el valor de la variable en el mismo script, nunca entrara al if().
  #5 (permalink)  
Antiguo 04/02/2009, 04:20
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Restringir acceso a pagina con sesion

En primer lugar muchas, muchas gracias por las respuestas. Para no rizar mas el rizo os expongo el problema completo.

Es una "aplicacion" en la cual cada usuario accede a su pagina mediante una consulta a una BBDD mysql, esto ya esta funcionando, os paso el codigo:

Estructura
Pagina de loggin index.php (formaction= foroweb.php en honor a este foro

El foroweb.php que es la pagina que procesa el formulario tiene el siguiente codigo:

<?

$nombre_usuario= $_POST['nombre'];
$clave_usuario= $_POST['clave'];
//conecto con la base de datos
$conn = mysql_connect("localhost","****","****");
//selecciono la BBDD
mysql_select_db("agentes",$conn);

//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM usuario WHERE nombre_usuario='$nombre_usuario' and clave_usuario='$clave_usuario'";

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($rs)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
//autentificado sería una variable de sesión
//en la instrucción que sigue lo que se está haciendo es cargar el identificador de sesión
//en la variable de sesión, para comprobar a posteriori en seguridad.php si puedo o no
//autorizar el paso al individuo que lo solicita
$autentificado=session_id();
//con la función: mysql_fetch_row lo que se pretende es cargar los valores de los campos de
//una determinada fila, a los cuales se puede acceder luego como si de una matriz se tratara
$row = mysql_fetch_row($rs);
//el campo que he insertado en la tabla es el último de un total de 11, de ahí que acceda
//a la posición 10, ya que empezamos a contar de 0
header ("Location: $row[2]");
}else{
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>

Todo esto funciona perfectamente, ahora y es ya el ultimo paso necesito restringir el acceso directo mediante la barra de direcciones a las paginas de usuarios no autorizados.

Una vez mas gracias por vuestro tiempo y paciencia.
  #6 (permalink)  
Antiguo 04/02/2009, 07:27
Avatar de darthcolo  
Fecha de Ingreso: enero-2009
Mensajes: 51
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Restringir acceso a pagina con sesion

Yo hice algo parecido a lo tuyo.

Tengo dos paginas:
1) login.php
2) consulta.php

Dentro de login.php chequeo que el usuario pertenezca a la Base de Datos, y si pertenece, hago global una variable con:
Código PHP:
$_SESSION['pertenece']='1'
(previamente creo la sesion con session_start()). Si el usuario existe lo redirijo a la pagina consulta.php mediante la sentencia header(...).

Dentro de la pagina consulta.php, continuo la sesion del usuario con session_start().
Inmediatamente después, chequeo que la variable 'pertenece' sea igual a 1. Si no lo es, mato la sesion con session_destroy() y lo redirijo a login.php con la sentencia header().

Lo que produce esto, es que si un usuario escribe en la barra de direcciones: www.zzz.com/consulta.php para entrar a consultar directamente sin haber logueado, al no tener la sesion iniciada, se mostrará automaticamente la pagina login.php obligando al usuario a que se loguee.

Espero que te sirva. Saludos!
  #7 (permalink)  
Antiguo 04/02/2009, 07:52
Avatar de acumulador  
Fecha de Ingreso: junio-2008
Ubicación: Medellin - Antiquia
Mensajes: 459
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Restringir acceso a pagina con sesion

que tal si haces esto;
1. Creas un archivo php html con un formulario de login
2. Luego validas el usuario asi:
<?php ob_start();
include('conex.php');
// en este conex.php lo que tengo es la conexion a la base de datos
$sql="select * from usuarios where usuario='".$_POST['usuario']."' and clave='".$_POST['clave']."'";
$inisql=mysql_query($sql);
$rs=mysql_fetch_array($inisql);
$n=mysql_num_rows($inisql);
3. Si comprobas que esta autorizado con usuario y contraseña lo direccionas a otra pagina o al index para que no pueda acceder; ojo si tiene permiso creas una variable de session para validar en otras paginas
if($n<1){
header("location:index.php");
}else{
//debo iniciar una sesion
session_start();
$_SESSION['ses_us']=$rs['nombre'];
}
ob_end_flush(); ?>
4. ahora en las otras paginas que deseas bloquear de bes preguntar por la variable de sessio que creaste; en mi caso $_SESSION['ses_us']
de esta forma:
<?php
ob_start();
if(!isset($_SESSION['ses_us'])){
header("location:index.php");
//no ha iniciado sesion en el formulario inicial
}else{
echo "Bingo podes entrar";
}
ob_end_flush(); ?>

Espero te sirva, a mi me funciona perfectamente.
__________________
-----------------------------------------------------------------------------
Yo vivo de preguntar, saber no puede ser lujo...
  #8 (permalink)  
Antiguo 04/02/2009, 12:27
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Respuesta: Restringir acceso a pagina con sesion

darthcolo:

Creo que van por hay los tiros pero podria ver el codigo? No se si eso es pedir una burrada ya que soy nuevo en estos temas. Apenas se escribir nada sin mira foros o tutoriales. Si se puede bien sino pues gracias.

Acumulador:

El caso es que la base de datos envia al visitante cada uno a su pagina y creo que en tu ejemplo es diferente ¿mo?
  #9 (permalink)  
Antiguo 04/02/2009, 12:55
Avatar de darthcolo  
Fecha de Ingreso: enero-2009
Mensajes: 51
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Restringir acceso a pagina con sesion

Cita:
Iniciado por pique Ver Mensaje
darthcolo:

Creo que van por hay los tiros pero podria ver el codigo? No se si eso es pedir una burrada ya que soy nuevo en estos temas. Apenas se escribir nada sin mira foros o tutoriales. Si se puede bien sino pues gracias.

Acumulador:

El caso es que la base de datos envia al visitante cada uno a su pagina y creo que en tu ejemplo es diferente ¿mo?
Esto es lo que tengo yo:

Pagina: loguin.php

Código PHP:
if(usuario esta en la base de datos){
session_start(); // Debe estar en la otra pagina tambien
$_SESSION['loguin']='1'//Convierte la variable "loguin" en global para ESTA sesion
header("Location: http://...../consulta.php"); // Cargo la pagina que debe poder ver el usuario logueado exitosamente

Pagina: consulta.php

Código PHP:
session_start(); // Continuo la sesion creada en la otra pagina
if($loguin!='1'){ // Si no esta continuando la sesion
    
header("Location: http://...../loguin.php");
    
session_destroy(); //Termino la sesion iniciada por la otra pagina

Espero que te sirva. Saludos!
  #10 (permalink)  
Antiguo 05/02/2009, 02:15
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Restringir acceso a pagina con sesion

Bueno, lo he probado todo y nada, lo que no falla por un lado falla por otro. Es una pensa por que solo necesitaba restringir el acceso directo a las paginas y todo estaba listo, el loggin, la base de datos...

Si a alguien le interesa ayudarme de forma privada, de pago o como sea estare encantado, mi tel es 615 213 913, mi skype david.subindice españa madrid y mi correo [email protected]

Gracias a todos por vuestro esfuerzo, un saludo
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:47.