PHP - Acceso Restringido a Página

   
Vista:

Acceso Restringido a Página

Publicado por Aproximo (17 intervenciones) el 30/10/2014 11:06:24
Hola chicos

Siento de nuevo traeros otra duda, pero no encuentro remedio para ella.

Tengo una página a la que me llega una variable del tipo $_GET['id_aper'].
Mi variable de sesión se llama $_SESSION['MM_Username']

Por otro lado tengo una tabla con los siguientes campos:
id_aper
usuario

Pues bien,lo que quiero es permitir el acceso a esa página SÓLO a aquel usuario (que ya tiene una sesión iniciada) que tenga el id_aper igual a la variable $_GET['id_aper'].

No sé si me he explicado. El inicio de sesión y las restricciones a otras páginas me van perfecto, solo me falla esto que no soy capaz de dar con el código.

MUCHAS GRACIAS!!
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 Darwin

Acceso Restringido a Página

Publicado por Darwin (1 intervención) el 30/10/2014 11:53:29
Yo he pasado la variable de sesión por $_POST, pero también puede ser por $_GET para compararla con la sesión en la otra página, si ambas no coinciden no valida el acceso a la página.
Si no quieres pasarla por $_GET y por $_POST no puedes, queda como alternativa guardarla en un registro temporal en una tabla en la que llevas las sesiones activas.
Comparas el valor del registro en la tabla (puedes pasar el número de registro por GET o POST) y lo cotejas con la sesión.

Si puedo, más tarde te paso el código, aunque se me ocurre que debe haber otras soluciones más adecuadas, a mí, esta me funcionó.
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

Acceso Restringido a Página

Publicado por Aproximo (17 intervenciones) el 30/10/2014 12:17:30
Pues si puedes pasarme el código, mejor, porque he entendido muy poco de lo que me has dicho. Tengo pocos conocimientos en php.

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

Acceso Restringido a Página

Publicado por Aproximo (17 intervenciones) el 02/11/2014 21:25:34
Chicos, a lo mejor no me he explicado bien, por eso no tengo muchas respuestas.
Os pongo el codigo php que he creado para ver si más o menos se entiende, pero es evidente que algo está mal porque no funciona.

Os recuerdo: si el nombre de usuario de sesión es el mismo que el usuario al que pertenece la entrada en la bbdd de la variable GET "id_aper", se le permitirá entrar en la página, sino no.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (!isset($_SESSION)) {
  session_start();
 
}
$idaper = $_GET['id_aper'];
 
mysql_select_db($database_conexion, $conexion);
$query_Prueba = sprintf("SELECT * FROM aper WHERE id_aper='$idaper'");
$Prueba = mysql_query($query_Prueba, $conexion) or die(mysql_error());
$row_Prueba = mysql_fetch_assoc($Prueba);
$totalRows_Prueba = mysql_num_rows($Prueba);
 
 
$useraper = $row_Prueba['usuario'] ;
  $usersesion = $_SESSION['MM_Username'];
 
  if($useraper =  $usersesion ){
  }
  else {
	    header("Location: paginadeerror.php");
  }


Espero vuestras respuestas. 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

Acceso Restringido a Página

Publicado por xve (5520 intervenciones) el 03/11/2014 07:45:11
Hola Aproximo, yo haría quatro modificaciones en tu código para detectar el error... haber si las puedes aplicar, y nos indicas que valores te muestran, ok?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if (!isset($_SESSION)) {
  session_start();
 
}
$idaper = $_GET['id_aper'];
 
mysql_select_db($database_conexion, $conexion);
$query_Prueba = sprintf("SELECT * FROM aper WHERE id_aper='$idaper'");
echo "<br>1 - ".$query_Prueba;
$Prueba = mysql_query($query_Prueba, $conexion) or die(mysql_error());
$row_Prueba = mysql_fetch_assoc($Prueba);
$totalRows_Prueba = mysql_num_rows($Prueba);
echo "<br>2 - ".$totalRows_Prueba;
 
$useraper = $row_Prueba['usuario'] ;
echo "<br>3 - ".$row_Prueba['usuario'];
echo "<br>4 - ".$_SESSION['MM_Username'];
$usersesion = $_SESSION['MM_Username'];
 
if($useraper =  $usersesion ){
}
else {
   header("Location: paginadeerror.php");
}
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

Acceso Restringido a Página

Publicado por Aproximo (17 intervenciones) el 03/11/2014 09:10:00
Gracias por tu colaboración xve. Te paso los valores que me han salido.

Si a la página le paso la variable "?id_aper=330", éste es el resultado que me genera, accediendo sin problemas a la página.

1 - SELECT * FROM aper WHERE id_aper='330'
2 - 1
3 - juan
4 - juan

Si a la página le paso la variable "?id_aper=207", éste es el resultado que me genera, accediendo también sin problemas a la página (cosa que ya no debería ocurrir).

