Foros del Web » Creando para Internet » Diseño web »

guardar usuario en variable al hacer login

Estas en el tema de guardar usuario en variable al hacer login en el foro de Diseño web en Foros del Web. Hola tengo un problema que arrastro desde hace dias aunque voy avanzando, pero ha llegado un punto en que no sé si lo que pretendo ...
  #1 (permalink)  
Antiguo 12/09/2009, 17:19
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
guardar usuario en variable al hacer login

Hola tengo un problema que arrastro desde hace dias aunque voy avanzando, pero ha llegado un punto en que no sé si lo que pretendo puede o no realizarse.
Lo que quiero es que cuando hago login en la web, e introduzo el usuario y passwordrd que controlo a traves de .htaccess y .htpass puedo guardar en algun tipo de variable el nombre del usuario que se ha introducido en el login. El tema es que necesito recuperarlo en una pagina posterior.
Necesito ayuda, es urgente.

Gracias.
  #2 (permalink)  
Antiguo 12/09/2009, 19:27
 
Fecha de Ingreso: abril-2009
Mensajes: 371
Antigüedad: 15 años
Puntos: 22
Respuesta: guardar usuario en variable al hacer login

hombre en cada pagina puedes comprobar si el usuario esta logueado (por la sesion) y pillar el nombre de la base de datos, o puedes guardar una cookie con el nombre del usuario

si lo que quieres es guaradrlo en una variable, pues dependera del lenguaje de programacion que uses xD en php por ejemplo no hay continuaciones asi que no puedes guardar el estado de una peticion http a otra

si que hay lenguajes que te permiten hacer eso, y frameworks web como seaside en smalltalk o lift en scala que lo facilitan
  #3 (permalink)  
Antiguo 13/09/2009, 04:08
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: guardar usuario en variable al hacer login

Ok, pero como compruebo si el usuario está logeado en una página determinada?
Y como obtengo el nombre de usuario? El tema de usuario y password solo lo controlo a traves de .htaccess, la qüestión es que en una página determinada necesito hacer una consulta a una bd buscando por nombre de usuario(cosa que por sí sola me hace bien), pero me falta obtener el nombre del usuario que esta logado. Me explico?

Gracias
  #4 (permalink)  
Antiguo 13/09/2009, 04:56
 
Fecha de Ingreso: abril-2009
Mensajes: 371
Antigüedad: 15 años
Puntos: 22
Respuesta: guardar usuario en variable al hacer login

sigues sin decirme que lenguaje usas, no se como quieres que te de soluciones concretas si no lo haces...

pero bueno.. en php por ejemplo puedes acceder al usuario de la basic auth de apache con la global $_SERVER['PHP_AUTH_USER']
  #5 (permalink)  
Antiguo 13/09/2009, 10:18
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: guardar usuario en variable al hacer login

No se como es loguear con .htaccess, pero para mi la variable mas apropiada en PHP es la de sesion.

<?php session_start(); ?> // esto en el primer renglon del archivo PHP, si o si.
$_SESSION["var"] = valor;

Asi inicializas la variable. Que sera accesible en cada pagina que tenga el encabezado

<?php session_start(); ?>

Para imprimirla, basta hacer un :

echo $_SESSION["var"];
  #6 (permalink)  
Antiguo 13/09/2009, 11:03
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: guardar usuario en variable al hacer login

Perdonad pero está claro que no me explico. Voy a intentarlo exponer mejor:

Yo me logeo a una web mediante .htacces y .htpasswrd
Se abre automaticamente una caja de dialogo predeterminada que me pide un usuario y passowrd. Entro en el directorio restringido si el usuario y pass es válido.
entonces hay un segundo subdirectorio protegido. A todo usuario que intente entrar en este segundo subdirectorio protegido le doy la opcion de solicitar una password nueva.
Lo que pretendo es que cuando un usuario validado anteriormente intente entrar en este subdirectorio protegiodo(supongamos de nivel 2) lo identifique y el sistema le diga: Usuario "tal" tu solicitud ha sido enviada al operador del sistema y pronto recibiras una nueva pass a la direccion de correo "tal".
La información del correo, la tengo en una tabla en una bd que consulto mediante php-mysql y que saco por pantalla. (Esta parte funciona bien), lo que no consigo es saber QUIEN está solicitando la pass nueva, es decir QUIEN está intentando acceder a este segundo subdirectorio protegido.
Creo que al hacer el primer login, podria guardar una variable, cookie, o no sé que... es aquí donde está todo el problema.

Muchas gracias por vuestra ayuda...
  #7 (permalink)  
Antiguo 15/09/2009, 02:03
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: guardar usuario en variable al hacer login

Alquien puede aclararme mi última qüestión???

Gracias
  #8 (permalink)  
Antiguo 15/09/2009, 05:43
 
Fecha de Ingreso: abril-2009
Mensajes: 371
Antigüedad: 15 años
Puntos: 22
Respuesta: guardar usuario en variable al hacer login

