0

自動ログインシステムを joomla および WHMCS と統合していました。

私が望むのは、joomla と WHMCS の両方の単一ログインです。joomla にログインすると、自動的に WHMCS システムにログインする必要があり、その逆も必要です。私は WHMCS API を調べました。「dologin.php」ファイルを使用した AuthAuto ログインがあります。しかし、必要のない joomla にログインした後、WHMCS にリダイレクトする必要があります。

API呼び出しで「validatelogin」アクションを使用しました。また、「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アクションが必要です:

  • addClient
  • Joomlaユーザーを作成する
  • ClientLogin-Joomlaユーザーにログインするための呼び出しを行います
  • ClientLogout-Joomlaユーザーをログアウトするための呼び出しを行います
  • ClientChangePassword-Joomlaユーザーのパスワードを更新するための呼び出しを行います

トークンが原因で、Joomlaへの呼び出しをCURL実際に簡単に行うことはできません。

ただし、コンポーネントビューを作成して、その情報(この場合は電子メールとパスワード)を使用してPOSTリクエストを送信できます。

これは役立つかもしれません

于 2012-11-21T01:24:04.943 に答える