• Publicidad

Usar sesión de un foro php en mi sitio web hecho en Perl

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Usar sesión de un foro php en mi sitio web hecho en Perl

Notapor j0as » 2005-08-18 05:15 @260

Hola,

Estoy haciendo un portal en Perl y MySQL. El sitio web simplemente es una revista, con lo cual se trata de una parte en donde se logean redactores para escribir los artículos y la otra parte es la pública donde simplemente mediante Perl y MySQL se selecciona la información y se imprime. El problema comienza al querer añadirle un foro. No conozco ningún foro decente en Perl + MySQL. Usaría YaBB que es en Perl pero usa txt's y quiero que sea el propio foro el que tenga las fichas de los usuarios con la contraseña, etc. Pensé en usar SMF que es PHP y MySQL pero no doy cogido la sesión de ese foro en PHP y usarla en el resto del sitio web hecho en Perl. He pensado en usar un módulo interprete de PHP, un módulo llamado PHP::Session, módulos tipo CGI::Session o Apache:Session... Pero no me apaño.

A ver si alguien me puede ayudar.

Un saludo
j0as
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2005-08-18 05:08 @255

Publicidad

Notapor kidd » 2005-08-18 07:56 @372

Hola:

Te recomiendo que uses el módulo CGI::Session, es bastante sencillo de usar y uniendolo junto con un databae MySQL puedes tener bastante poder con tus sesiones.

Ahora, en cuanto al foro, no creo que sea muy complicado que puedas fusionar las sesiones de tu foro junto con las de tu sitio, más si ambos estan bajo el mismo dominio.

Lo que debes de hacer es después de seleccionar el foro que deseas, ver como guarda el cookie de la sesión tu foro, es decir con que nombre. Y pues en cualquier parte de tu sitio puedes levantar esa cookie y checar con el database la sesión del usuario. Bastante sencillo hacer esto con perl.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor j0as » 2005-08-20 12:55 @580

Por ejemplo en el caso de phpBB, al principio de cualquiera de sus archivos .php en las primeras lineas se incluye archivos phpBB y comienzo de sesión. Por ejemplo en la página de FAQ este es el gestor de sesiones:
Código:
Código: Seleccionar todo
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_FAQ);
init_userprefs($userdata);
//
// End session management
//

Después de ejecutar ese código tienes la variable $userdata que incluye la sesión y la información del usuario. Siempre cambiando $phpbb_root_path a la ruta correcta y también me dijeron que tengo que cambiar PAGE_FAQ a -1 que no sé para que es. Para saber si el usuario está logeado hay que usar $userdata['session_logged_in'], y para coger el nombre de usuario: $userdata['username']

Así que no sé como hacerlo desde Perl si es necesario ejecutar ese código en cada página.

Saludos
j0as
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2005-08-18 05:08 @255

Notapor kidd » 2005-08-20 17:40 @777

Hola:

En la configuración de PHPBB puedes seleccionar el nombre que quieres que tenga el cookie de la sesión. Entonces todo lo que tienes que hacer es levantar el cookie para tener el ID de la sesión.

Ya que tengas el ID, entonces te conectas al database. Dentro del DB, el programa del foro crea una tabla que se llama: phpbb_sessions.

Dentro de esta tabla tienes los siguientes campos:

Código: Seleccionar todo
   session_id  char(32)
   session_user_id  mediumint(8)
   session_start  int(11)             
   session_time  int(11)
   session_ip  char(8)
   session_page  int(11)
   session_logged_in  tinyint(1)
   session_admin  tinyint(2)


Todo lo que tienes que hacer es agarrar el registro en donde el campo session_id sea el mismo que el que tienes del cookie. Y listo, ya tienes todos los datos de la sesión.

Es realmente sencillo, y aquí te dejo un poco de documentación que te va a servir para implementar esto:

Aprendiendo a usar cookies
http://perlenespanol.com/archives-tut/000047.html

