2010-11-16 45 views
0

我知道這聽起來很愚蠢,但我們有一個客戶發送通訊。但目標市場非常計算機不識字,所以客戶要求我們在通訊的網址中嵌入登錄詳細信息,以便用戶可以在Joomla前端自動登錄。

我所說的是我們只是做一個腳本,它使用$ _GET從url獲取用戶名和密碼,然後如何將它傳遞給$ my對象,只有在用戶通過Joomla登錄頁面?

顯然,我沒有在這裏獲得與代碼相關的所有內容,但概念保持不變,我們希望自動使用URL登錄人們,然後如果它可以將它們重定向到他們想要去的頁面,所有一掃而光。

在此先感謝您的任何意見&意見。

+1

你可以編寫一個認證插件來爲你處理。但我必須警告你,你要做的事可能會被濫用,並可能導致問題......如果有人將電子郵件轉發給朋友,該怎麼辦?那麼他們會自動以該人的身份登錄?我會尋找另一種解決方案,或者至少嘗試實際定義手頭的問題...... – ircmaxell 2010-11-16 13:54:21

+0

這在安全性方面很愚蠢。 – 2010-11-16 13:54:32

+3

我無法幫助您使用Joomla,但是如果您發送某種使用方式(一次使用unique-id並使用該方式登錄)會更好。我不會返回到一個網站,該網站將我的用戶名和密碼設置爲純文本。 – acm 2010-11-16 13:54:43

回答

2

這是在安全性方面可怕,但所有你需要做的是通過

login.php?username=X&password=Y 

,改變你的登錄接受$ _ POST

$username = $_REQUEST['username']; 
$password = $_REQUEST['password']; 

$loggedIn = User::Login($username, $password); 

但同樣$ _REQUEST代替從安全的角度來看這是可怕的。

如果你真的需要一種快速的方式來做到這一點,你應該考慮發郵件給他們一些鹽和他們的用戶名的散列,然後以這種方式登錄。事情是這樣的:

login.php?user=aw48hgghsudghaw9eg 

類似然後

$hash = $_GET['user']; 
$result = mysql_query("SELECT username, password 
         FROM users 
         WHERE md5("SALT_STRING", username) = $hash"); 
if (mysql_num_rows($result)) { 
    $row = mysql_result($result); 
    $loggedIn = User::Login($row['username'], $row['$password']); 
} 

什麼的。

+0

即使這不是很好恕我直言(因爲如果有人算出你的鹽,他們可以登錄任何他們想要的人)...我寧願看到一次性使用的令牌生成存儲在另一個表(它被刪除,一旦它用過的)。再說一遍,我寧願不會看到這樣做,因爲它首先破壞了身份驗證的目的... – ircmaxell 2010-11-16 14:33:58

+0

我完全同意你在兩個方面o.O另外,感謝您的編輯。 – sent1nel 2010-11-16 14:57:55

+0

+1爲你的努力和有關安全的警告 – acm 2010-11-16 15:35:34

1
 $mainframe = JFactory::getApplication(); 
     $credentials = array(); 
     $credentials['username'] = $app->input->get('username', '', 'string'); 
     $credentials['password'] = $app->input->get('password', '', 'raw'); 
     $mainframe->login($credentials); 
     //$mainframe->redirect(JRoute::_('index.php', false));