Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Fallo en restringir acceso!

Estas en el tema de Fallo en restringir acceso! en el foro de PHP en Foros del Web. Buen día señores. Practico con PHP cómo restringir acceso a una página web. He bajado varios códigos PHP y ninguno me funciona. En un principio ...
  #1 (permalink)  
Antiguo 21/02/2013, 13:24
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Sonrisa Fallo en restringir acceso!

Buen día señores.

Practico con PHP cómo restringir acceso a una página web. He bajado varios códigos PHP y ninguno me funciona. En un principio yo usaba el WampServer para emular un host. Después me enteré que el código que intento correr no funciona en PHP instalado como CGI, sino que sólo funciona en PHP instalado como módulo Apache (sea lo que sea que esto signifique). Por esto desinstalé el WampServer e intenté instalar el Apache y luego el PHP pero no pude configurar por lo mal detalladas que resultan ser las instrucciones de configuración de las webs que ayudan para esto. Así que encontré una cosa que se llama EasyPHP que trae todo en uno: Apache, PHP, MySQL, etc. Tampoco funciona el código empleando este último programa.

El fallo consiste en que cuando pongo el usuario y contraseña, el navegador me devuelve otra vez la misma ventana para introducir usuario y contraseña, como si los hubiese escrito mal.

USUARIO: alfa
CONTRASEÑA: 123

Gracias al destino, tengo acceso a un servidor web, y uno pensaría que si se corre el archivo PHP empleando un servidor hecho y derecho ya no aparecerán los problemas que surgen cuando se intenta correrlo localmente con un emulador de servidor. He subido el archivo PHP al servidor y tampoco funciona! CARAJO! Cuál es la bronca?

Les pego aquí el código completo.

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Restringir acceso</title>
  6. </head>
  7.  
  8. <body>
  9.   <?php
  10.     if (!isset($PHP_AUTH_USER))
  11.     {
  12.         header('WWW-Authenticate: Basic realm="Se requiere autorización para entrar a este sitio"');
  13.         header('HTTP/1.0 401 Unauthorized');
  14.         echo 'Authorization Required.';
  15.         exit;
  16.     }
  17.     else
  18.     {
  19.         echo "Ha introducido el nombre de usuario: $PHP_AUTH_USER<br>";
  20.         echo "Ha introducido la contraseña: $PHP_AUTH_PW<br>";
  21.     }
  22.   ?>
  23.    
  24.   <?php
  25.     if (($PHP_AUTH_USER!="alfa") || ($PHP_AUTH_PW!="123"))
  26.     {
  27.         header('WWW-Authenticate: Basic realm="Se requiere autorización..."');
  28.         header('HTTP/1.0 401 Unauthorized');
  29.         echo 'Nombre de usuario y/o contraseña inválidos.';
  30.         exit;
  31.     }
  32.   ?>
  33.  
  34. <html>
  35. <head>
  36. <title>Ejemplo de PHP</title>
  37. </head>
  38. <body>
  39. Ha conseguido el acceso a la <B>zona restringida</B>.
  40. </body>
  41. </html>
  42. </body>
  43. </html>
  #2 (permalink)  
Antiguo 21/02/2013, 14:26
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Fallo en restringir acceso!

(-_-)'
Wamp Server es un acrónimo de Windows Apache Mysql Php Server... o sea.. el Wamp de por si ya tiene el Apache configurado. Así que ese no es el problema.

No entiendo lo que intentas hacer con ese código porque no tiene sentido... donde el usuario introduce su usuario y password??? No veo ninguna función PHP que reciba las variables. Necesitas una conexión a la base de datos

Si miras entre estos enlaces del foro verás muchos ejemplos:
LINK A EJEMPLOS Y DISCUSIONES SOBRE AUTH

Si no sabes como hacer una conexión con la BD también tienes el buscador del foro y hay temas al respecto. Lo mismo si requieres armar una base de datos.

Si insistes con este método poco efectivo, está bien, pero no tiene el php de donde sacar las variables que el usuario introduce... puedes valerte de unos $_GET[] o $_POST[] para el efecto y a partir de ahí pedirle que te compare si existen o no esos usuarios...

En el Body siempre te aparecerá
Ha conseguido el acceso a la zona restringida.
Debido a que no lo estás limitando a que no haga eso.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 21/02/2013, 20:34
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Fallo en restringir acceso!

