- 论坛徽章:
- 0
|
关于注册然后收发邮件的写法,又有新问题
最近我刚写了一个类似的程序,给你部分代码参考一下吧,有错误欢迎指正
1、注册发送激活代码部分
- $activationcode = mkrandom();
- $subject = "恭喜您提交的".$config['site_name']."会员申请已被接受";
- $content = "您在 ".$config['site_name']."(".$config['site_url'].") 的会员申请已被接受,请用如下资料登录:\n\n"
- ."用户名:".$_POST['username']."\n\n"
- ."密码:".$_POST['password']."\n\n"
- ."请在24小时内按下面的地址链接激活您的帐号:\n\n"
- .$config['member_url']."member.php?op=activation&userid=".$pauserid."&activationcode=".$activationcode."\n\n"
- ."非常感谢您对我们的支持与信赖,欢迎您光临 ".$config['site_name']."。\n\n\n";
- $content .= "这是系统自动发出的邮件,请勿直接回复。\n";
- //添加激活代码到数据库
- $db_site->;query("INSERT INTO useractivation (userid,time,activationcode) VALUES ('$pauserid','".time()."','".addslashes($activationcode)."')");
- //发送激活邮件
- send_mail($tmp['email'], $subject, $content);
复制代码
2、用户激活部分
- // ############################### start activation user ###############################
- if ($_GET['op']=="activation") {
- $userid = intval($_GET['userid']);
- $db_site->;query("DELETE FROM useractivation WHERE time<".(time()-60*60*24)."");
- $checkuseractivation = $db_site->;query_first("SELECT * FROM useractivation WHERE userid='$userid' AND activationcode='".addslashes($_GET[activationcode])."'");
- if (empty($checkuseractivation)) {
- showMessage("你的激活密码不存在.");
- }
- if (time()>;($checkuseractivation['time']+60*60*24)) {
- $db_site->;query("DELETE FROM useractivation WHERE userid='$userid'");
- showMessage("你的激活密码已经过期.");
- } else {
- $db_site->;query("UPDATE userinfo SET usergroupid='2',isactive='1' WHERE userid='$userid'");
- $db_site->;query("DELETE FROM useractivation WHERE userid='$userid'");
- redirect("激活成功.",$config['member_url']);
- }
- }
复制代码
3、重新发送激活代码部分
- // ############################### start reactivation user ###############################
- if ($_GET['op']=="reactive") {
-
- if(intval($_GET['userid']) != 0){
- $userid = intval($_GET['userid']);
- $userinfo = $db_site->;query_first("SELECT userid,username,email FROM userinfo WHERE userid = '$userid'");
- }
-
- if(trim($_GET['username']) != ""){
- $username = trim($_GET['username']);
- $userinfo = $db_site->;query_first("SELECT userid, username, email FROM userinfo WHERE username = '$username'");
- }
- if(!empty($userinfo)){
- $activationcode = mkrandom();
- $subject = "恭喜您提交的".$config['site_name']."会员申请已被接受";
- $content = "您在 ".$config['site_name']."(".$config['site_url'].") 的会员申请已被接受,请用如下资料登录:\n\n"
- ."用户名:".$userinfo['username']."\n\n"
- ."密码:********\n\n"
- ."请在24小时内按下面的地址链接激活您的帐号:\n\n"
- .$config['member_url']."member.php?op=activation&userid=".$userinfo['userid']."&activationcode=".$activationcode."\n\n"
- ."非常感谢您对我们的支持与信赖,欢迎您光临 ".$config['site_name']."。\n\n\n";
- $content .= "这是系统自动发出的邮件,请勿直接回复。\n";
- //更新激活代码到数据库
- $db_site->;query("UPDATE useractivation set time= '".time()."', activationcode = '".addslashes($activationcode)."' WHERE userid = '".$userinfo['userid']."'");
- //发送激活邮件
- send_mail($userinfo['email'], $subject, $content);
- $sendMessage .= "您的注册等待邮件激活。<br>;<br>;一封如何激活的邮件已经发送到您注册的邮箱,请查收并在24小时内激活帐号。<br>;<br>;";
-
- $sendMessage .= "如果您长时间没有收到激活邮件,请按此<a href=\"".$config['member_url']."member.php?op=reactive&userid=".$userinfo['userid']."\">;重新发送</a>;激活邮件或与<a href=\"mailto:".$config['system_email']."\">;管理员联系</a>;。<br>;";
-
- }else{
- showMessage("会员名称不存在或输入错误.");
- }
- $tpl->;assign('op',"reactive");
- $tpl->;assign('sendMessage',$sendMessage);
- $tpl->;assign('config',$config);
- getTemplate('Member/Main.html');
- }
- [quote]
- 程序中使用了一写自定义的类和函数,不再详细列出[/quote]
复制代码 |
|