你们中的大多数人可能知道伟大的WHMCS AutoAuth功能,它允许我们创建链接,将用户发送到它的客户区而不用提示用户名和密码。

但是如果你想通过电子邮件发送这样的链接呢?

这可能是一个挑战,因为:

时间戳必须在自动接受服务器的服务器时间的15分钟内,否则该链接被视为已过期

问题实际上是关于不允许在不同的电子邮件下使用相同的电子邮件链接进行自动登录。

所以让我们进入管理 - >电子邮件模板 - >您的模板
首先,我们应该在电子邮件模板中设置安全链接生成。我们只需添加额外的参数。让我们称之为哈希(hash)。

Click below to login automatically:
{assign var='hash' value=$client_email|concat:"your_secret_key"}
 
http://yourdomain.com/autologin.php?email={$client_email}&hash={$hash|md5}

我们将在服务器端检查这个非常特殊的参数。
autologin.php:

# Define WHMCS URL & AutoAuth Key
$whmcsurl = "http://yourdomain.com/dologin.php";
$autoauthkey = "auto_auth_key"; #AutoAuth Key, ATTENTION: should be defined in configuration.php aswell!
$secret_key = "your_secret_key"; #Should be same as you defined in email template
 
if (md5($_GET['email'].$secret_key) != $_GET['hash'])
die();//dying here because hash is not equal
 
$timestamp = time(); # Get current timestamp
$email = $_GET['email']; # Clients Email Address to Login
$goto = "clientarea.php"; # Here you can set default user page
 
$hash = sha1($email.$timestamp.$autoauthkey); # Generate Hash
 
# Generate AutoAuth URL & Redirect
$url = $whmcsurl."?email=$email&timestamp=$timestamp&hash=$hash&goto=".urlencode($goto);
header("Location: $url");
exit;

为了使所有的工作你需要:

为了使所有的工作你需要:
-autologin.zip(把它放在root的WHMCS目录下)
- 不要忘记更改你的密钥并定义$ configuration.php中的$ autoauthkey

对于7.x用户,您不需要上传smarty concat插件,因为它应该已经可用,它被称为“猫”。所以在电子邮件模板中调用它将如下所示:

Click below to login automatically:
{assign var='hash' value=$client_email|cat:"your_secret_key"}
 
http://yourdomain.com/autologin.php?email={$client_email}&hash={$hash|md5}