Jue Ago 18, 2005 4:15 am
|
 |
j0as
Perlero Nuevo

|
Registrado: 18 Ago 2005
Mensajes: 12
|
|
| Usar sesión de un foro php en mi sitio web hecho en Perl |
|
|
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 |
|
|
|

Jue Ago 18, 2005 6:56 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
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 |
|

Sab Ago 20, 2005 11:55 am
|
 |
j0as
Perlero Nuevo

|
Registrado: 18 Ago 2005
Mensajes: 12
|
|
|
|
|
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: |
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 |
|

Sab Ago 20, 2005 4:40 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
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: |
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.baboonsoftware.com/archives-tut/000047.html
Como conectarte a tu database
http://perlenespanol.baboonsoftware.com/archives-tut/000045.html
SALUDOS |
|

Dom Ago 21, 2005 5:24 am
|
 |
j0as
Perlero Nuevo

|
Registrado: 18 Ago 2005
Mensajes: 12
|
|
|
|
|
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 |
|

Dom Ago 21, 2005 7:15 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
| j0as escribió: | 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 |
|

Dom Ago 21, 2005 3:08 pm
|
 |
j0as
Perlero Nuevo

|
Registrado: 18 Ago 2005
Mensajes: 12
|
|
|
|
|
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 |
|
Dom Ago 21, 2005 7:38 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
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 |
|
Lun Ago 22, 2005 4:53 am
|
 |
j0as
Perlero Nuevo

|
Registrado: 18 Ago 2005
Mensajes: 12
|
|
|
|
|
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 |
|

Lun Ago 22, 2005 9:34 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
| j0as escribió: | | 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: |
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: |
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 |
|

Lun Ago 22, 2005 11:33 am
|
 |
j0as
Perlero Nuevo

|
Registrado: 18 Ago 2005
Mensajes: 12
|
|
|
|
|
Muchas gracias, estos días estaré liado así que, en 15 días lo pruebo.
Saludos |
|
Lun Ago 22, 2005 1:32 pm
|
 |
j0as
Perlero Nuevo

|
Registrado: 18 Ago 2005
Mensajes: 12
|
|
|
|
|
Finalmente lo he probado y funciona
Un saludo |
|
Powered by phpBB © 2001, 2005 phpBB Group
|