0

我正在将自动登录系统与 joomla 和 WHMCS 集成。

我想要的是 joomla 和 WHMCS 的单一登录。当我登录 joomla 时,我需要自动登录我的 WHMCS 系统,反之亦然。我已经通过了 WHMCS API,它使用 'dologin.php' 文件进行了 AuthAuto 登录。但是在我登录我的 joomla 后,它需要重定向到我的 WHMCS,我不需要。

即使我在我的 api 调用中使用了“验证登录”操作。我还挂上了“ClientLogin”并给我发了一封电子邮件。当我通过 joomla 登录时,这个钩子被调用了。但是当我刷新时我的 WHMCS 没有登录。

$url = "http://myjoomlasiteurl/includes/api.php"; 
$username = "xxxxxx"; 
$password = "xxxxxxxxxx";
$postfields= array();
$postfields["username"] = $username;
$postfields["password"] = md5($password);       
$postfields["accesskey"] = "xxxxx";

$postfields["action"] = "validatelogin";
$postfields["email"] = "user@domain.com";
$postfields["password2"] = "xxxxx"; 


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
if (($result= curl_exec($ch)) !== false) {
 $data= format_result($result);

 $_SESSION['uid'] = $data['userid'];
 $_SESSION['upw'] = $data['passwordhash'];

} 
curl_close($ch);

在我的 WHMCS 钩子中。我已将代码编写为:

function hook_client_logint($vars) {

     ob_start();
     var_dump($_SESSION);
     $content= ob_get_contents();
     @mail('myemailid,'User Login',$content);
     ob_end_clean();
     # Here i ma getting email after i logged in to my Joomla site. 
     session  variable 'uid' and 'upw' are  being set.

 }

 add_hook("ClientLogin",1,"hook_client_login");
4

1 回答 1

3

不要使用重定向登录,只需通过访问CURL,获取页面检查HTTP响应为200

您需要 2 个 Joomla 插件 ( authenticate,user)

你需要一个钩子 3 动作:

  • 添加客户端
  • 创建 Joomla 用户
  • ClientLogin - 调用登录 Joomla 用户
  • ClientLogout - 调用注销 Joomla 用户
  • ClientChangePassword - 调用以更新 Joomla 用户的密码

CURL由于令牌,实际上不能轻易地通过调用 Joomla 。

但是您可以创建一个组件视图,然后您可以在那里提交一个带有信息的 POST 请求,在这种情况下是电子邮件和密码

这可能会有所帮助

于 2012-11-21T01:24:04.943 回答