Foros del Web » Programando para Internet » PHP »

Autentificacion en php que funcione con global_register en OFF

Estas en el tema de Autentificacion en php que funcione con global_register en OFF en el foro de PHP en Foros del Web. Hola, sabes tengo este codigo que no me funciona con el global_register en OFF : <?php // Ingreso de miembros if (!isset($PHP_AUTH_USER)) { header('WWW-Authenticate: Basic ...
  #1 (permalink)  
Antiguo 04/11/2004, 11:32
 
Fecha de Ingreso: mayo-2004
Mensajes: 51
Antigüedad: 13 años, 6 meses
Puntos: 0
Autentificacion en php que funcione con global_register en OFF

Hola, sabes tengo este codigo que no me funciona con el global_register en OFF :

<?php // Ingreso de miembros
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Acceso de Usuarios Acreditados"');
header('HTTP/1.0 401 Unauthorized');
echo 'acceso denegado';
exit;
}

$fich = file("passwords.txt");
$i=0; $validado=false;
while ($fich[$i] && !$validado) {
$campo = explode("|",$fich[$i]);
if (($PHP_AUTH_USER==$campo[0]) && ($PHP_AUTH_PW==chop($campo[1]))) $validado=true;
$i++;
}

if (!$validado) {
header('WWW-Authenticate: Basic realm="Acceso de Usuarios Acreditados"');
header('HTTP/1.0 401 Unauthorized');
echo 'acceso denegado';
exit;
}
?>

he intentado ponerle a la primera linea:
if (!isset($_SERVER['PHP_AUTH_USER'])) {

en reemplazo de:
if (!isset($PHP_AUTH_USER)) {

Yo se que aun me falta mas variables por modificar pero mis conocimientos no llegan mas alla, en otras webs he buscado y todas tienen el error de no funcionar cuando el global register esta en OFF, ojala que aqui en este foro de pueda arreglar ,-)

alguna ayuda que me pudieran brindar???

Saludos
  #2 (permalink)  
Antiguo 04/11/2004, 11:47
 
Fecha de Ingreso: junio-2002
Ubicación: BOGOTA COLOMBIA
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 0
Que version de Php Tienes, porque si tienes una muy vieja no te va a funcionar, si el caso es el contrario prueba reemplazando
$PHP_AUTH_USER
$PHP_AUTH_PW
por
$_SERVER[PHP_AUTH_USER]
$_SERVER[PHP_AUTH_PW]
Sin comillas yo tengo un script similar y funciona sin comillas
  #3 (permalink)  
Antiguo 04/11/2004, 12:35
 
Fecha de Ingreso: mayo-2004
Mensajes: 51
Antigüedad: 13 años, 6 meses
Puntos: 0
Hola gracias por tu sugerencia, pero no funciona aun y se pasa de largo, sin autentificar, este es el codigo que se pasa de largo:

<?php // Ingreso de miembros
if (!isset($_SERVER[PHP_AUTH_USER])) {
header('WWW-Authenticate: Basic realm="Acceso de Usuarios Acreditados"');
header('HTTP/1.0 401 Unauthorized');
echo 'acceso denegado';
exit;
}

$fich = file("pva.txt");
$i=0; $validado=false;
while ($fich[$i] && !$validado) {
$campo = explode("|",$fich[$i]);
if (($_SERVER[PHP_AUTH_USER]==$campo[0]) && ($_SERVER[PHP_AUTH_PW]==chop($campo[1]))) $validado=true;
$i++;
}

if (!$validado) {
header('WWW-Authenticate: Basic realm="Acceso de Usuarios Acreditados"');
header('HTTP/1.0 401 Unauthorized');
echo 'acceso denegado';
exit;
}
?>

EAsi me quedo este codigo y aun no me funciona, he buscado en la internet y he encontrado esta pagina: http://www.yoreparo.com/foros/linux/...ones/5377.html en la cual al final dan una solucion algo como esto: extract ($_POST); ò if ($_SERVER['REQUEST_METHOD'] == "POST") {

La verdad no entiendo donde aplicarlo pero de seguro sabras como modificarlo, para hacer que este codigo por fin funcione.

Con respecto al php yo uso DirectAdmin , es la version anterior 1.23, el php no es antiguo.

Salu2
  #4 (permalink)  
Antiguo 04/11/2004, 13:04
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 15 años
Puntos: 2
Ni te funciona ni te va a funcionar para poder usar las variables predefinidas $PHP_AUTH_USER y $PHP_AUTH_PW tienes que tener el register_globals en on, si no no carga las variables aunque las cargues en modo superglobal $_SERVER['PHP_AUTH_USER`] y $_SERVER[['PHP_AUTH_PASS'], deberías usar un sistema de autentificación basado en sesiones o cookies como mal menor, tienes el script autentificator ya desarrollado y muy fácil de instalar en la siguiente url http://php.cluster-web.com/autentificator/

Un saludo.
  #5 (permalink)  
Antiguo 04/11/2004, 14:00
 
Fecha de Ingreso: junio-2002
Ubicación: BOGOTA COLOMBIA
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 0
Cita:
Iniciado por Zertiko
Ni te funciona ni te va a funcionar para poder usar las variables predefinidas $PHP_AUTH_USER y $PHP_AUTH_PW tienes que tener el register_globals en on, si no no carga las variables aunque las cargues en modo superglobal $_SERVER['PHP_AUTH_USER`] y $_SERVER[['PHP_AUTH_PASS']
SI SIRVEN ASI REGISTER GLOBALS ESTE EN OFF TE LO DIGO POR QUE LO HE USADO, EN LO QUE SI ESTOY DE ACUERDO ES EN EL AUTENTIFICATOR DE CLUSTER, ES UNA EXCELENTE HERRAMIENTA DEBERIAS CONSIDERAR USARLA

SALUDOS
  #6 (permalink)  
Antiguo 05/11/2004, 06:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si register_globals = OFF . .no puedes acceder a variabels externas a un script como globales (ni $PHP_AUTH_USER . .ni otras) .. pero si usas los arrays superglobales $_SERVER, $_POST, $_GET .. etc .. da igual el valor de esa directiva siempre y cuando se use una versión de PHP superior a 4.1.0 en adelante. En su defecto pueden usar los arrays: $HTTP_SERVER_VARS .. $HTTP_POST_VARS .. etc del mismo modo que los superglobales.

Otro detalle sobre la autentificación HTTP que se está pretendiendo usar es que PHP ha de estar instalado como Módulo de Apache . .no sirve en PHP instaldo como CGI (como pasa si usas IIS, PWS y otros servidores HTTP).

Un saludo,
  #7 (permalink)  
Antiguo 05/11/2004, 16:16
 
Fecha de Ingreso: mayo-2004
Mensajes: 51
Antigüedad: 13 años, 6 meses
Puntos: 0
Entonces Cluster crees que podria funcionar usando estos arrays?: $HTTP_SERVER_VARS .. $HTTP_POST_VARS

En todo caso como seria el codigo que expuse ya modificado?

Pues mi web ya tiene ese sistema de autentificacion y es dificil de cambiarlo.

Salu2
  #8 (permalink)  
Antiguo 06/11/2004, 14:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Mejor dicho .. debería funciona si usa PHP 4.1.0 o superior en tu servidor con los arrays superglobales $_POST, $_SERVER .. etc ..

Y sobre todo:

$_SERVER[PHP_AUTH_USER]

usar comillas ahí:
$_SERVER['PHP_AUTH_USER']

(en todas las referencias) ..

PHP_AUT_USER es una constante (igual que las otras) .. así que es como si estuvieses buscando el valor de una posible variable de servidor tipo "usuario" .. y eso no es asì .. por eso debes usar comillas.

Asegurate tambièn que usas PHP 4.1.0 en adelante y que estè instalado como Módulo de Apache (no como CGI) . .eso lo puedes ver en un phpinfo() a tu servidor en el primer módulo de información que te entrega en el apartado "Server API" ...

Un saludo,
  #9 (permalink)  
Antiguo 13/11/2004, 14:54
 
Fecha de Ingreso: mayo-2004
Mensajes: 51
Antigüedad: 13 años, 6 meses
Puntos: 0
Cluster, he intentado todas las combinaciones posibles y no me sale, hasta ahora lo estoy intentando y no me sale y la verdad no se en que estoy fallando, le puse con comillas, sin comillas, para alla y para aca etc etc....... y nada que ver, no me sale.

Lo peor de todo es que tengo clientes que necesito que se autentifique y estan pasando de frente, saben alguna otra forma de autentificacion, obviando la autentificacion de Cluster??

bye
  #10 (permalink)  
Antiguo 13/11/2004, 16:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. catt ...

Si te fijas .. varias veces en este mensaje se te ha pedido que informes de que versiòn de PHP usas y en que modo està instalado PHP en tu servidor. Eso lo puedes ver con un phpinfo() y es parte fundamental que indiques esa informaciòn para realmente descartar el uso de autentificaciòn HTTP o tal vez el uso de los arrays superglobales $_SERVER (si es que usas PHP con una versiòn inferior a la 4.1.0).

Así que .... si no aportas esos datos .. te iràn haciendo sugerencias de códigos similares y puede que ninguno te funcione o puede que "las coincidencias" de los requerimientos de estos te funciones .. pero, .. los problemas no se solventan por azar sino viendo de donde vienen .. (creo yo).

Un saludo,
  #11 (permalink)  
Antiguo 13/11/2004, 17:34
 
Fecha de Ingreso: mayo-2004
Mensajes: 51
Antigüedad: 13 años, 6 meses
Puntos: 0
Hola Cluster, si mas no recuerdo en el mensaje privado te envie la pagina de mi php info de mi servidor, en todo caso rescatare de alli lo que se necesita para aclarar mis problemas:

----------------------------------
PHP Version 4.3.6

Server API: Apache

Loaded Modules: mod_ssl, mod_php4, mod_perl, mod_frontpage, mod_setenvif, mod_so, mod_auth, mod_access, mod_rewrite, mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis, mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status, mod_negotiation, mod_mime, mod_log_config, mod_env, mod_vhost_alias, http_core

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

No se que mas datos se necesitarian saber para conocer el codigo para que logre funcionar este sistema de autentificaciòn que esta a la vista tan facil pero para que funcione tan dificil...... supongo que con estos datos ya seria suficiente no, o falta algo?

Xtons como seria la solucion?
  #12 (permalink)  
Antiguo 15/11/2004, 05:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, con esa información se deduce que debería funcionarte la autentificación HTTP de Apache pues usas PHP superior a 4.1.0 y modo "módulo" sobre la instalación de PHP


Un saludo,

(PD: no mezcles lo que puedas decir en privado a alguien y lo que publicas en un tema público ... Mucha gente no se anima a dicer nada si ve que se solicitan datos y no se informa, como para llegar a una conclusión ... Si te he insistido en pedirlo aquí es para que quede claro ese punto y alguien pueda sugerirte otra cosa tal vez.)
  #13 (permalink)  
Antiguo 15/11/2004, 11:08
 
Fecha de Ingreso: mayo-2004
Mensajes: 51
Antigüedad: 13 años, 6 meses
Puntos: 0
Gracias Cluster, entiendo a lo que te refires de no mezclar mensajes, con respecto a los codigos te dije que he intentado mezclando unas alternativas con otras, no sera que tal vez este fallando en otra parte del codigo??.........

Saludos
  #14 (permalink)  
Antiguo 16/11/2004, 16:37
 
Fecha de Ingreso: mayo-2004
Mensajes: 51
Antigüedad: 13 años, 6 meses
Puntos: 0
Hola a todos, saben que???.... ya lo arregle el codigo y ahora si me funciona, aunque la palabra a emplear no es si lo "arregle" pues mas bien yo era el que me estaba equivocando, sucede que despues del codigo yo no le ponia contenido, osea cuando ingresaba la contraseña y los password correcto la pagina aparecia en blanco y yo creia que no autentificaba sino que era porque no tenia nada que mostrar jeje que TONTO soy verdad?? jeje, cometia un error de principiante jejeje, aunque casi lo soy pero aun asi no me la perdono este tonto error je, pero saben aqui les pongo el codigo que funciona a la perfeccion, y como desde antes.... siempre funcionaba pero con las medoficaciones que Cluster indico:

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

<?php // Ingreso de miembros
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Acceso de Usuarios Acreditados"');
header('HTTP/1.0 401 Unauthorized');
echo 'acceso denegado';
exit;
}

$fich = file("passwords.txt");
$i=0; $validado=false;
while ($fich[$i] && !$validado) {
$campo = explode("|",$fich[$i]);
if (($_SERVER['PHP_AUTH_USER']==$campo[0]) && ($_SERVER['PHP_AUTH_PW']==chop($campo[1]))) $validado=true;
$i++;
}

if (!$validado) {
header('WWW-Authenticate: Basic realm="Acceso de Usuarios Acreditados"');
header('HTTP/1.0 401 Unauthorized');
echo 'acceso denegado';
exit;
}
?>
Felicidades acabas de ingresar
-----------------------------

Ahora debo dar la gracias sobretodo a Cluster por su interes y a los demas que intentaron ayudarme y lo lograron, nuevamente muchas gracias.

Saludos a todos
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 03:49.