• 一个比较完整的登陆和注册后台


     数据库类

    conn.php

    View Code
    <?php
    class opmysql{
    private $host = 'localhost'; //服务器地址
    private $name = 'root'; //登录账号
    private $pwd = '123456'; //登录密码
    private $dBase = 'db_reglog'; //数据库名称
    private $conn = ''; //数据库链接资源
    private $result = ''; //结果集
    private $msg = ''; //返回结果
    private $fields; //返回字段
    private $fieldsNum = 0; //返回字段数
    private $rowsNum = 0; //返回结果数
    private $rowsRst = ''; //返回单条记录的字段数组
    private $filesArray = array(); //返回字段数组
    private $rowsArray = array(); //返回结果数组
    //初始化类

    function __construct($host='',$name='',$pwd='',$dBase=''){
    if($host != '')
    $this->host = $host;
    if($name != '')
    $this->name = $name;
    if($pwd != '')
    $this->pwd = $pwd;
    if($dBase != '')
    $this->dBase = $dBase;
    $this->init_conn();
    }
    //链接数据库
    function init_conn(){
    $this->conn=@mysql_connect($this->host,$this->name,$this->pwd);
    @mysql_select_db($this->dBase,$this->conn);
    mysql_query("set names gb2312");
    }
    //查询结果
    function mysql_query_rst($sql){
    if($this->conn == ''){
    $this->init_conn();
    }
    $this->result = @mysql_query($sql,$this->conn);
    }
    //取得字段数
    function getFieldsNum($sql){
    $this->mysql_query_rst($sql);
    $this->fieldsNum = @mysql_num_fields($this->result);
    }
    //取得查询结果数
    function getRowsNum($sql){
    $this->mysql_query_rst($sql);
    if(mysql_errno() == 0){
    return @mysql_num_rows($this->result);
    }else{
    return '';
    }
    }
    //取得记录数组(单条记录)
    function getRowsRst($sql){
    $this->mysql_query_rst($sql);
    if(mysql_error() == 0){
    $this->rowsRst = mysql_fetch_array($this->result,MYSQL_ASSOC);
    return $this->rowsRst;
    }else{
    return '';
    }
    }
    //取得记录数组(多条记录)
    function getRowsArray($sql){
    $this->mysql_query_rst($sql);
    if(mysql_errno() == 0){
    while($row = mysql_fetch_array($this->result,MYSQL_ASSOC)) {
    $this->rowsArray[] = $row;
    }
    return $this->rowsArray;
    }else{
    return '';
    }
    }
    //更新、删除、添加记录数
    function uidRst($sql){
    if($this->conn == ''){
    $this->init_conn();
    }
    @mysql_query($sql);
    $this->rowsNum = @mysql_affected_rows();
    if(mysql_errno() == 0){
    return $this->rowsNum;
    }else{
    return '';
    }
    }
    //获取对应的字段值
    function getFields($sql,$fields){
    $this->mysql_query_rst($sql);
    if(mysql_errno() == 0){
    if(mysql_num_rows($this->result) > 0){
    $tmpfld = @mysql_fetch_row($this->result);
    $this->fields = $tmpfld[$fields];

    }
    return $this->fields;
    }else{
    return '';
    }
    }

    //错误信息
    function msg_error(){
    if(mysql_errno() != 0) {
    $this->msg = mysql_error();
    }
    return $this->msg;
    }
    //释放结果集
    function close_rst(){
    mysql_free_result($this->result);
    $this->msg = '';
    $this->fieldsNum = 0;
    $this->rowsNum = 0;
    $this->filesArray = '';
    $this->rowsArray = '';
    }
    //关闭数据库
    function close_conn(){
    $this->close_rst();
    mysql_close($this->conn);
    $this->conn = '';
    }
    }
    $conne = new opmysql();//新建数据连接源
    ?>

    index.php

    实现cookie自动登陆

    View Code
    <?php
    session_start();
    header('Content-Type:text/html;charset=gb2312');
    if(!empty($_COOKIE['name']) and !is_null($_COOKIE['name'])){
    $_SESSION['name'] = $_COOKIE['name'];
    header('location:http://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).'/main.php');
    }else{
    header('location:http://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).'/login.php');
    }
    ?>

    main.php

    登陆成功后反馈的信息

    View Code
    <?php
    session_start();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>登录成功</title>
    </head>
    <body>
    <?php echo '欢迎光临!'.$_SESSION['name']; ?>
    </body>
    </html>

    login.php

    登陆界面

    View Code
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>用户登录</title>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <script language="javascript" src="js/login.js"></script>
    <script language="javascript" src="js/xmlhttprequest.js"></script>
    </head>
    <body>
    用户名<input id="lgname" name="lgname" type="text"/><br>
    密&nbsp;&nbsp;码<input id="lgpwd" name="lgpwd" type="password" /><br>
    验证码<input id="lgchk" type="text" maxlength="4" style="35px;">
    <img id='chkid' src=""/><a id="changea">看不清</a><br>
    <button id="lgbtn" >登陆</button>
    <button id="rgbtn">注册</button>
    <button id="fdbtn">找回密码</button>
    <input id="chknm" name="chknm" type="hidden" value="" />
    </body>
    </html>

    Ajax初始化

    xmlhttprequest.js

    View Code
    var xmlhttp = false;
    if (window.XMLHttpRequest) { //Mozilla、Safari等浏览器
    xmlhttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) { //IE浏览器
    try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}
    }
    }

    login.js

    登陆界面JS

    View Code
    // JavaScript Document
    function $(id){
    return document.getElementById(id);
    }
    window.onload = function(){
    showval();
    $('lgname').focus();

    $('lgname').onkeydown = function(){//按回车向下移动光标
    if(event.keyCode == 13){
    $('lgpwd').select();
    }
    }
    $('lgpwd').onkeydown = function(){
    if(event.keyCode == 13){
    $('lgchk').select();
    }
    }
    $('lgchk').onkeydown = function(){
    if(event.keyCode == 13){
    chklg();
    }
    }
    $('lgbtn').onclick = chklg;
    function chklg(){
    if($('lgname').value.match(/^[a-zA-Z_]\w*$/) == null){
    alert('请输入合法名称');
    $('lgname').select();
    return false;
    }
    if($('lgname').value == ''){
    alert('请输入用户名!');
    $('lgname').focus();
    return false;
    }
    if($('lgpwd').value == ''){
    alert('请输入密码!');
    $('lgpwd').focus();
    return false;
    }
    if($('lgchk').value == ''){
    alert('请输入验证码');
    $('lgchk').select();
    return false;
    }
    if($('lgchk').value != $('chknm').value){
    alert('验证码输入错误');
    $('lgchk').select();
    return false;
    }
    //防SQL注入式攻击(
    count = document.cookie.split(';')[0];
    if(count.split('=')[1] >= 3){
    alert('因为您的非法操作,您将无法再执行登录操作');
    return false;
    }
    //)
    //$('regimg').style.visibility = "visible";//显示登陆的进度条
    //Ajax发送与接受(
    url = 'login_chk.php?act='+(Math.random())+'&name='+$('lgname').value+'&pwd='+$('lgpwd').value;
    xmlhttp.open('get',url,true);

    xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState == 4){
    if(xmlhttp.status == 200){
    msg = xmlhttp.responseText;
    if(msg == '0'){
    alert('您还没有激活,请先登录邮箱进行激活操作。');
    }else if(msg == '1'){
    alert('用户名或密码输入错误,您还有2次机会');
    $('lgpwd').select();
    }else if(msg == '2'){
    alert('用户名或密码输入错误,您还有1次机会');
    $('lgpwd').select();
    }else if(msg == '3'){
    alert('因为登录次数过多,您的帐号已被冻结,请联系管理员');
    $('lgname').select();
    }else if(msg == '4'){
    alert('用户名输入错误');
    $('lgname').select();
    }else if(msg == '-1'){
    alert('登录成功');
    location = 'main.php';
    }else{
    alert(msg);
    }
    //$('regimg').style.visibility = "hidden";
    }
    }
    }
    xmlhttp.send(null);
    }
    //)
    $('changea').onclick = showval;//刷新验证码
    //生成验证码(
    function showval(){
    num = '';
    for(i=0;i<4;i++){
    tmp = Math.ceil((Math.random() * 15));
    if(tmp > 9){
    switch(tmp){
    case(10):
    num += 'a';
    break;
    case(11):
    num += 'b';
    break;
    case(12):
    num += 'c';
    break;
    case(13):
    num += 'd';
    break;
    case(14):
    num += 'e';
    break;
    case(15):
    num += 'f';
    break;
    }
    }else{
    num += tmp;
    }
    }
    $('chkid').src='valcode.php?num='+num;
    $('chknm').value = num;
    }
    //)
    $('fdbtn').onclick = function(){
    fd = window.open('found.php','found','width=300,height=200');//在新窗口中打开
    fd.moveTo(screen.width/2,200);
    }
    $('rgbtn').onclick = function(){
    open('register.php','_parent','',false);//直接打开
    }
    }

    login_chk.php

    Ajax登陆后台验证

    View Code
    <?php
    session_start();
    header('Content-Type:text/html;charset=gb2312');
    include_once 'conn/conn.php';
    $name = addslashes($_GET['name']);
    $pwd = $_GET['pwd'];
    if(!empty($name) and !empty($pwd)){
    $sql = "select name,count,active from tb_member where name = '".$name."'";
    $active = $conne->getFields($sql,2);
    $count = $conne->getFields($sql,1);
    $conne->close_rst();
    if($active == ''){
    if(!isset($_COOKIE['count']) or $_COOKIE['count'] == 0){
    setcookie('count',1);
    }else{
    setcookie('count',$_COOKIE['count']+1);
    }
    $reback = 4;
    }else if($active == 0){//判断用户名是否被激活
    $reback = '0';
    }else if($count >= 3){//判断用户的登陆次数
    $reback = '3';
    }else{
    $sql .= " and password = '".md5($pwd)."'";
    $num = $conne->getRowsNum($sql);
    if($num == 0 or $num == ''){//如果用户名密码错误,登录次数加1
    $num = $conne->uidRst("update tb_member set count = ".($count+1)." where name = '".$name."'");
    $reback = ($count+1);
    }else{//登陆成功,清空count字段值
    if($count != 0){
    $num = $conne->uidRst("update tb_member set count = 0 where name = '".$name."'");
    }
    //设置COOKIE
    if(isset($_COOKIE['count']) and $_COOKIE['count'] != 0){
    setcookie('count',0);
    }
    setcookie('name',$name,time()+60*10);
    $_SESSION['name'] = $name;
    $reback = '-1';
    }
    }
    }
    echo $reback;
    ?>


    生成验证码图片

    valcode.php

    View Code
    <?php
    //header("content-type:image/png");
    $num = $_GET['num'];
    $imagewidth=60;
    $imageheight=18;

    $numimage = imagecreate($imagewidth,$imageheight);
    imagecolorallocate($numimage,240,240,240);
    for($i=0;$i<strlen($num);$i++){
    $x = mt_rand(1,8)+$imagewidth*$i/4;
    $y = mt_rand(1,$imageheight/4);
    $color=imagecolorallocate($numimage,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150));
    imagestring($numimage,5,$x,$y,$num[$i],$color);
    }

    for($i=0;$i<200;$i++){
    $randcolor=imagecolorallocate($numimage,rand(200,255),rand(200,255),rand(200,255));
    imagesetpixel($numimage,rand()%70,rand()%20,$randcolor);
    }
    imagepng($numimage);
    imagedestroy($numimage);
    ?>


    注册页面
    register.php

    View Code
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>注册</title>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <script language="javascript" src="js/xmlhttprequest.js"></script>
    <script language="javascript" src="js/register.js"></script>
    </head>
    <body>
    <div id="container">
    <div id="rgbgdiv">
    <div id="regnamediv"><b>注册名称:</b>
    <input id="regname" name="regname" type="text" />
    <div id="namediv">请输入用户名</div>
    </div>
    <div id="regpwddiv1"><b>注册密码:</b>
    <input id="regpwd1" name="regpwd1" type="password" />
    <div id="pwddiv1">请输入密码</div>
    </div>
    <div id="regpwddiv2"><b>确认密码:</b>
    <input id="regpwd2" name="regpwd2" type="password" />
    <div id="pwddiv2">请输入确认密码</div>
    </div>
    <div id="regemaildiv"><b>电子邮箱:</b>
    <input id="email" name="email" type="text" />
    <div id="emaildiv">用户激活和找回密码使用</div>
    </div>
    <div id="morediv" style="display:none;">
    <hr id="part" />
    <div id="regquestiondiv"><b>密保问题:</b>
    <input id="question" name="question" type="text" />
    <div id="questiondiv">用户激活和找回密码使用</div>
    </div>
    <div id="reganswerdiv"><b>密保答案:</b>
    <input id="answer" name="answer" type="text" />
    <div id="answerdiv">用户激活和找回密码使用</div>
    </div>
    <div id="regrealnamediv"><b>真实姓名:</b>
    <input id="realname" name="realname" type="text" />
    <div id="realnamediv">用户的真实姓名</div>
    </div>
    <div id="regbirthdaydiv"><b>出生日期:</b>
    <input id="birthday" name="birthday" type="text" />
    <div id="birthdaydiv">用户的出生日期。格式:YYYY-MM-DD</div>
    </div>
    <div id="regtelephonediv"><b>联系电话:</b>
    <input id="telephone" name="telephone" type="text" />
    <div id="telephonediv">用户的联系电话</div>
    </div>
    <div id="regqqdiv"><b>QQ号 码:</b>
    <input id="qq" name="qq" type="text" />
    <div id="qqdiv">用户QQ号</div>
    </div>
    </div>
    <div id="btndiv2">
    <button id="regbtn" disabled="disabled">&nbsp;</button>
    <button id="morebtn">&nbsp;</button>
    <button id="logbtn">&nbsp;</button>
    </div>
    </div>
    <div id="imgdiv" style=" visibility: hidden;">&nbsp;</div>
    </div>
    </body>
    </html>

    注册Ajax

    register.js

    View Code
    // JavaScript Document
    function $(id){
    return document.getElementById(id);
    }
    window.onload = function(){
    $('regname').focus();
    var cname1,cname2,cpwd1,cpwd2,cemail;
    //设置激活按钮
    function chkreg(){
    if((cname1 == 'yes') && (cname2 == 'yes') && (cpwd1 == 'yes') && (cpwd2 == 'yes') && (cemail == 'yes')){
    $('regbtn').disabled = false;
    }else{
    $('regbtn').disabled = true;
    }
    }
    //验证用户名
    $('regname').onkeyup = function (){
    name = $('regname').value;
    cname2 = '';
    if(name.match(/^[a-zA-Z_]*/) == ''){
    $('namediv').innerHTML = '<font color=red>必须以字母或下划线开头</font>';
    cname1 = '';
    }else if(name.length < 2){
    $('namediv').innerHTML = '<font color=red>注册名称必须大于等于2位</font>';
    cname1 = '';
    }else{
    $('namediv').innerHTML = '<font color=green>注册名称符合标准</font>';
    cname1 = 'yes';
    }
    chkreg();
    }
    //验证是否存在该用户
    $('regname').onblur = function(){
    name = $('regname').value;
    if(cname1 == 'yes'){
    xmlhttp.open('get','chkname.php?name='+name,true);
    xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState == 4){
    if(xmlhttp.status == 200){
    var msg = xmlhttp.responseText;
    if(msg == '1'){
    $('namediv').innerHTML="<font color=green>恭喜您,该用户名可以使用!</font>";
    cname2 = 'yes';
    }else if(msg == '2'){
    $('namediv').innerHTML="<font color=red>用户名被占用!</font>";
    cname2 = '';
    }else{
    $('namediv').innerHTML="<font color=red>"+msg+"</font>";
    cname2 = '';
    }
    }
    }
    chkreg();
    }
    xmlhttp.send(null);
    }
    }
    //验证密码
    $('regpwd1').onkeyup = function(){
    pwd = $('regpwd1').value;
    pwd2 = $('regpwd2').value;
    if(pwd.length < 6){
    $('pwddiv1').innerHTML = '<font color=red>密码长度最少需要6位</font>';
    cpwd1 = '';
    }else if(pwd.length >= 6 && pwd.length < 12){
    $('pwddiv1').innerHTML = '<font color=green>密码符合要求。密码强度:弱</font>';
    cpwd1 = 'yes';
    }else if((pwd.match(/^[0-9]*$/)!=null) || (pwd.match(/^[a-zA-Z]*$/) != null )){
    $('pwddiv1').innerHTML = '<font color=green>密码符合要求。密码强度:中</font>';
    cpwd1 = 'yes';
    }else{
    $('pwddiv1').innerHTML = '<font color=green>密码符合要求。密码强度:高</font>';
    cpwd1 = 'yes';
    }
    if(pwd2 != '' && pwd != pwd2){
    $('pwddiv2').innerHTML = '<font color=red>两次密码不一致!</font>';
    cpwd2 = '';
    }else if(pwd2 != '' && pwd == pwd2){
    $('pwddiv2').innerHTML = '<font color=green>密码输入正确</font>';
    cpwd2 = 'yes';
    }
    chkreg();
    }
    //验证确认密码
    $('regpwd2').onkeyup = function(){
    pwd1 = $('regpwd1').value;
    pwd2 = $('regpwd2').value;
    if(pwd1 != pwd2){
    $('pwddiv2').innerHTML = '<font color=red>两次密码不一致!</font>';
    cpwd2 = '';
    }else{
    $('pwddiv2').innerHTML = '<font color=green>密码输入正确</font>';
    cpwd2 = 'yes';
    chkreg();
    }
    }
    //验证email
    $('email').onkeyup = function(){
    emailreg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
    $('email').value.match(emailreg);
    if($('email').value.match(emailreg) == null){
    $('emaildiv').innerHTML = '<font color=red>错误的email格式</font>';
    cemail = '';
    }else{
    $('emaildiv').innerHTML = '<font color=green>输入正确</font>';
    cemail = 'yes';
    }
    chkreg();
    }

    //显示/隐藏详细信息
    $('morebtn').onclick = function(){

    if($('morediv').style.display == ''){
    $('morediv').style.display = 'none';
    }else{
    $('morediv').style.display = '';
    }
    }
    //登录按钮
    $('logbtn').onclick = function(){
    window.open('login.php','_parent','',false);
    }
    //正式注册
    $('regbtn').onclick = function(){
    $('imgdiv').style.visibility = 'visible';
    url = 'register_chk.php?name='+$('regname').value+'&pwd='+$('regpwd1').value+'&email='+$('email').value;
    url += '&question=' +$('question').value+'&answer='+$('answer').value;
    url += '&realname=' +$('realname').value+'&birthday='+$('birthday').value;
    url += '&telephone='+$('telephone').value+'&qq='+$('qq').value;
    xmlhttp.open('get',url,true);
    xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState == 4){
    if(xmlhttp.status == 200){
    msg = xmlhttp.responseText;
    if(msg == '1'){
    alert('注册成功,请到您的邮箱中获取激活码!');
    location='index.php';
    }else if(msg == '-1'){
    alert('您的服务器不支持Zend_mail,或者邮箱填写错误。请仔细检查!!');
    }else{
    alert(msg);
    }
    $('imgdiv').style.visibility = 'hidden';
    }
    }
    }
    xmlhttp.send(null);
    }
    }

    注册后台处理,发送验证邮件需要下载Zend Framework

    register_chk.php

    View Code
    <?php
    include_once 'conn/conn.php';
    require_once 'Zend/Mail.php'; //调用发送邮件的文件
    require_once 'Zend/Mail/Transport/Smtp.php'; //调用SMTP验证文件
    $reback = '0';
    $url = 'http://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).'/activation.php';
    $url .= '?name='.trim($_GET['name']).'&pwd='.md5(trim($_GET['pwd']));

    //发送激活邮件
    $subject="激活码的获取";
    $mailbody='注册成功。您的激活码是:'.'<a href="'.$url.'" target="_blank">'.$url.'</a><br>'.'请点击该地址,激活您的用户!';
    //定义邮件内容
    $envelope="mrsoft8888@sohu.com"; //定义登录使用的邮箱

    $config = array('auth' => 'login',
    'username' => 'mrsoft8888',
    'password' => 'mrsoft8888'); //定义SMTP的验证参数
    $transport = new Zend_Mail_Transport_Smtp('smtp.sohu.com', $config); //实例化验证的对象
    $mail = new Zend_Mail('GBK'); //实例化发送邮件对象
    $mail->setBodyHtml($mailbody); //发送邮件主体
    $mail->setFrom($envelope, '明日科技典型模块程序测试邮箱,恭喜您用户注册成功!'); //定义邮件发送使用的邮箱
    $mail->addTo($_GET['email'], '获取用户注册激活码'); //定义邮件的接收邮箱
    $mail->setSubject('获取注册用户的激活码'); //定义邮件主题
    $mail->send($transport); //执行发送操作

    /* 网络版发送邮件方法 */
    $birthday='0000-00-00';
    if($_GET['birthday']!='')
    $birthday=$_GET['birthday'];
    $sql = "insert into tb_member(name,password,question,answer,email,realname,birthday,telephone,qq) values('".trim($_GET['name'])."','".md5(trim($_GET['pwd']))."','".$_GET['question']."','".$_GET['answer']."','".$_GET['email']."','".$_GET['realname']."','".$birthday."','".$_GET['telephone']."','".$_GET['qq']."')";
    $num = $conne->uidRst($sql);
    if($num == 1){
    $reback = '1';
    }
    echo $reback;
    ?>

    验证用户名是否被占用

    chkname.php

    View Code
    <?php
    include_once "conn/conn.php";
    $sql = "select * from tb_member where name='".$_GET['name']."'";
    $num = $conne->getRowsNum($sql);
    if($num == 1){
    echo '2';
    }else if($num == 0){
    echo '1';
    }else{
    echo $conne->msg_error();
    }
    ?>


    找回密码的页面
    found.php

    View Code
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>找回密码</title>
    <link rel="stylesheet" href="css/style.css" />
    <script language="javascript" src="js/found.js"></script>
    <script language="javascript" src="js/xmlhttprequest.js"></script>
    </head>
    <body>
    <div id="fdbgdiv" >
    <div id="top">&nbsp;>>密码找回</div>
    <div id="foundnamediv">找回账号: <input id="foundname" type="text" style=" 100px; height:15px; border:1px #000000 solid;" /></div>
    <div id="foundnamediv">密保问题: <input id="fdquestion" type="text" style=" 100px; height:15px; border:1px #000000 solid;" /></div>
    <div id="foundnamediv">密保答案: <input id="fdanswer" type="text" style=" 100px; height:15px; border:1px #000000 solid;" /></div>
    <div id="foundnamediv" align="center"><button id="step1"></button></div>
    </div>
    </body>
    </html>

    找回密码的Ajax

    found.js

    View Code
    // JavaScript Document
    function $(id){
    return document.getElementById(id);
    }
    window.onload = function(){
    $('foundname').focus();
    $('step1').onclick = function(){
    if($('foundname').value != '' && $('fdquestion').value != '' && $('fdanswer').value != ''){
    xmlhttp.open('get','found_chk.php?foundname='+$('foundname').value+'&question='+$('fdquestion').value+'&answer='+$('fdanswer').value,true);
    xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
    msg = xmlhttp.responseText;
    if(msg == '1'){
    alert('找回密码成功,请登录邮箱注册邮箱!');
    window.close();
    }else{
    alert('填写的信息错误');
    }
    }
    }
    xmlhttp.send(null);
    }else{
    alert('请填写完成信息');
    $('foundname').focus();
    return false;
    }
    }
    }

    found_chk.php

    找回密码的后台,发送包含密码的邮件,与注册时类似

    View Code
    <?php
    include_once 'conn/conn.php';
    require_once 'Zend/Mail.php'; //调用发送邮件的文件
    require_once 'Zend/Mail/Transport/Smtp.php'; //调用SMTP验证文件
    $reback = '0';
    $name = $_GET['foundname'];
    $question = $_GET['question'];
    $answer = $_GET['answer'];
    $sql = "select email from tb_member where name = '".$name."' and question = '".$question."' and answer = '".$answer."'";
    $email = $conne->getFields($sql,0);
    if($email != '')
    {
    $rnd = rand(1000,time());
    $sql = "update tb_member set password = '".md5($rnd)."' where name = '".$name."' and question = '".$question."' and answer = '".$answer."'";
    $tmpnum = $conne->uidRst($sql);
    if($tmpnum >= 1)
    {
    $subject="找回密码";
    $mailbody='密码找回成功。您帐号的新密码是'.$rnd;
    $reback='1';
    $envelope="mrsoft8888@sohu.com";
    $config = array('auth' => 'login',
    'username' => 'mrsoft8888',
    'password' => 'mrsoft8888'); //定义SMTP的验证参数
    $transport = new Zend_Mail_Transport_Smtp('smtp.sohu.com', $config); //实例化验证的对象
    $mail = new Zend_Mail('GBK'); //实例化发送邮件对象
    $mail->setBodyHtml($mailbody); //发送邮件主体
    $mail->setFrom($envelope, '明日科技典型模块程序测试邮箱,修改用户注册密码!'); //定义邮件发送使用的邮箱
    $mail->addTo($email, '获取用户新密码'); //定义邮件的接收邮箱
    $mail->setSubject($subject); //定义邮件主题
    $mail->send($transport);
    }
    else
    {
    $reback = $sql;
    }
    }
    echo $reback;
    ?>

    利用邮件的超链接激活页面

    activation.php

    View Code
    <?php
    session_start();
    header('Content-Type:text/html;charset=gb2312');
    include_once("conn/conn.php");
    if (!empty($_GET['name']) && !is_null($_GET['name'])){ //激活注册用户
    $num=$conne->getRowsNum("select * from tb_member where name='".$_GET['name']."' and password = '".$_GET['pwd']."'");
    if ($num>0){
    $upnum=$conne->uidRst("update tb_member set active = 1 where name='".$_GET['name']."' and password = '".$_GET['pwd']."'");
    if($upnum > 0){
    $_SESSION['name'] = $_GET['name'];
    echo "<script>alert('用户激活成功!');window.location.href='main.php';</script>";
    }else{
    echo "<script>alert('您已经激活!');window.location.href='main.php';</script>";
    }

    }else{
    echo "<script>alert('用户激活失败!');window.location.href='register.php';</script>";
    }
    }
    ?>


    ------------修改自<<PHP开发典型模块大全>>-------------------




  • 相关阅读:
    SpringMVC集成Swagger插件以及Swagger注解的简单使用
    Java后台直接生成二维码介绍
    Java条形码生成技术-Barcode4j
    对Java Serializable(序列化)的理解和总结(一)
    java下划线与驼峰命名互转
    Mybatis实战之TypeHandler高级进阶
    迪卡侬女主(视频) 第一集
    MySQL优化(五)
    PDO连接mysql和pgsql数据库
    MySQL的FIND_IN_SET()函数
  • 原文地址:https://www.cnblogs.com/xchaos/p/2389479.html
Copyright © 2020-2023  润新知