Banalmente il codice prodotto è il seguente:
<?php
/**
* @version 0.1
* @package ExternalLogin
* @copyright (C) 2006 Antonio Cirasole
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
/** ensure this file is being included by a parent file */
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
// handle the task
$task = mosGetParam( $_REQUEST, 'task', '' );
switch ($task)
{
case 'setup':
switchSetup();
break;
default:
externalInitSession();
break;
}
/**
* Effettua il setup per il reindirizzamento alla pagina del profilo
*/
function switchSetup ()
{
global $my, $database;
if (!$database)
{
mosErrorAlert( 'Errore di connessione con il database!');
}
// Salvo i dati necessari ad effettuare il login sul sito affiliato
else
{
$sql = "SELECT `password` FROM `jos_users` WHERE `username` LIKE '$my->username'";
$result = mysql_query ($sql);
$result = mysql_fetch_array ($result);
$pass = $result['password'];
$sql = "INSERT INTO `profile_switch` ( `ipAdress` , `user` , `password` )
VALUES (
'".$_SERVER['REMOTE_ADDR']."', '$my->username', '$pass'
); ";
mysql_query ($sql);
}
// Cambio sito
mosRedirect('http://localhost/sito1/index.php?option=com_extlogin');
exit;
}
/**
* Inizializza la sessione, effettua il login e reindirizza alla pagina del profilo
*/
function externalInitSession() {
global $mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix;
echo ("$mosConfig_host/n");
echo ("$mosConfig_user/n");
echo ("$mosConfig_password/n");
echo ("$mosConfig_db/n");
echo ("$mosConfig_dbprefix/n");
$database = new database($mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix);
$mainframe = new mosMainFrame( $database, "login", $mosConfig_absolute_path );
$mainframe->initSession();
$sql = "SELECT `user`,`password` FROM `profile_switch` WHERE `ipAdress` LIKE '".$_SERVER['REMOTE_ADDR']."'";
$result = mysql_query ($sql);
$result = mysql_fetch_array ($result);
$pass = $result['password'];
$user = $result['user'];
$mainframe->login($user, $pass);
$sql = "DELETE FROM `profile_switch` WHERE `ipAdress` LIKE '".$_SERVER['REMOTE_ADDR']."'";
mysql_query ($sql);
mosRedirect('http://localhost/sito1/index.php?option=com_comprofiler');
}
?>
Questo è il codice principale del componente che ho creato. Il componente deve essere installato sia sul sitoPadre che sul sitoFiglio anche se quello sul sitoPadre può essere facilmente sostituito da un modulo o componente fatto alla maniera suggerita da -napo- (che ovviamente si porta dietro delle ulteriori modifiche al codice scritto da me evitando l'uso di una tabella esterna).