1 - SELECT * FROM aper WHERE id_aper='207'
2 - 1
3 - irene
4 - juan


Una cuestión... ¿¿pudiera ser que no funcionara porque a esa página ya le tengo una restricción por el TIPO DE USUARIO ??. Te expongo el código por si sacas alguna conclusión de él. El usuario "juan" es del tipo "emprendedor".

----------------------------------------------------------------------
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
if (!isset($_SESSION)) {
  session_start();
}
$MM_authorizedUsers = "emprendedor";
$MM_donotCheckaccess = "false";
 
 
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
 
  $isValid = False;
 
 
  if (!empty($UserName)) {
 
    $arrUsers = Explode(",", $strUsers);
    $arrGroups = Explode(",", $strGroups);
    if (in_array($UserName, $arrUsers)) {
      $isValid = true;
    }
 
    if (in_array($UserGroup, $arrGroups)) {
      $isValid = true;
    }
    if (($strUsers == "") && false) {
      $isValid = true;
    }
  }
  return $isValid;
}
 
$MM_restrictGoTo = "index.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
  $MM_qsChar = "?";
  $MM_referrer = $_SERVER['PHP_SELF'];
  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
  $MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  header("Location: ". $MM_restrictGoTo);
  exit;
---------------------------------------------------------



Muchas gracias por tu tiempo.
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

Acceso Restringido a Página

Publicado por xve (5520 intervenciones) el 08/11/2014 20:05:47
Hola Aproximo, al ver los resultados, creo que he dado con el problema...

Esta linea:
1
if($useraper = $usersesion ){

Esta mal, ya que es una asignación, para hacer la comparación tienes que poner dos signos de igual
1
if($useraper == $usersesion ){

Perdona que no te haya contestado antes, se me paso...

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

Acceso Restringido a Página

Publicado por Aproximo (17 intervenciones) el 09/11/2014 16:33:17
Gracias XVE, pero sigo igual

No sé qué puede estar pasando, no creo que sea tan difícil. He decidido crear una página de prueba para ver dónde puede estar el problema y estar seguro de que otro código no pueda estar interfiriendo. Aún así me sigue saliendo mal, bien le ponga una variable u otra me sale lo mismo para las dos, cuando realmente son dos usuarios diferentes. Probé cambiando el "=" y tampoco funciona.

Éste es el código:

-------------------------------------------------------------------------------------------------------

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
45
46
47
48
49
50
<?php require_once('Connections/conexion.php'); ?>
<?php
 
if (!isset($_SESSION)) {
  session_start();
}
 
 
$idaper = $_GET['id_aper'];
 
mysql_select_db($database_conexion, $conexion);
$query_Prueba = sprintf("SELECT * FROM aper WHERE id_aper='$idaper'");
$Prueba = mysql_query($query_Prueba, $conexion) or die(mysql_error());
$row_Prueba = mysql_fetch_assoc($Prueba);
$totalRows_Prueba = mysql_num_rows($Prueba);
 
$useraper = $row_Prueba['usuario'] ;
$usersesion = $_SESSION['MM_Username'];
 
 
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
 
<body>
 
 
APERTURA  <?php echo $useraper ?><br />
SESIÓN <?php echo $usersesion ?>
<br />
<br />
 
<?php
 
if($useraper == $usersesion){
	echo "lo mismo";
}
	else{
	echo "diferente";
	}
 
?>
 
</body>
</html>
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

Acceso Restringido a Página

Publicado por Aproximo (17 intervenciones) el 12/11/2014 20:39:56
Siento ser tan pesado, pero...... a nadie se le ocurre algo?

Por favor!!!!
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

Acceso Restringido a Página

Publicado por xve (5520 intervenciones) el 13/11/2014 12:44:02
Hola Aproximo, has mirado que contenido tienen las variables?
Has revisado que la base de datos te devuelva algún registro?

Porque haces esto?
1
2
3
if (!isset($_SESSION)) {
  session_start();
}
en vez de definir-lo directamente?
1
session_start();

El código parece bien, pero no podemos probarlo al no disponer de la base de datos... lo que yo te diria, es que mostraras por pantalla los valores de las variables, de seguro que veras donde este el problema.
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

Acceso Restringido a Página

Publicado por Aproximo (17 intervenciones) el 14/11/2014 18:36:31
Ya he averiguado de qué se trataba, por fin!!

En en el formulario que me guardaba en la BBDD el usuario al final del código tenía un espacio, por lo que me guardaba todos los usuarios con un espacio final. Por eso cuando trataba de comparar con otro valor siempre me decía que no era igual....

Bueno, en fin, ya pasó. Ya he rehecho mi vida y eso... jejejeje

Muchas gracias XVE !!!
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

Acceso Restringido a Página

Publicado por xve (5520 intervenciones) el 14/11/2014 21:16:32
Gracias por compartirlo Aproximo!!!! esto me ha sucedido a mi varias veces...
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