我一直在寻找一个简单的php/mysql解决方案,为用户注册一个帐户 - 在登录前向管理员发送请求以进行批准 这是可能的如果是这样,它是直截了当的吗?PHP管理员批准用户注册
一直在寻找教程和以前的问题,仍然无处可寻! 它注册成功,但我还没有能够找出发送给管理员的电子邮件的请求......
感谢
我一直在寻找一个简单的php/mysql解决方案,为用户注册一个帐户 - 在登录前向管理员发送请求以进行批准 这是可能的如果是这样,它是直截了当的吗?PHP管理员批准用户注册
一直在寻找教程和以前的问题,仍然无处可寻! 它注册成功,但我还没有能够找出发送给管理员的电子邮件的请求......
感谢
如果你想发送电子邮件给管理员,PHP有邮件()函数: http://php.net/manual/en/function.mail.php
#given $email, $user
$mail_success = mail("[email protected]","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"; }
注意,邮件()函数没有efficent在所有发送多封电子邮件。
您可以通过在您的用户表中添加一列is_approved
来轻松实现它。
当用户注册时,默认情况下将此字段设置为false
。
向管理员发送有关新注册的电子邮件,并批准用户只需将is_approved
更改为true
。
当用户尝试登录时,应该检查该值,如果该值为false,则拒绝访问。
一个很好的资源是sfGuard包,其中的代码完全符合您的需求。
您可以将BOOLEAN列添加到您的用户表user_approved
并默认将其设置为0。
当一个新用户注册,发送电子邮件给管理员使用PHP邮件功能要求进行审批:
$to = '[email protected]';
$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:[email protected]' . "\r\n"; // Set FROM headers
mail($to, $subject, $message, $headers); // Send the email
的accept_link
和decline_link
可以使用PHP哈希函数
生成例如,您可以使用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
}
如何在你的主应用程序和用户添加另一列称为'IsApproved TINYINT(1)DEFAULT 0'了'User'表,则仅显示用户的'1'值与'价值0“在您的管理页面上。 '1' = true。 '0' = false。 – Jonathan
您是否找到解决方案?如果是这样,请发布完整的代码作为答案,以便它可以帮助其他人.... – fresher