php

Integrare gli utenti di phpBB3 in WordPress

Altro post di integrazione bizarra. Come suggerisce il titolo questa volta parliamo di come agganciare il sistema di autenticazione di phpBB3 ad un blog WordPress in modo tale che gli utenti loggati nel forum possano commentare post nel blog senza dover inserire nuovamente nome ed e-mail. In questo modo é possibile sfruttare le potenzialità di entrambi i sistemi, creare una sorta di community e incentivare la partecipazione degli utenti.

Come nel caso precedente (Integrare phpBB3 in un sito asp.net) anche in questo caso il livello di integrazione che cerchiamo e decisamente debole e semplicemente mirato alla individuazione dell’utente loggato in phpBB3 al momento dell’inserimento dei commenti. La modifica da apportare a WordPress é elementare e consiste nell’aggiunta di alcune rihge nel file comments.php che vanno a controllare l’esistenza del cookie di autenticazione e successivamente interrogano il database del forum per estrarre le informazioni sull’utente.

La modifica da apportare al file comments.php del proprio tema installato è la seguente e va a sostituire la parte iniziale dell’istruzione html form:

...

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">

<?php
//inizio modifica per personalizzazione
    $userSID = $_COOKIE["phpbb3_osrzf_sid"];

    $sqlSelect = "SELECT username, user_email, user_avatar, user_id " .
    "FROM forum.phpbb_users " .
    "INNER JOIN forum.phpbb_sessions ON session_user_id = user_id " .
    "WHERE session_id = '" . $userSID . "'";

    $result = $wpdb->get_row($sqlSelect, ARRAY_A);

    $myUserName = $result['username'];
    $myEmail = $result['user_email'];

//fine modifica per interrogazione
?>

<?php if ($myUserName!='Anonymous' and $myUserName!='') : ?>

<p>Logged in as <a href=""><?php echo $myUserName; ?></a>.</p>
<input type="hidden" name="author" id="author" value="<?php echo $myUserName; ?>" />
<input type="hidden" name="email" id="email" value="<?php echo $myEmail; ?>" />

<?php else : ?>

...

Molto semplicemente la routine va a cercare il cookie di autenticazione di phpBB3 – che in questo caso è identificato dal nome phpbb3_osrzf_sid – e interroga il database per risalre dal valore sessionID all’effettivo ID dell’utente e di conseguenza a tutti i relativi dati. In questo caso ci siamo limitati ad estrarre le informazioni richieste da WordPress (username e indirizzo e-mail) ma niente ci vieta di estendere le funzionalità estraendo per esempio anche l’avatar o la firma associata al profilo.

Perchè questo codice funzioni è necessario che i due database, WordPress e phpBB3, risiedano sullo stesso server e condividano gli stessi dati di autenticazione. In caso i db abbiano stringhe di connessione differenti la funzione $wpdb->get_row non funziona e per ottenere i dati é necessario effettuare una connessione ed una interrogazione ad hoc al database di phpBB3.

[nggallery id=2]

Lascia un commento