ya te respondi hace dias

vamos a ver, si dices que estas usando el htaccess y htpasswd de apache para autentificar al usuario es que estas usando http auth, si usas la basic o la digest puedes acceder al usuario mediante la global que te puse varios posts mas arriba - $_SERVER['PHP_AUTH_USER'] - y si usas alguna autentificacion que no exponga el usuario a php (base de datos, RADIUS, señales de humo, yo que se.) tendras que buscarte la vida porque la unica forma de sacar el usuario sera pillarlo del servicio que sea que lo valide.

Última edición por mpeg; 15/09/2009 a las 06:07
  #9 (permalink)  
Antiguo 15/09/2009, 06:20
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: guardar usuario en variable al hacer login

Previamente en la página he hecho el session_start();

$link = Conectarse();

$c_usuario = "SELECT email FROM usuarios WHERE usuario='$nom'";
//Ejecuto la sentencia
$r_usuario = mysql_query("$c_usuario",$link) or die(mysql_error());
$r_ok = mysql_fetch_array($r_usuario);
echo $_SERVER['PHP_AUTH_USER'];
echo " " . $r_ok['email'];
?>

Con el primer echo deberia imprimir el nombre del usuario logueado no?
Pues nada...
  #10 (permalink)  
Antiguo 15/09/2009, 06:39
 
Fecha de Ingreso: abril-2009
Mensajes: 371
Antigüedad: 15 años
Puntos: 22
Respuesta: guardar usuario en variable al hacer login

Cita:
Iniciado por niandur Ver Mensaje
Yo me logeo a una web mediante .htacces y .htpasswrd
Cita:
Iniciado por niandur Ver Mensaje
$c_usuario = "SELECT email FROM usuarios WHERE usuario='$nom'";
en que quedamos?
  #11 (permalink)  
Antiguo 15/09/2009, 06:45
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: guardar usuario en variable al hacer login

A ver:
1- me logueo con .htaccess
2- Voy navegando por la web
3-Llego a un punto donde puedes entrar a un directorio protegido por un nivel superior.
4-Doy la opcion de solicitar al usuario una password para este nivel superior
5-Mi intención es que teniendo en cuenta que ese usuario ya esta identificado (pero tienen un nivel 1), lo que quiero es buscar por su username en una base de datos su correo electronico para que el solo perciba lo siguiente:

"quieres una password para este nivel? si dice que si el servidor le contesta:
Ok tu password ha sido solicitada y te será enviada al mail="tal" en 24h"

Entonces yo ademas recibo un mail con el nombre de usuario que ha hecho la petición y su dirección de correo.

Solo he puesto la última parte... El resto en principio funciona todo bien.

El directorio protegido por el nivel dos tambien es con .htaccess y usuando grupos.

Creo que eso es todo
  #12 (permalink)  
Antiguo 15/09/2009, 06:57
 
Fecha de Ingreso: abril-2009
Mensajes: 371
Antigüedad: 15 años
Puntos: 22
Respuesta: guardar usuario en variable al hacer login

vale, se ve que esa global solo funciona si php corre como modulo de apache, imagino que lo corres como fcgi, creo que lo que se hace en estos casos es hacer que apache fije una variable de entorno con la info del auth... algo asi en el .htaccess:

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

