用户注册的PHP管理员批准

时间:2012-05-16 23:33:26

标签: php mysql administration user-accounts

我一直在寻找一个简单的php / mysql解决方案,供用户注册一个帐户 - 在他们登录之前向管理员发送请求以获得批准。 这可能吗,如果可以的话,这很简单吗?

一直在寻找教程和以前的问题,但仍然无处可去! 它成功注册,但我还没有能够找到向管理员电子邮件发送请求...

由于

3 个答案:

答案 0 :(得分:1)

您可以通过向用户表中添加列is_approved轻松实现它。

当用户注册时,默认情况下将此字段设置为false

向管理员发送有关新注册的电子邮件,并批准用户只需将is_approved更改为true

当用户尝试登录时,您应检查此值,如果错误,则应拒绝访问。

一个好的资源是sfGuard包,它的代码完全符合您的需要。

答案 1 :(得分:1)

您可以将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_linkdecline_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

}

答案 2 :(得分:0)

如果要向管理员发送电子邮件,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()函数根本不会发送多封电子邮件。