Estimado Andrés, puedes crear un
formulario html en tu otra aplicación con las siguientes
características:
<form action="
http://<TU
SITIO>/index.php?option=com_users&view=login&task=user.login"
method="post">
<input type="text" name="username" value="<TU
USUARIO>">
<input type="password" name="password"
value="<TU CLAVE>">
<input type="hidden"
name="a09b5c51ae3ce12d6e2d531f40ecdde9" value="1">
</fieldset>
</form>
Ten cuidado con el input hidden name:
a09b5c51ae3ce12d6e2d531f40ecdde9, esto es en realidad un objeto
TOKEN de jokte, algo así como:
<?php echo JHtml::_('form.token'); ?>
Este objeto que pertenece a la API de jokte se puede usar sólo en
CMS que deriven de joomla. En la siguiente URL puedes encontrar
información:
http://api.joomla.org/__filesource/fsource_Joomla-Platform_Session_librariesjoomlasessionsession.php.html#a741
La clase que crea el token es esta:
protected function _createToken($length = 32)
{
static $chars = '0123456789abcdef';
$max = strlen($chars) - 1;
$token = '';
$name = session_name();
for ($i = 0; $i < $length; ++$i)
{
$token .= $chars[(rand(0, $max))];
}
return md5($token . $name);
}
Por lo que puedes notar que de algún modo, se hace referencia al
la sesión en curso del CMS (puede ser la sesión anónima que se
genera cuando aún no te has logueado). Luego el número que yo te
he señalado en el formulario es sólo una referencia y no garantizo
que te funcione siempre.
Lo correcto sería crear un plugin o por último una hoja php suelta
que te sirviera como enlace, en esa hoja o plugin importas las
librerías de jokte necesarias (si lo haces como plugin tienes
mejor acoplamiento y tal vez no necesites importar toda la API),
algo así como lo que sigue:
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
if (file_exists(dirname(__FILE__) . '/defines.php')) {
include_once dirname(__FILE__) . '/defines.php';
}
if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(__FILE__));
require_once JPATH_BASE.'/includes/defines.php';
}
require_once JPATH_BASE.'/includes/framework.php';
Luego puedes poner ahí el procesamiento del formulario externo
agregándole el:
JHtml::_('form.token');
o puedes dejar lo anterior en una variable de salida y llamarlo
por ajax a tu otra aplicación (recuerda que los llamados ajax
deben ocurrir en el mismo servidor, por lo que tu aplicación y tu
jokte deben estar en la misma máquina).
También lo puedes hacer utilizando CURL y PHP, la forma es
similar, la URL de destino debe ser:
http://<TU
SITIO>/index.php?option=com_users&view=login&task=user.login
y las variables:
username = <TU USUARIO>
password = <TU CLAVE>
Espero haberte dado algunas ideas. Saludos,
Hernán Roa Reyes
Desarrollo Software
El 24/04/13 00:06, JDoc escribió: