Foros del Web » Programando para Internet » PHP »

Login seguro

Estas en el tema de Login seguro en el foro de PHP en Foros del Web. Buenas. Estoy diseñando un sistema de visualización de videos tipo youtube. Donde los usuarios podrán votar cada video, ver los más votados y tal... Todo ...
  #1 (permalink)  
Antiguo 05/07/2007, 13:42
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
De acuerdo Login seguro

Buenas.

Estoy diseñando un sistema de visualización de videos tipo youtube. Donde los usuarios podrán votar cada video, ver los más votados y tal...
Todo esto sincronizando usuarios del foro con los de esta sección de la web.
Es decir, los usuarios registrados en el foro serán usuarios de esta sección.

Una vez logueados mediante un formulario que he echo, paso el id del usuario mediante un campo oculto y lo recojo mediante un POST en la página para visualizar los videos.

Bien, hasta aquí no tengo problema.

Si quiero ir a la sección de más votados, o más vistos por ejemplo... tengo que conservar el usuario como conectado.
De modo que de alguna manera le tengo que pasar unos datos que me indiquen que ese usuario está conectado.

Para ello pensé en hacer el link tipo botón, y asín insertar el id de usuario en un campo oculto para recogerlo con POST de nuevo...

Pero me cuestionaba si hay algún otro modo de pasar esa información, es decir, la variable id. (que no sea pasar variables por url puesto que de este modo podrían loguearse como cualquier usuario simplemente cambiando el valor de la variable en la barra de direciones).

No se, otra idea que se me ha ocurrido es la de crear un número aleatorio para cada usuario. Guardando este mismo en la base de datos. De modo que podría pasar por url ese número ( alfanumérico preferiblemente) porque nadie podría saber y conocer el número aleatorio de otro usuario.

De todos modos como soy bastante novato en esto de php me gustaría saber si alguien podría echarme una manita...
Me he fijado en youtube.com pero no logro saber como lo hacen ni creo que yo pudiera hacer lo mismo...

Gracias por leerme.
Espero vuestra ayuda.
  #2 (permalink)  
Antiguo 05/07/2007, 14:09
Avatar de BreCkver  
Fecha de Ingreso: enero-2006
Ubicación: Mexico, D.F.
Mensajes: 96
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Login seguro

Hola que tal:

El problema que tienes puede ser solucionado con sesiones en las faqs de php, hay un ejemplo. Una vez que se crea la sesion se destruye hasta que el usuario cierra el navegador. Muy util en tu caso.



Espero haber ayudado ::
__________________

:-D No solo soy mexicano también soy del Politécnico :arriba:

  #3 (permalink)  
Antiguo 05/07/2007, 15:05
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
Re: Login seguro

Te refieres a este link?:
http://www.php.net/manual/en/ref.session.php
  #4 (permalink)  
Antiguo 05/07/2007, 15:16
Avatar de Atomycko  
Fecha de Ingreso: diciembre-2005
Ubicación: Zapopan Jal.
Mensajes: 92
Antigüedad: 18 años, 3 meses
Puntos: 12
Sonrisa Re: Login seguro

