免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3273 | 回复: 9
打印 上一主题 下一主题

关于注册然后收发邮件的写法,又有新问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-13 07:42 |只看该作者 |倒序浏览
现在再写一个php的东西,据说要求在注册以后能够得到一封从系统发出的邮件(这个不是很难)但是问题是要在邮件里面给出一个连接,然后由点击连接激活账号,不晓得怎么搞,有没有人知道啊——

论坛徽章:
0
2 [报告]
发表于 2004-12-13 07:43 |只看该作者

关于注册然后收发邮件的写法,又有新问题

对了,这个连接是有限时的,超过一小时的话要求自动注销

论坛徽章:
0
3 [报告]
发表于 2004-12-13 08:44 |只看该作者

关于注册然后收发邮件的写法,又有新问题

在数据表里记录一个时间戳记的编码,连同原时间戳记,再保留一个激活标记
作为变量把编码包括于连接中,访问激活页时校验编码和时间戳记与系统时间的差值,判断是否更改激活标记

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2004-12-13 13:17 |只看该作者

关于注册然后收发邮件的写法,又有新问题

注册:
1、得到当前时间,具体看PHP的函数之中关于时间的
2、生成一个认证码,需要自己设计一个算法,使得其最好是唯一的,具体看PHP手册基本语法部分
3、设计一个特定的连接,其后附上:&sid=认证码,具体先学一下子HTML
4、给用户发送电子邮件,其中包含这个连接,具体先学一下子HTML的A标志以及PHP的电子邮件函数
5、如果发送成功,将用户的注册数据写入临时数据表,同时附加上一个标志为isemail(默认为0),sid(就是前面生成的),sendtima(就是前面获得的时间),具体先学一下子PHP和对应的SQL

用户点电子邮件确认:
1、获取当前时间
2、获取连接之中sid
3、将1与数据表的这个sid的对应的sendtime,如果超过某一个时间,就删除,让他再去注册
4、如果通过,那么将用户注册信息插入正式用户表

论坛徽章:
0
5 [报告]
发表于 2004-12-13 18:22 |只看该作者

关于注册然后收发邮件的写法,又有新问题

首先谢谢!!非常之感谢。
其次,有没有之类的详细资料,可以让我学一下。
主要我的时间比较紧。

谢谢斑竹

论坛徽章:
0
6 [报告]
发表于 2004-12-13 18:28 |只看该作者

关于注册然后收发邮件的写法,又有新问题

生成连接用html代码来完成,至于时间很简单!在账户表中记录注册时间,然后再激活程序里边坐一个时间比较!如果时间在一个小时以内就让他激活,如果已经过了一个小时,就报错,直接
echo "您的激活已超时,请重新注册";
就一切ok了!

论坛徽章:
0
7 [报告]
发表于 2005-01-11 02:09 |只看该作者

关于注册然后收发邮件的写法,又有新问题

都是我不好,我没有说清楚,主要是不管那个激活叶面又没有被打开,一个小时之后,用户的资料都要被删除,我觉得用php很难实现。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
8 [报告]
发表于 2005-01-13 08:51 |只看该作者

关于注册然后收发邮件的写法,又有新问题

很好实现的啊,可以联系我的msn来商讨

论坛徽章:
0
9 [报告]
发表于 2005-01-14 09:42 |只看该作者

关于注册然后收发邮件的写法,又有新问题

最近我刚写了一个类似的程序,给你部分代码参考一下吧,有错误欢迎指正

1、注册发送激活代码部分

  1.                 $activationcode = mkrandom();

  2.                 $subject = "恭喜您提交的".$config['site_name']."会员申请已被接受";

  3.                 $content = "您在 ".$config['site_name']."(".$config['site_url'].") 的会员申请已被接受,请用如下资料登录:\n\n"
  4.                                         ."用户名:".$_POST['username']."\n\n"
  5.                                         ."密码:".$_POST['password']."\n\n"
  6.                                         ."请在24小时内按下面的地址链接激活您的帐号:\n\n"
  7.                                         .$config['member_url']."member.php?op=activation&userid=".$pauserid."&activationcode=".$activationcode."\n\n"
  8.                                         ."非常感谢您对我们的支持与信赖,欢迎您光临 ".$config['site_name']."。\n\n\n";
  9.                 $content .= "这是系统自动发出的邮件,请勿直接回复。\n";
  10.                 //添加激活代码到数据库
  11.                 $db_site->;query("INSERT INTO useractivation (userid,time,activationcode) VALUES ('$pauserid','".time()."','".addslashes($activationcode)."')");
  12.                 //发送激活邮件
  13.         send_mail($tmp['email'], $subject, $content);