Agregado a lo que te ah dicho @loncho_rojas no puedes usar la función header() después de imprimir código HTML, esta función requiere que SIEMPRE se utilice antes de cualquier salida hacia el navegador (usar echo, print o similar o tener código fuera del <?php y ?> lineas antes del uso de la función)...
__________________
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 21/02/2013, 20:41
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Fallo en restringir acceso!

Si es lo que creo, está utilizando autenticación HTTP. No necesita base de datos.
El usuario y password los pregunta el navegador via popup.
PHP_AUTH_USER y PHP_AUTH_PW son el usuario y contraseña introducidos por el usuario.

Elimina todo el bloque HTML que tienes en la parte superior del script.No sólo no hace falta, sino que puede hacer que el script no funcione, y , además, tienes ahora mismo dos tags <html> en el script.

Añade var_dump de PHP_AUTH_USER y PHP_AUTH_PW.
  #5 (permalink)  
Antiguo 22/02/2013, 00:35
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Busqueda Respuesta: Fallo en restringir acceso!

Cita:
Iniciado por loncho_rojas Ver Mensaje
(-_-)'
...donde el usuario introduce su usuario y password??? No veo ninguna función PHP que reciba las variables...
Perdón mi amigo, soy novato pero dices que en el código que pongo no ves dónde el usuario introduce sus datos ni una función que reciba las variables. Según entiendo, el header ('WWW-Authenticate) hace que se muestre la ventana en la que el usuario mete sus datos, los cuales se guardan en las variables predefinidas $PHP_AUTH_USER y $PHP_AUTH_PW. Así que no sé por qué dices que no hay donde el usuario meta sus datos.

Por otro lado, hay que ver el extracto:
Código PHP:
Ver original
  1. <?php
  2.    if (($PHP_AUTH_USER!="Joe") || ($PHP_AUTH_PW!="123")) {
  3.       header('WWW-Authenticate: Basic realm="Acceso restringido"');
  4.       header('HTTP/1.0 401 Unauthorized');
  5.       echo 'Authorization Required.';
  6.       exit;
  7.    }
  8. ?>
  9. <html>
  10. <head>
  11.    <title>Ejemplo de PHP</title>
  12. </head>
  13. <body>
  14. Ha conseguido el acceso a la <B>zona restringida</B>.
  15. </body>
  16. </html>
¿Que no se supone que este condicional IF se lee así?: "Si la variable $PHP_AUTH_USER tiene algo distinto a JOE o la variable $PHP_AUTH_PW tiene algo distinto a 123, entonces aparecerá el mensaje de Acceso restringido o de se requiere autorización. De lo contrario (este de lo contrario está implícito) muestra lo siguiente, que es el código HTML que da la bienvenida a la página". ¿NO?
  #6 (permalink)  
Antiguo 22/02/2013, 00:41
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: Fallo en restringir acceso!

Cita:
Iniciado por Nemutagk Ver Mensaje
Agregado a lo que te ah dicho @loncho_rojas no puedes usar la función header() después de imprimir código HTML, esta función requiere que SIEMPRE se utilice antes de cualquier salida hacia el navegador (usar echo, print o similar o tener código fuera del <?php y ?> lineas antes del uso de la función)...
Ya probé hacer lo que dices y tampoco funciona. Quité todo el HTML antes del PHP y nada!
  #7 (permalink)  
Antiguo 22/02/2013, 00:47
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: Fallo en restringir acceso!

Cita:
Iniciado por berkeleyPunk Ver Mensaje
Ya probé hacer lo que dices y tampoco funciona. Quité todo el HTML antes del PHP y nada!


Vean cómo sí funciona el código que les doy en el siguiente enlace:

http://www.webestilo.com/php/php11a.phtml
  #8 (permalink)  
Antiguo 22/02/2013, 01:25
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Fallo en restringir acceso!

Y piensas con esa actitud uno va a ayudarte, pfff, sin comentarios, para comenzar $PHP_AUTH_USER y $PHP_AUTH_PW bien no pueden definirse si la configuración registre_globals esta deshabilitada (off), para eso se usan en el superarray $_SERVER, en el cual se definen, por otro lado en ningún momento mencione que ese código no funciona, mencione que lo estas implementando mal desde un comienzo por lo tanto esta demás la forma en que te expresas en tu ultimo comentario...
__________________
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 =)
  #9 (permalink)  
Antiguo 24/02/2013, 12:50
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Desacuerdo Respuesta: Fallo en restringir acceso!

