2010-11-16 38 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));