我一直在寻找一个简单的 php/mysql 解决方案,让用户注册一个帐户 - 在他们登录之前向管理员发送一个请求以获得批准。这可能吗,如果可以,它是否简单?
一直在寻找教程和以前的问题,但仍然一无所获!它成功注册,但我无法弄清楚向管理员电子邮件发送请求......
谢谢
我一直在寻找一个简单的 php/mysql 解决方案,让用户注册一个帐户 - 在他们登录之前向管理员发送一个请求以获得批准。这可能吗,如果可以,它是否简单?
一直在寻找教程和以前的问题,但仍然一无所获!它成功注册,但我无法弄清楚向管理员电子邮件发送请求......
谢谢
is_approved
您可以通过在用户表中添加一列来轻松实现它。
当用户注册时,您将此字段false
默认设置为。
向管理员发送有关新注册的电子邮件并批准用户只需更改is_approved
为true
.
当然,您应该在用户尝试登录时检查此值,如果为假则拒绝访问。
一个很好的资源是sfGuard包,它的代码完全符合您的需要。
您可以在 users 表中添加 BOOLEAN 列,user_approved
并将其默认设置为 0。
当新用户注册时,使用 PHP 邮件功能向管理员发送电子邮件请求批准:
$to = 'admin@yourwebsite.com';
$subject = 'User needs approval';
$message = 'The user {username} needs your approval' .
'----------------------------------- ' . "\r\n" .
'Accept: ' . $accept_link . "\r\n" .
'Decline: ' . $decline_link . "\r\n";
$_headers = 'From:admin@yourwebsite.com' . "\r\n"; // Set FROM headers
mail($to, $subject, $message, $headers); // Send the email
和可以使用PHP 哈希函数accept_link
生成decline_link
例如,您可以使用 SHA512 哈希:
$accept_link = "yourwebsite.com/approval.php?e=" . $email . "&h=" . hash('sha512', 'ACCEPT');
$decline_link = "yourwebsite.com/approval.php?e=" . $email . "&h=" . hash('sha512', 'DECLINE');
在 PHP 脚本approval.php
中,您可以简单地检查获取变量并检查管理员是否想要接受或拒绝注册请求。
$hash = $_GET['h'];
$email = $_GET['e'];
if($hash == hash('sha512', 'ACCEPT')){
//ACCESS MYSQL DATABASE
//FIND THE USER AND SET user_approved = 1
//WHERE email = $email
}else if($hash == hash('sha512', 'DECLINE')){
//MAIL THE USER NOTIFYING THAT THE ACCOUNT HAS NOT BEEN APPROVED
}
如果你想给管理员发邮件,PHP 有 mail() 函数: http: //php.net/manual/en/function.mail.php
#given $email, $user
$mail_success = mail("admin@mysite.net","User Registration awating approval","User ".$user." has registered and is on the waiting list.\n User's email: ".$email);
if(!$mail_success) { echo "Warning: Mail delivery failed"; }
请注意,mail() 函数对于发送多封电子邮件根本没有效率。