PHP - Proteger contenido en PHP para un solo usuario

 
Vista:
Imágen de perfil de José Miguel

Proteger contenido en PHP para un solo usuario

Publicado por José Miguel (2 intervenciones) el 11/11/2014 18:20:38
Soy nuevo en esto y estoy usando PHP para proteger el contenido de un sólo archivo para que sólo lo pueda ver un sólo usuario. He utilizado este 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
<?php
 
    $user = "carmen"; // Nombre de usuario 
    $pwd = "1234"; // Contraseña 
 
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
   header('WWW-Authenticate: Basic realm="'.$realm.'"');
   header('HTTP/1.1 401 Unauthorized');
   echo 'Contenido privado, lo sentimos';
   exit;
} else {
   $user = $_SERVER['PHP_AUTH_USER'];
   $pwd  = $_SERVER['PHP_AUTH_PW'];
 
   if($users[$user] != $pwd){
      header('WWW-Authenticate: Basic realm="'.$realm.'"');
      header('HTTP/1.1 401 Unauthorized');
      echo 'Contenido privado, lo sentimos';
      exit;
   }
}
 
?>
//ahora la parte protegida en html//
 
<?php
 
?>
Pero la ventana en la que se pide el "Usuario y "Contraseña" funciona pero tras ingresar "carmen" "1234" vuelve a salir la misma ventana sin verse el contenido.

Qué hago mal. Alguien podría ayudarme. Utilizo el php correcto o debería hacerlo de otra manera.
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 Vainas
Val: 34
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Proteger contenido en PHP para un solo usuario

Publicado por Vainas (262 intervenciones) el 11/11/2014 20:38:38
Buenas:

Creo que lo que quieres hacer es esto:

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
<?php
$users = array("carmen" => "1234", "maria" => "4567");
 
if (!isset($_SERVER['PHP_AUTH_USER'])) {
	header('WWW-Authenticate: Basic realm="'.$realm.'"');
	header('HTTP/1.1 401 Unauthorized');
	echo 'Contenido privado, lo sentimos';
	exit;
} else {
	$user = $_SERVER['PHP_AUTH_USER'];
	$pwd = $_SERVER['PHP_AUTH_PW'];
 
	if($users[$user] != $pwd){
		header('WWW-Authenticate: Basic realm="'.$realm.'"');
		header('HTTP/1.1 401 Unauthorized');
		echo 'Contenido privado, lo sentimos';
		exit;
	}
}
 
?>
 
<?php
echo "Has entrado";
?>

no tienes que crear al principio $user ni $pwd ya que los vas a crear y darles valor cuando entren los datos que vienen del cliente.

Para poder hacer $users["valor"] tienes que tener antes el array con los datos.

Espero que te sirva. Saludos
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

Proteger contenido en PHP para un solo usuario

Publicado por José Miguel (2 intervenciones) el 12/11/2014 09:51:11
Dónde tengo que poner el código html de lo que quiero mostrar si el usuario y la contraseña son correctos? Porque:

-he probado al final y no funciona. Sale la ventana que pide el usuario y la contraseña cada vez que pulsas aceptar sean o no correctos.

-ocurre los mismo si pongo el html aquí:

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
<?php
$users = array("carmen" => "1234", "maria" => "4567");
 
if (!isset($_SERVER['PHP_AUTH_USER'])) {
	header('WWW-Authenticate: Basic realm="'.$realm.'"');
	header('HTTP/1.1 401 Unauthorized');
	echo 'Contenido privado, lo sentimos';
	exit;
} else {
	$user = $_SERVER['PHP_AUTH_USER'];
	$pwd = $_SERVER['PHP_AUTH_PW'];
 
	if($users[$user] != $pwd){
		header('WWW-Authenticate: Basic realm="'.$realm.'"');
		header('HTTP/1.1 401 Unauthorized');
		echo 'Contenido privado, lo sentimos';
		exit;
	}
}
 
?>
      <!-- en este área pongo el  HTML de usuario correcto -->
<?php
echo "Has entrado";
?>

Es como si no reconociera los datos de entrada. Gracias por tu rápida respuesta.
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