Como conectarte a tu database
http://perlenespanol.com/archives-tut/000045.html


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor j0as » 2005-08-21 06:24 @308

Lo intentaré. Pero me suena haber visto el otro día que en la tabla de sessions solo estaba la última visita y el SID.

Por cierto, el phpBB de este web utiliza SID por GET cuando "fallan" las cookies. Esto viene predeterminado en phpBB, le instalaste un mod o que? Es que he visto foros phpBB que sólo funcionan con SID por GET. A mi me interesa que sea como el de aquí, cookie y si falla que lo haga con GET.

Por cierto, ¿la cookie no estará serializada/codificada? Lo digo para coger el SID de ahí.

Saludos
j0as
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2005-08-18 05:08 @255

Notapor kidd » 2005-08-21 08:15 @385

j0as escribiste:Lo intentaré. Pero me suena haber visto el otro día que en la tabla de sessions solo estaba la última visita y el SID.

Por cierto, el phpBB de este web utiliza SID por GET cuando "fallan" las cookies. Esto viene predeterminado en phpBB, le instalaste un mod o que? Es que he visto foros phpBB que sólo funcionan con SID por GET. A mi me interesa que sea como el de aquí, cookie y si falla que lo haga con GET.

Por cierto, ¿la cookie no estará serializada/codificada? Lo digo para coger el SID de ahí.

Saludos


Podría ser diferente, dependiendo la versión de tu foro, aunque te recomiendo que lo actualizes lo antes posible.

Ahora, en cuanto a lo de los cookies, debes de poder configurar todo esto desde el Panel de Administración.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor j0as » 2005-08-21 16:08 @714

Muchas gracias, me estás siendo de mucha ayuda.

¿Una vez tenga la sesión ID y la cookie y sepa relacionarla puedo usar el CGI::Session o Apache::Session? ¿O voy a tener que hacerme mi propio gestor de sesiones?

Saludos
j0as
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2005-08-18 05:08 @255

Notapor kidd » 2005-08-21 20:38 @901

Hola:

Si, ya que tengas el número de sesión puedes usar CGI::Session, y puedes usar el mismo cookie, así no importa donde hagan logout tus usuarios, lo harían tanto en el foro como en el sitio y viceversa.

Te recomiendo que leas los manuales de los módulos y empieces a hacer pruebas, vas a ver que los módulos te facilitan en gran manera el trabajo.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor j0as » 2005-08-22 05:53 @287

Pero CGI::Session imagino que no es capaz ni de leer la cookie, ni de leer la tabla de sesiones correctamente, ¿no es así? Tendría que leer la cookie manualmente e indicarle cual es el SID y hacer lo mismo con las tablas sessions, ¿no?

Saludos
j0as
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2005-08-18 05:08 @255

Notapor kidd » 2005-08-22 10:34 @482

j0as escribiste:Pero CGI::Session imagino que no es capaz ni de leer la cookie, ni de leer la tabla de sesiones correctamente, ¿no es así? Tendría que leer la cookie manualmente e indicarle cual es el SID y hacer lo mismo con las tablas sessions, ¿no?


De hecho usando el CGI::Session puedes levantar la sesión desde el cookie:

Código: Seleccionar todo
my $sid = $cgi->cookie("[NOMBRE COOKIE]") || undef;


Todo lo que tienes que hacer es remplazar [NOMBRE COOKIE] por el nombre del cookie que estás creando y listo, la variable $sid contendra el número de sesión.

Con eso ya puedes accesar al database, por ejemplo en MySQL:

Código: Seleccionar todo
my $dbh = DBI->connect("DBI:mysql:host=[HOST];database=[DB]", [username], [pass]);

my $sth = $dbh->prepare('SELECT * FROM phpbb_sessions WHERE session_id=?');
      $sth->execute($sid);
my $sesion = $sth->fetchrow_hashref();

print $$sesion{'session_user_id'} . "\n";   #imprime el ID del usuario


Realmente es sencillo, usando los módulos correctos.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Siguiente

Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados