1. 程式人生 > >傳送郵箱實現找回密碼

傳送郵箱實現找回密碼

注意事項

1.開啟socket:在php.ini中取消extension=php_sockets.dll前面的分號。
2.
登入你的郵箱手動開啟STMP服務,這個服務預設是關閉的,一定要去郵箱->設定裡去手動開啟,開啟時要求你設定一個獨立密碼,這個密碼就是寫在 'MAIL_PASSWORD'=>' ', // 郵箱密碼,的密碼而不是郵箱登入密碼

3userinfo中加上一個欄位Resettime(郵箱提交時間,和當前時間比較,判斷連結是否過期)

1ThinkPHP/Extend/Library/ORG/Net/目錄下放入PHPMailer.class.phpclass.pop3.php

class.smtp.php檔案

2、        Index/Conf/config.php配置檔案中加上以下配置項

//傳送郵件

   'MAIL_ADDRESS' => '[email protected]', // 郵箱地址(註冊時好像會有一個地址)

   'MAIL_SMTP' => 'smtp.163.com', // 郵箱SMTP伺服器

   'MAIL_LOGINNAME' => '[email protected]', // 郵箱登入帳號

   'MAIL_PASSWORD' => 'bviqbapkcyyrrtmf', // 郵箱密碼(這是我開啟STMP

服務時給的授權密碼,注意看注意事項第2點)

   'MAIL_CHARSET' => 'UTF-8', // 編碼

   'MAIL_AUTH' => true, // 郵箱認證

   'MAIL_HTML' => true, // true HTML格式 false TXT格式

3、        Index/Common /common.php檔案中建一個函式

<?php

functionSendMail($address,$title,$message)

{

import('ORG.Net.PHPMailer');//匯入類

$mail=new PHPMailer();

// 設定PHPMailer使用SMTP伺服器傳送Email

$mail->IsSMTP();

// 設定郵件的字元編碼,若不指定,則為'UTF-8'

$mail->CharSet='UTF-8';

// 新增收件人地址,可以多次使用來新增多個收件人

$mail->AddAddress($address);

// 設定郵件正文

$mail->Body=$message;

// 設定郵件頭的From欄位。

$mail->From=C('MAIL_ADDRESS');

// 設定發件人名字

$mail->FromName='zyimm';

// 設定郵件標題

$mail->Subject=$title;

// 設定SMTP伺服器。

$mail->Host=C('MAIL_SMTP');

// 設定為“需要驗證”

$mail->SMTPAuth=true;

// 設定使用者名稱和密碼。

$mail->Username=C('MAIL_LOGINNAME');

$mail->Password=C('MAIL_PASSWORD');

// 傳送郵件。

return($mail->Send());

}

4、        Index/Lib/Action/IndexAction.class.php中加入以下兩個方法

  //找回密碼---傳送到郵箱,使用者驗證

   public function sendemail() {

       import('ORG.Net.PHPMailer');

       $r = M('userinfo')->where(array('Loginname' => I('username'),'Email' => I('email')))->find();

       $this->user = $r;

       if (!$r) {

           echo '<script>alert("該使用者不存在或者郵箱不正確!");location.href="http://localhost/jiaxiao2/index.php/Index/findpwd"</script>';

       } else {

           $user = I('username');

           $email = I('email');

           $content = "$user,你好:

              您收到這封電子郵件是因為您 (也可能是某人冒充您的名義) 申請了一個找回密碼的請求。

       假如這不是您本人所申請, 或者您曾持續收到這類的信件騷擾, 請您儘快聯絡管理員。

       您可以點選如下連結重新設定您的密碼,如果點選無效,請把下面的程式碼拷貝到瀏覽器的位址列中:

       http://localhost/jiaxiao2/index.php/Index/findpassword?Loginname=$user

       在訪問連結之後, 您可以重新設定新的密碼。";

           $rs = SendMail($email, '民大駕校---使用者密碼找回', $content,'manager'); //SendMail('[email protected]','郵件標題','郵件正文','歪酷CMS管理員');解釋下引數: 引數1---目標郵箱, 引數2----郵件標題,引數三--郵件正文,引數四---發件人名稱;

           if ($rs) {

               M('userinfo')->where(array('Loginname' => I('username'), 'Email'=> I('email')))->save(array('Resettime' => date('Y-m-d H:i:s')));

                echo'<script>alert("系統已將重置密碼的連結安全的發到了您的郵箱,請及時查收!");location.href="http://localhost/jiaxiao2/index.php/?n=1"</script>';

           } else {

                echo'<script>alert("郵件傳送失敗!");location.href="http://localhost/jiaxiao2/index.php/Index/findpwd"</script>';

           }

       }

   }

   //找回密碼

   //郵箱有效期   從資料庫取出傳送郵件的提交時間,和當前時間做對比,如果當前時間超過提交時間30分,則過期

   public function findpassword(){

       $username = I('Loginname');

       $user = M('userinfo')->where(array('Loginname' =>$username))->select();

       $this->user = $user;

       $u = M('userinfo')->where(array('Loginname' =>$username))->find();

       $resettime = $u['Resettime']; //獲取資料庫郵箱傳送時間

       $time = date("Y-m-d H:i:s", strtotime("-30 min"));//當前時間減去30分後還小於等於傳送郵箱時間,則時間有效,反之過期

       $data = array('Password' => md5(I('password')));

       $rs = M('userinfo')->where(array('Loginname' => I('Loginname')))->save($data);

       if ($resettime >= $time) {

           if ($rs) {

                echo'<script>alert("修改密碼成功!");location.href="http://localhost/jiaxiao2/index.php/?n=1"</script>';

           }

       } else {

           echo '<script>alert("該連結已經過期!");location.href="http://localhost/jiaxiao2/index.php/?n=1"</script>';

       }

       $this->display();

}

5、        然後在在Index/Tpl/Index中加入以下兩個html檔案

Findpwd.html

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

   <head>

       <meta charset="UTF-8">

           <title>找回密碼</title>

           <meta name="viewport"content="width=device-width">

                <link rel="stylesheet"type="text/css" href="__PUBLIC__/css/reg.css" />

                <scripttype="text/javascript"src="__PUBLIC__/js/jquery.js"></script>

                <scripttype="text/javascript"src="__PUBLIC__/js/jquery.ui.js"></script>

               <scripttype="text/javascript"src="__PUBLIC__/js/jquery.validate.js"></script>

                <scripttype="text/javascript"src="__PUBLIC__/js/jquery.form.js"></script>

                <scripttype="text/javascript" src="__PUBLIC__/js/reg.js"></script>                                     

                  <scripttype="text/javascript">

                        functionrefreshVerify() {

                           document.getElementById('reverifyImg').src = '__URL__/reverify/' +Math.random();

                        }

                </script>

                </head>

                <body>

                    <divclass="rwhole">

                        <divclass="rtop">

                            <p>找回密碼</p>

                            <span>

                                <ahref="{:U('Index/Index/index')}?n=1">返回</a>

                            </span>

                        </div>

                        <divclass="rcontent">

                            <divclass="rcontent_left">

                                <formclass="reg" id="reg"action="{:U('sendemail')}" method="get" >

                                    <p>

                                       <span>使用者名稱</span>

                                       <input class="inp" type="text"name="username" id="username" />

                                    </p>

                                    <p>

                                       <span>郵箱</span>

                                       <input  class= "inp"type="text" name="email" id="pass" />

                                    </p>

                                    <p><input style="margin-left:95px;margin-top: 20px;width: 155px;height:36px;border: 1px solid #fff;" type="Submit"name="Submit" value="提交"/></p>                            

                                </form>

                            </div>

                        </div>

                        <divclass="footer"></div>

                    </div>

                </body>

                </html>