Dime si entendi, lo que quieres es saber si un usuario esta en linea, bueno pues puedes hacer lo siguiente:
  1. Crea un directorio llamado "usuarios_en_linea/" (o como gustes)
  2. Crea un archivo llamado "arribota.php" (o como gustes) e introducelo en todas tus paginas con "include("arribota.php");" o "require("arribota.php");" como gustes, en la primera linea de los archivos, osea, arribota.
  3. En "arribota.php" ponle este codigo:
    Código PHP:
    define("MAXIMO_DE_TIEMPO"1); 

    $separa explode(".php"$PHP_SELF);
    $busca explode("/"$separa[0]);
    $encuentra count($busca);
    $lugar $busca[$encuentra-1];
    /////// Lo anterior es para saber en donde te encuentras actualmente
    if(!file_exists("./usuarios_en_linea/{$AQUI_LA_ID_DEL_USUARIO}_ses.php")){
      
    $crea fopen("./usuarios_en_linea/{$AQUI_LA_ID_DEL_USUARIO}_ses.php""w+");
    }else{
      
    $crea fopen("./usuarios_en_linea/{$AQUI_LA_ID_DEL_USUARIO}_ses.php""w+");
      
    $uel "./usuarios_en_linea/";
      
    $abre_uel opendir($uel);
      while(
    $lee_uel readdir($abre_uel)){
        if(
    $lee_uel=="." || $lee_uel=="..")
        continue;
        
    $tiempo_uel [$lee_uel] = filemtime($uel."/".$lee_uel);
      }
      while(list(
    $lista_uel)=each($tiempo_uel)){
        
    $todo "$lista_uel";
        
    $ultima strrpos($todo'.');
        
    $dame substr($todo0$ultima);
        if(
    $dame==""){
          echo
    "";
        }else{
          
    $usuario explode("_ses"$dame);
          if(
    time() - fileatime("./usuarios_en_linea/{$AQUI_LA_ID_DEL_USUARIO}_ses.php") < MAXIMO_DE_TIEMPO 180){
            echo
    "";
          }else{
            
    unlink("./usuarios_en_linea/{$AQUI_LA_ID_DEL_USUARIO}_ses.php");
          }
        }
      }

  4. Ahora solo queda por poner en el archivo donde quieres que aparesca si esta en linea o no un usuario el siguiente codigo:
    Código PHP:
    if(file_exists("./usuarios_en_linea/{$AQUI_LA_ID_DEL_USUARIO}_ses.php")){
      echo
    "El usuario esta en linea :)";
    }else{
      echo
    "El usuario ya se fue :(";


Espero que esto te ayude de algo.

Saludos!!
__________________
PD: Los acentos fueron secuestrados.
  #5 (permalink)  
Antiguo 06/07/2007, 04:33
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
Re: Login seguro

He intentado hacer lo que explicas atomicko, pero no me sale.

He insertado un include en la página de este modo en la primera linea:
Código PHP:
<?php include"online.php";?>
Luego puse el mensaje de este modo, teniendo en cuenta que $u es el id del usuario:
Código PHP:
if(file_exists("./usuarios_en_linea/$u_ses.php")){
  echo
"El usuario esta en linea :)";
}else{
  echo
"El usuario ya se fue :("

Luego en archivo que llamé en lugar de arribota, login.php pegue y cambién lo de $AQUI_LA_ID_DEL_USUARIO por $id_user.
De todos modos no consigo saber como le llega la id del usuario a ese archivo.

Lo he probado y siempre me dice que el usuario está en linea...
Por cierto, en que unidades está esto?
Código PHP:
define("MAXIMO_DE_TIEMPO"1); 
Ese 1 que es, 1 minuto? 1 hora? 1 segundo?

Y otra cuestión.
Para sacar el id del usuario que está en linea y poder decir Hola Pepito, extrayendo así el nombre de una base de datos a partir del id...
¿Que tengo que hacer? Es que no entiendo muy bien que hace estos códigos...

Gracias por la respuesta.
  #6 (permalink)  
Antiguo 06/07/2007, 14:46
Avatar de Atomycko  
Fecha de Ingreso: diciembre-2005
Ubicación: Zapopan Jal.
Mensajes: 92
Antigüedad: 18 años, 3 meses
Puntos: 12
Re: Login seguro

Si es asi como lo pusiste, entonces esta mal:
Código PHP:
<?php include"online.php";?>
Te faltaron los "()" asi::
Código PHP:
<?php include("online.php");?>
__________________
PD: Los acentos fueron secuestrados.
  #7 (permalink)  
Antiguo 07/07/2007, 12:53
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
Re: Login seguro

Vale. Lo he cambiado a como me has indicado.

Pero la cuestión sigue igual.
Simpre me dice que el usuario está conectado....


Me han dicho que se puede hacer con variables de sesión. ¿sabeis algo de eso?

Gracias.
  #8 (permalink)  
Antiguo 09/07/2007, 02:23
Avatar de deccweb  
Fecha de Ingreso: febrero-2003
Ubicación: Mataro
Mensajes: 365
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Login seguro

Cita:
Iniciado por IMAC/ Ver Mensaje
Vale. Lo he cambiado a como me has indicado.

Pero la cuestión sigue igual.
Simpre me dice que el usuario está conectado....


Me han dicho que se puede hacer con variables de sesión. ¿sabeis algo de eso?

Gracias.
Si, tienes q hacer una sesión que guarde el idusuario.. y entonces en las paginas q necesite el idusuario se lo pides a la sesion.
__________________
Calle17.net

edgargranados.es
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 02:59.