y algo asi en tu php:
Código PHP:
if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
  list(
$_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':'base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'],6)));

y luego puedes usar la global $_SERVER['PHP_AUTH_USER'] para acceder al usuario aunque corras php como cgi/fcgi/etc.
  #13 (permalink)  
Antiguo 15/09/2009, 10:03
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: guardar usuario en variable al hacer login

Estoy haciendo pruebas con lo que me has dicho, y de momento tampoco me imprime nada.
He añadido las lineas al .htaccess
Pero tengo unas dudas:
1. Lo que dices que hay que añadir en el codigo php es en cada pagina, en la de inicio o en cualquiera?
2. Hay que configurar el servidor de alguna manera para que funcione esto? quiero decir que no sea que en el servidor hay que modificar algo.

Gracias
  #14 (permalink)  
Antiguo 15/09/2009, 10:41
 
Fecha de Ingreso: abril-2009
Mensajes: 371
Antigüedad: 15 años
Puntos: 22
Respuesta: guardar usuario en variable al hacer login

el php solo hace falta en la pagina en la que uses esa global

asi como te lo he puesto te tiene que funcionar seguro si HTTP_AUTHORIZATION existe, y si no existe es que algo falla con tu configuracion de apache

sinceramente deberias aprender primero a programar y no guiarte a base de copiar/pegar, si no te funciona asi puede ser por mil cosas, quiza ni siquiera estes usando HTTP AUTH en esa pagina (a saber..), quiza no tengas instalado mod_rewrite...
  #15 (permalink)  
Antiguo 15/09/2009, 10:54
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: guardar usuario en variable al hacer login

Bueno! De verdad te agradezco el interés por mis dudas, mil gracias de nuevo.
Pero tengo que contestarte porque durante toda la conversación que hemos tenido he notado un cierto tono por tu parte muy poco didáctico, prepotente y suponiendo que yo soy una inutil...
No es que sea una gran programadora, pero estoy en el último curso de la ingenieria y he programado bastante, en ensamblador, c, java, sql... Desde luego segurísimo que no sé tanto como tu, pero ahora precisamente estoy aprendiendo php y a programar en web. Si no digo esto reviento!
Porque claro una cosa es no saber programar, y la otra es estar aprendiendo un nuevo lenguaje y un sistema operativo desconocido. Aun así voy aprendiendo y avanzando (gracias también a gente como tu), puesto que hace diez dias no sabía exactamente la función que tenía el fichero .htaccess .
Solo quería comentarte esto porque me parece que de php sabrás un huevo pero de pedagogia 0.

Supongo que conseguiré que funcione el tema y me guarde finalmente la dichosa variable de usuario y la consiga usar para mi consulta mysql.

Espero que a ti te sirva también de algo.

Saludos
  #16 (permalink)  
Antiguo 15/09/2009, 11:34
 
Fecha de Ingreso: abril-2009
Mensajes: 371
Antigüedad: 15 años
Puntos: 22
Respuesta: guardar usuario en variable al hacer login

vale, lo que pasa es que:
- tu no dabas suficiente informacion, no me dices que lenguaje de programacion usas (hasta el 3er post o asi no mencionaste que usabas php)
tampoco se siquiera como estas ejecutando php, es un modulo de apache? un cgi? un fcgi? yo no puedo saberlo y teniendo en cuenta que lo que tu quieres hacer tiene que ver tanto con el servidor web (que se ocupa de la autentificacion) como con el lenguaje (que tiene que acceder a ella), es importante.

- me da la sensacion de que ni te has molestado en buscar un poco en google los conceptos que te voy nombrando, primero te dije que podias usar la global PHP_AUTH_USER y me dijiste que no te funcionaba, mire la documentacion y efectivamente pone clarito que solo funciona con php version blabla y con php instalado como modulo de apache. lo mismo podias haber hecho tu, la solucion que te propuse la dan en los mismos comentarios de esa pagina de la documentacion...

yo no se casi nada de php, nunca he usado php en serio (y hara igual 3-5 años que no uso php para nada)
pero si se leer documentacion, y para contestar tu pregunta u otras de php normalmente necesito hacer una visita a php.net.

de todas formas te pido disculpas si te he parecido un poco borde, tampoco es mi intencion ir haciendo enemigos
  #17 (permalink)  
Antiguo 15/09/2009, 11:55
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: guardar usuario en variable al hacer login

Bueno nada... borrón y cuenta nueva!
La verdad es que algo si he mirado pero talvez no lo suficiente. Pensaba que quizá mi problema era una variable de sistema que desconocia y que si alguien me la daba pues se solucionaba y ya está. En fin lo siento, pero es que llevo unos cuantos dias con esto dando palos de ciego y ahora empiezo a ver la luz.

He consultado el php.ini de mi servidor y no se ver lo que me dices del http_auth, lo que si he visto por ahi es que hay unas variables que puede estar on/off. Podria ser ese mi problema?

he puesto estas dos variables a on: register_globals y register_long_arrays = On y display_errors = la tengo off. Tengo que cambiar esto?
En fin todavía no lo he probado, pero ahora antes de volver a preguntar me voy a mirar unos cuantos conceptos que como bien has dicho, puedo consultar en la web igual que tu. Creo que lo necesito y me irá bien... Tal vez después vea las cosas más claras. Mi intención tampoco es hacer enemigos, lo siento, es que llevo todo el dia con esto y ....arggg. A veces es mejor parar y descansar, que es lo que voy a hacer ahora.

Saludos
  #18 (permalink)  
Antiguo 17/09/2009, 07:57
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: guardar usuario en variable al hacer login

Bueno por fin lo he conseguido. Dejo una explicación de la solución por si alguien lo necesita.

Finalmente encontre la manera de listar todos los datos que guarda la variable $server. Haciendo lo siguiente:

<?php


foreach($_SERVER as $key => $value)
{
echo "<b>".$key ."</b> tiene el valor de ". $value ."<br>";
}

?>

Esto me lista todos los elementos que guarda la variable y su valor. El caso es que el nombre del usuario que se loguea se guarda en la variable $SERVER['REDIRECT_REMOTE_USER']. Para obtenerla hago: $nombre = getenv ("REDIRECT_REMOTE_USER") y ahi está. Era eso lo que necesitava, por si alguien quiere hacer la prueba, con el bucle que puse antes se muestran los mas de 50 parametros que almacena $SERVER.

Un saludo y gracias 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 04:01.