Findpassword.html檔案

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">

   <head>

       <meta charset="UTF-8">

           <title>找回密碼</title>

           <meta name="viewport"content="width=device-width">

                <linkrel="stylesheet" type="text/css"href="__PUBLIC__/css/reg.css" />

                <scripttype="text/javascript"src="__PUBLIC__/js/jquery.js"></script>

               <scripttype="text/javascript"src="__PUBLIC__/js/jquery.ui.js"></script>

                <scripttype="text/javascript"src="__PUBLIC__/js/jquery.validate.js"></script>

                <scripttype="text/javascript" src="__PUBLIC__/js/jquery.form.js"></script>

                <scripttype="text/javascript"src="__PUBLIC__/js/reg.js"></script>                                     

                  <scripttype="text/javascript">

                        functionrefreshVerify() {

                            document.getElementById('reverifyImg').src= '__URL__/reverify/' + Math.random();

                        }

                </script>

                </head>

                <body>

                    <divclass="rwhole">

                        <divclass="rtop">

                            <p>找回密碼</p>

                            <span>

                                <ahref="{:U('Index/Index/index')}?n=1">返回</a>

                            </span>

                        </div>

                        <div class="rcontent">

                            <divclass="rcontent_left">

                                <formclass="reg" id="reg"action="{:U('findpassword')}" method="get" >

                                    <p>

                                       <volist name="user" id="user">

                                       <span>使用者名稱</span>

                                       <input class="inp" type="text"name="Loginname" id="username"value="{$user.Loginname}" />

                                     </volist> 

                                    </p>

                                    <p>

                                       <span>新的密碼</span>

                                       <input  class= "inp"type="password" name="password" id="pass" />

                                    </p>

                                    <p>

                                       <span>確認新密碼</span>

                                       <input class="inp" type="password"name="repass" id="repass" />

                                    </p>

                                    <p><input style="margin-left:95px;margin-top: 20px;width: 155px;height:36px;border: 1px solid #fff;" type="Submit"name="Submit" value="提交"/></p>                            

                                </form>

                            </div>

                        </div>

                        <divclass="footer"></div>

                    </div>

                </body>

                </html>

6、        然後在登入頁面加上相應的連結

在Index/Tpl/common/top.html和indextop.html中學員和教練後面加上

               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<ahref="{:U('Index/Index/findpwd')}">忘記登入密碼?</a>

相關推薦

傳送郵箱實現找回密碼

注意事項 1、.開啟socket:在php.ini中取消extension=php_sockets.dll前面的分號。 2.登入你的郵箱手動開啟STMP服務,這個服務預設是關閉的,一定要去郵箱->設定裡去手動開啟,開啟時要求你設定一個獨立密碼,這個密碼就是寫在 'M

django關於實現找回密碼功能-----通過郵件來重置密碼

首先要呼叫傳送郵件的函式,要成功的傳送跳轉地址,這裡的跳轉地址要儲存在資料庫中,以便以後可以知道是哪個賬號要進行重置密碼 # _*_ coding: utf-8 _*_ __author__ = 'LelandYan' __date__ = '2018/9/

網站登入密碼忘記後,通過向手機發送驗證碼實現找回密碼實現方法

今天我想了一天如何實現網站使用者在忘記了密碼後,如何通過向手機發送驗證碼來重新設定密碼。驗證碼的驗證以及生成都已經做好了,現在主要是解決如何向用戶手機發送簡訊。顯然這需要一個第三方提供的簡訊介面,來幫助我們實現向用戶手機發送驗證碼簡訊。這裡有一個非常好的第三方藉口。連線地址

JAVAWeb中實現簡單郵箱找回密碼

  版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/qq_40348465/article/details/83629000 本文是介紹在一個小的JAVAWeb專案中,利用郵箱幫使用者找回密碼。   效果展示  &

Ajax+PHPMailer實現郵箱找回密碼功能

       前兩天實現了一個通過郵箱找回密碼的功能,今天來做一個總結: 首先,需要開啟郵箱的IMAP/SMTP服務,我用的是QQ郵箱的,會獲取一個IMAP/SMTP服務密碼:如uudwdedzxbhmhjhb;在這個位置: 檔案目錄結構如下: 其中PHPMaile

c#web窗體登入介面登入註冊以及密碼找回傳送郵箱功能

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="register.aspx.cs" Inherits="ebook.Pages.register" %> <!DOCTYPE html> <html xmlns

Java傳送郵件找回密碼功能的實現

傳送郵件功能 找回密碼的功能幾乎是所有的專案所必備的功能,目前最流行的方式之一便是通過傳送郵件的方式,傳送給使用者修改密碼的連結,使用者通過登入郵箱找到連結地址,從而完成密碼的重置。這樣的方式相對來說比較安全可靠。這種方式的第一步便是傳送郵件。 準備工作

JAVA實現通過繫結郵箱找回密碼功能

1.輸入使用者名稱及驗證碼,驗證使用者名稱是否存在 (1).生成驗證碼工具類 package com.utils;     import java.awt.Color;     import java.awt.F

註冊/找回密碼等功能中傳送手機驗證碼後倒計時效果的實現(基於vue)

註冊/找回密碼等功能中傳送手機驗證碼後倒計時效果的實現,基於vue、element-ui<template> <el-button size="small" type="prima

郵箱找回密碼功能實現思路

傳送郵件功能實現參見http://write.blog.csdn.net/postedit/53119376        當用戶找回密碼時,向用戶郵箱傳送一個連結,通過該連結使用者可以轉到密碼重置介面,為了防止非法使用者利用使用者名稱然後直接訪問該密碼重置介面修改使用者密

郵箱驗證修改密碼,通過郵箱找回密碼

inpu tar send 發件人 contex 輸入 put nta clas 使用郵箱驗證修改密碼,在這裏我是使用163免費郵進行測試 前臺代碼 1 <input type="text" name="Mail" id="Mail"/> 2

[py][mx]django通過郵箱找回密碼

代碼 地址 技術 make .html pass word bubuko 重置 忘記密碼處理流程 直接上代碼 class ActiveView(View): # 主要功能是修改user_profile裏的is_active字段為1 def get(self, r

C#實現發送郵件找回密碼功能

保存 bject ESS () 裏的 輸入框 鏈接地址 添加 dpa 首先我們來分析一下思路: 三步走: 1.先要發送郵件 2.讓用戶點擊郵件裏的URL 3.實現修改密碼 1.為了保證安全性,需要生成發送到郵件的URL,主要參數(用戶名,過期時間,key(key 需要在每次

Springboot實現傳送郵箱

Springboot實現傳送郵箱 直接上程式碼了,簡單粗暴(太簡單,不要興奮) 一、pom檔案             <!-- 郵件傳送 --> <

PHP laravel框架實現SMTP傳送郵箱

首先在.env配置裡配置資訊 MAIL_DRIVER=smtp//主機 MAIL_HOST=smtp.163.com//主機網址 MAIL_PORT=465//埠號 MAIL_USERNAME=使用者名稱 MAIL_PASSWORD=授權碼(不是密碼) MAIL_ENCRYPTION=ssl/

JavaWeb QQ郵箱找回密碼

我的上一篇部落格,已經寫了登入註冊,接下來寫QQ郵箱找回密碼 首先:我們需要在 QQ郵箱設定中獲取授權碼,步驟如下 進入QQ郵箱---->設定---->賬戶---->開啟服務:POP3/SMTP服務---->儲存授權碼 **其次:**我百度雲盤

賬號通過郵箱找回密碼功能設計

通常所說的密碼找回功能不是真的能把忘記的密碼找回,因為我們的密碼是加密儲存的,一般開發者會在驗證使用者資訊後通過程式生成一個新密碼或者生成一個特定的連結併發送郵件到使用者郵箱,使用者從郵箱連結到網站的重置密碼模組重新設定新密碼。 當然現在有的網站也有手機簡訊的方式找回密碼,原理就是通過傳送驗證碼

Springboot實現簡單傳送郵箱

首先建立一個郵箱,建議@126.com   @163.com   @qq.com都可以 開啟smtp,一下是使用圖解: 在pom.xml中引入依賴: <dependency> <groupId>org.

如何實現織夢dedecms表單提交時傳送郵箱功能【已解決】

我們通過織夢繫統制作網站時,很多客戶需要有線上留言功能,這時就會用到自定義表單。但是很多使用者覺得經常登陸後臺檢視留言資訊太麻煩了,於是想能否在提交留言是直接把內容傳送到指定郵箱。網站經過測試終於實現了上述功能,今天就跟大家分享一下織夢dedecms如何在自定義表單提交時傳送到郵箱? 第一步、首先在織夢網站後

C# Email郵件傳送,功能是密碼找回或者重置功能。

最近根據公司需求,寫個郵件傳送。   這裡面的傳入的地址資訊的引數都是經過加密的。  主要是保證使用者資訊的安全。using System; using System.Collections.Generic; using System.Configuration; usin