Cita:
Iniciado por Nemutagk Ver Mensaje
Y piensas con esa actitud uno va a ayudarte, pfff, sin comentarios, para comenzar $PHP_AUTH_USER y $PHP_AUTH_PW bien no pueden definirse si la configuración registre_globals esta deshabilitada (off), para eso se usan en el superarray $_SERVER, en el cual se definen, por otro lado en ningún momento mencione que ese código no funciona, mencione que lo estas implementando mal desde un comienzo por lo tanto esta demás la forma en que te expresas en tu ultimo comentario...
No te sientas NEMUTAGK, no es para que lo tomes tan a pecho.

Pero a poco no me das un poco, un poquito de razón? Tú mismo dices que el código que pegué inicialmente, y te cito literalmente, "no tiene sentido...". ¿Y qué significa esto sino que no funciona?, porque lo que no tiene sentido es absurdo, contradictorio, como que tú estés físicamente allá y que al mismo tiempo no estés físicamente allá. Esto no tiene sentido, no puede funcionar...

Por el contrario, si algo funciona es porque tiene sentido... bueno, dejemos esto a un lado. Ya nada más para acabar con esto, informo que dejé de intentar aprender PHP con manuales bajados de internet. Fui a una biblioteca y saqué 3 libros sobre PHP para aprender bien y desde cero. Como sea, gracias a todos. Pero que conste, que nadie pudo corregir, mejorar o de plano sustituir por otro el código que puse!

Última edición por berkeleyPunk; 24/02/2013 a las 13:16
  #10 (permalink)  
Antiguo 24/02/2013, 17:01
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Fallo en restringir acceso!

Lamentablemente, el único que podía corregir, mejorar o sustituir tu código eras tú mismo, en base a las atinadas sugerencias de quienes han dedicado unos minutos para tratar de ayudarte.
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 05/05/2013, 16:24
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: Fallo en restringir acceso!

Cita:
Iniciado por Triby Ver Mensaje
Lamentablemente, el único que podía corregir, mejorar o sustituir tu código eras tú mismo, en base a las atinadas sugerencias de quienes han dedicado unos minutos para tratar de ayudarte.
Buen día. Hace tiempo que abrí este post y entonces me iniciaba con PHP. Hoy día sigo siendo un novato, sin duda, pero he aprendido algunas cosas, y entre ellas he aprendido que quien te ayuda aquí en estos foros no está obligado a darte la solución exacta de tu problema, es más, ni siquiera están obligados a ver tu post. Esto es AYUDA, ayuda sólo por ayudar, así que nadie está aquí para exigir información como si estuviéramos pagando dinero contante y sonante.
Bueno, me disculpo por mi comportamiento anterior (aunque no veo que haya sido para tanto, realmente ).
Ordinariamente quien ayuda no te da instrucciones pormenorizadas para arreglar tu bronca, sólo te sugieren que le muevas por aquí o por allá con tal o cual etiqueta HTML o función javascript. Uno tiene que buscarle por todos lados, en foros, manuales, tutoriales acerca de esa etiqueta o función para enterarse cómo funciona. Bueno ya no digo más.

Ahora valido a los usuarios de la siguiente forma:

Código PHP:
  <?php
    
if ( (!isset($_POST["usuario"])) || (!isset($_POST["contrasena"])) )
    {
        echo 
'Necesitas logearte primero para acceder a esta zona.<br />';
        echo 
'Regresa a la vieoteca, selecciona tu video y loguéate!';
    }
    else
    {
        
$archivo file("users.txt");
        
$cuenta  count($archivo);
        for (
$i=0$i<$cuenta$i++)
        {
            
$filaDividida explode(":"$archivo[$i]);
            
$user         $filaDividida[0];
            
$pass         $filaDividida[1];
            if ( (
$_POST["usuario"] == trim($user)) && ($_POST["contrasena"] == trim($pass)) )
            {
                echo 
'<h1>Logeado correctamente</h1><br />';
                break;
            }
        }
    }

    if ( (
$_POST["usuario"] != trim($user)) || ($_POST["contrasena"] != trim($pass)) )
        {
            echo 
"<h1>Usuario y/o contraseña inválidos</h1><br>";
        }
  
?>
Doy por solucionado el tema. GRACIAS.


Así, supongamos que nadie tenga acceso a nuestras imágenes, excepto los siguientes sitios:
instalaciones electricas
mantenimiento industrial
naves industriales
obra civil
proyecto llave en mano
sistemas contra incendios
subestaciones electricas
constructoras
hvac

Última edición por berkeleyPunk; 24/09/2014 a las 19:50

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:54.