2012-01-19 1 views
1

Joomlaのコンポーネントを開発中です。それは人気のある社会的なウェブサイトとの統合を持っています。私は、特定の社会的プロファイルを介してデータベースからユーザー情報を取得します。その後、私は次のコードで、このユーザのログインをしよう:コントローラでのJoomlaマニュアルログイン

$fbuser = $facebook->api(
       '/me', 
       'GET', 
       array(
        'access_token' => $_SESSION['active']['access_token'] 
       ) 
      ); 

      // Get a database object 
      $db =& JFactory::getDBO(); 
      $query = "SELECT * FROM #__users WHERE email = '".$fbuser['email']."';"; 
      $db->setQuery($query); 
      $row = $db->loadRow(); 

      if(isset($row)) 
      { 
       $app = JFactory::getApplication(); 
       $user =& JUser::getInstance($row[0]); 

       $credentials = array(); 
       $credentials['username'] = $user->get('username'); 
       $credentials['password'] = $user->get('password'); // When I change this to related users plain password then it works 

      $options = array(); 
       $options['remember']  = true; 
       $options['silent']  = true; 

       $app->login($credentials, $options); 
      } 
      else 
      { 
       return 'There is no account associated with facebook'; 
      } 

問題は、データベースのリターンエンコードされたパスワードであり、これは動作しません。復号化されたパスワードを$ credentialに与えると、それは動作します。何が問題なの?

答えて

2

一つのオプションは、あなたと、サイトに知られている特定のパスワードを使用して、任意のユーザでログインします独自の認証プラグイン(非常に簡単な作業)を作成することです。

次に、そのパスワードを既知のユーザー名とともに入力できます。

セキュリティのために、そのプラグインが管理者ではなく一般ユーザーのみにログインできるようにしてください。ログオン機能Joomlaのための配列$資格情報で

0

pwd(データベースに格納されている方法)をMD5ハッシュする必要があります。

はこれを試してみてください。

$salt = '19IQYkelXrqVH1Eht6PFOIZRe5T1SQHs'; 
$pwd = md5_hex($pwd . $salt) .":$salt"; 
$query = "select name,username,email,password from jos_users where password = $pwd;"; 
... 
+0

あまり良くないではありません[ 'パスワード'] =する$ user->( "パスワード")を取得します。これは機能しません。プレーンな(デコードされていない)パスワードを供給すると、それは動作します。 – mert

+0

あなたのコードを添付して、正確な問題/エラー/失敗が何であるかを述べてください。その後、一緒に検討して – alfasin

+0

を討議してください。 – mert

0
  // --- login mamanam.com 
      $app = JFactory::getApplication();  
      $credentials = array(); 
      $credentials['username'] = $username; 
      $credentials['password'] = $password; 
      $app->login($credentials); 

必要なパラメータ=配列()! $ APP->ログイン($資格情報)

*申し訳ありませんが、私の英語は$資格情報を使用してませIすでにエンコードされますパスワード

+0

;私達はそれ今回 釘付け http://www.sourcecoast.com/jfbconnect/features/joomla-facebook-login-button 希望: はまたのような既存のプラグインを使用することができます低品質とフラグが立てられました。それが質問に答える場合は、それがどのように機能するかを説明するテキストを少し追加することを検討してください。 – lmo

+0

ログオン関数の配列 '$ credentials = array()'に必要なパラメータJoomla! '$ app-> login($ credentials)' -----私の英語はあまり良くありません – Sh4msi

+0

この情報を追加していただきありがとうございます。コメントは読むのが難しく、時間の経過とともに消える傾向があるため、答えの中に入れておく方がよいでしょう。 – lmo

関連する問題