复制代码


2、用户激活部分

  1. // ############################### start activation user ###############################
  2. if ($_GET['op']=="activation") {

  3.     $userid = intval($_GET['userid']);

  4.     $db_site->;query("DELETE FROM useractivation WHERE time<".(time()-60*60*24)."");

  5.     $checkuseractivation = $db_site->;query_first("SELECT * FROM useractivation WHERE userid='$userid' AND activationcode='".addslashes($_GET[activationcode])."'");
  6.     if (empty($checkuseractivation)) {
  7.         showMessage("你的激活密码不存在.");
  8.     }

  9.     if (time()>;($checkuseractivation['time']+60*60*24)) {

  10.         $db_site->;query("DELETE FROM useractivation WHERE userid='$userid'");

  11.         showMessage("你的激活密码已经过期.");

  12.     } else {

  13.         $db_site->;query("UPDATE userinfo SET usergroupid='2',isactive='1' WHERE userid='$userid'");

  14.         $db_site->;query("DELETE FROM useractivation WHERE userid='$userid'");

  15.         redirect("激活成功.",$config['member_url']);
  16.     }
  17. }
复制代码


3、重新发送激活代码部分

  1. // ############################### start reactivation user ###############################
  2. if ($_GET['op']=="reactive") {
  3.        
  4.         if(intval($_GET['userid']) != 0){
  5.                 $userid = intval($_GET['userid']);
  6.                 $userinfo = $db_site->;query_first("SELECT userid,username,email FROM userinfo WHERE userid = '$userid'");
  7.         }
  8.        
  9.         if(trim($_GET['username']) != ""){
  10.                 $username = trim($_GET['username']);
  11.                 $userinfo = $db_site->;query_first("SELECT userid, username, email FROM userinfo WHERE username = '$username'");
  12.         }

  13.         if(!empty($userinfo)){

  14.                 $activationcode = mkrandom();

  15.                 $subject = "恭喜您提交的".$config['site_name']."会员申请已被接受";

  16.                 $content = "您在 ".$config['site_name']."(".$config['site_url'].") 的会员申请已被接受,请用如下资料登录:\n\n"
  17.                                         ."用户名:".$userinfo['username']."\n\n"
  18.                                         ."密码:********\n\n"
  19.                                         ."请在24小时内按下面的地址链接激活您的帐号:\n\n"
  20.                                         .$config['member_url']."member.php?op=activation&userid=".$userinfo['userid']."&activationcode=".$activationcode."\n\n"
  21.                                         ."非常感谢您对我们的支持与信赖,欢迎您光临 ".$config['site_name']."。\n\n\n";
  22.                 $content .= "这是系统自动发出的邮件,请勿直接回复。\n";
  23.                 //更新激活代码到数据库
  24.                 $db_site->;query("UPDATE useractivation set time= '".time()."', activationcode = '".addslashes($activationcode)."' WHERE userid = '".$userinfo['userid']."'");
  25.                 //发送激活邮件
  26.                 send_mail($userinfo['email'], $subject, $content);

  27.                 $sendMessage .= "您的注册等待邮件激活。<br>;<br>;一封如何激活的邮件已经发送到您注册的邮箱,请查收并在24小时内激活帐号。<br>;<br>;";
  28.                        
  29.                 $sendMessage .= "如果您长时间没有收到激活邮件,请按此<a href=\"".$config['member_url']."member.php?op=reactive&userid=".$userinfo['userid']."\">;重新发送</a>;激活邮件或与<a href=\"mailto:".$config['system_email']."\">;管理员联系</a>;。<br>;";
  30.                
  31.         }else{
  32.                 showMessage("会员名称不存在或输入错误.");
  33.         }

  34.         $tpl->;assign('op',"reactive");
  35.         $tpl->;assign('sendMessage',$sendMessage);
  36.         $tpl->;assign('config',$config);

  37.         getTemplate('Member/Main.html');
  38. }
  39. [quote]

  40. 程序中使用了一写自定义的类和函数,不再详细列出[/quote]
复制代码

论坛徽章:
0
10 [报告]
发表于 2005-01-14 11:40 |只看该作者

关于注册然后收发邮件的写法,又有新问题

自己多思考。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP