목차
PHP邮箱验证示例教程,php邮箱示例
php教程 php手册 PHP邮箱验证示例教程,php邮箱示例

PHP邮箱验证示例教程,php邮箱示例

Jun 13, 2016 am 08:38 AM
php 우편 확인하다

PHP邮箱验证示例教程,php邮箱示例

在用户注册中最常见的安全验证之一就是邮箱验证。根据行业的一般做法,进行邮箱验证是避免潜在的安全隐患一种非常重要的做法,现在就让我们来讨论一下这些最佳实践,来看看如何在PHP中创建一个邮箱验证。

让我们先从一个注册表单开始:

<form method="post" action="http://mydomain.com/registration/">
 <fieldset class="form-group">
 <label for="fname">First Name:</label>
 <input type="text" name="fname" class="form-control" required />
  </fieldset>

  <fieldset class="form-group">
 <label for="lname">Last Name:</label>
 <input type="text" name="lname" class="form-control" required />
  </fieldset>

  <fieldset class="form-group">
 <label for="email">Last name:</label>
 <input type="email" name="email" class="form-control" required />
  </fieldset>

  <fieldset class="form-group">
 <label for="password">Password:</label>
 <input type="password" name="password" class="form-control" required />
  </fieldset>

  <fieldset class="form-group">
 <label for="cpassword">Confirm Password:</label>
 <input type="password" name="cpassword" class="form-control" required />
  </fieldset>

  <fieldset>
    <button type="submit" class="btn">Register</button>
  </fieldset>
</form> 
로그인 후 복사

接下来是数据库的表结构:

CREATE TABLE IF NOT EXISTS `user` (
 `id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
 `fname` VARCHAR(255) ,
 `lname` VARCHAR(255) ,
 `email` VARCHAR(50) ,
 `password` VARCHAR(50) ,
 `is_active` INT(1) DEFAULT '0',
 `verify_token` VARCHAR(255) ,
 `created_at` TIMESTAMP,
 `updated_at` TIMESTAMP,
); 
로그인 후 복사

一旦这个表单被提交了,我们就需要验证用户的输入并且创建一个新用户:

// Validation rules
$rules = array(
  'fname' => 'required|max:255',
  'lname' => 'required|max:255',
 'email' => 'required',
 'password' => 'required|min:6|max:20',
 'cpassword' => 'same:password'
);

$validator = Validator::make(Input::all(), $rules);

// If input not valid, go back to registration page
if($validator->fails()) {
 return Redirect::to('registration')->with('error', $validator->messages()->first())->withInput();
}

$user = new User();
$user->fname = Input::get('fname');
$user->lname = Input::get('lname');
$user->password = Input::get('password');

// You will generate the verification code here and save it to the database

// Save user to the database
if(!$user->save()) {
 // If unable to write to database for any reason, show the error
 return Redirect::to('registration')->with('error', 'Unable to write to database at this time. Please try again later.')->withInput();
}

// User is created and saved to database
// Verification e-mail will be sent here

// Go back to registration page and show the success message
return Redirect::to('registration')->with('success', 'You have successfully created an account. The verification link has been sent to e-mail address you have provided. Please click on that link to activate your account.');

로그인 후 복사

注册之后,用户的账户仍然是无效的直到用户的邮箱被验证。此功能确认用户是输入电子邮件地址的所有者,并有助于防止垃圾邮件以及未经授权的电子邮件使用和信息泄露。

整个流程是非常简单的——当一个新用户被创建时,在注册过过程中,一封包含验证链接的邮件便会被发送到用户填写的邮箱地址中。在用户点击邮箱验证链接和确认邮箱地址之前,用户是不能进行登录和使用网站应用的。

关于验证的链接有几件事情是需要注意的。验证的链接需要包含一个随机生成的token,这个token应该足够长并且只在一段时间段内是有效的,这样做的方法是为了防止网络攻击。同时,邮箱验证中也需要包含用户的唯一标识,这样就可以避免那些攻击多用户的潜在危险。

现在让我们来看看在实践中如何生成一个验证链接:

// We will generate a random 32 alphanumeric string
// It is almost impossible to brute-force this key space
$code = str_random(32);
$user->confirmation_code = $code; 
로그인 후 복사

一旦这个验证被创建就把他存储到数据库中,发送给用户:

Mail::send('emails.email-confirmation', array('code' => $code, 'id' => $user->id), function($message)
{
$message->from('my@domain.com', 'Mydomain.com')->to($user->email, $user->fname . ' ' . $user->lname)->subject('Mydomain.com: E-mail confirmation');
}); 
로그인 후 복사

邮箱验证的内容:

<!DOCTYPE html>
<html lang="en-US">
 <head>
 <meta charset="utf-8" />
 </head>

 <body>
 <p style="margin:0">
  Please confirm your e-mail address by clicking the following link:
  <a href="http://mydomain.com/verify&#63;code=<&#63;php echo $code; &#63;>&user=<&#63;php echo $id; &#63;>"></a>
 </p>
 </body>
</html> 
로그인 후 복사

现在让我们来验证一下它是否可行:

$user = User::where('id', '=', Input::get('user'))
  ->where('is_active', '=', 0)
  ->where('verify_token', '=', Input::get('code'))
  ->where('created_at', '>=', time() - (86400 * 2))
  ->first();

if($user) {
 $user->verify_token = null;
 $user->is_active = 1;

 if(!$user->save()) {
 // If unable to write to database for any reason, show the error
 return Redirect::to('verify')->with('error', 'Unable to connect to database at this time. Please try again later.');
 }

 // Show the success message
 return Redirect::to('verify')->with('success', 'You account is now active. Thank you.');
}

// Code not valid, show error message
return Redirect::to('verify')->with('error', 'Verification code not valid.'); 

로그인 후 복사

结论:
上面展示的代码只是一个教程示例,并且没有通过足够的测试。在你的web应用中使用的时候请先测试一下。上面的代码是在Laravel框架中完成的,但是你可以很轻松的把它迁移到其他的PHP框架中。同时,验证链接的有效时间为48小时,之后就过期。引入一个工作队列就可以很好的及时处理那些已经过期的验证链接。

本文实PHPChina原创翻译,原文转载于http://www.phpchina.com/portal.php?mod=view&aid=39888,小编认为这篇文章很具有学习的价值,分享给大家,希望对大家的学习有所帮助。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

session_start () 함수의 중요성은 무엇입니까? session_start () 함수의 중요성은 무엇입니까? May 03, 2025 am 12:18 AM

session_start () iscrucialinphpformanagingUsersessions.1) itiniteSanewsessionifnoneexists, 2) ResumesAnxistessions, and3) setSasessionCookieForContInuityAcrosrequests, enablingplicationsirecationSerauthenticationAndpersonalizestContent.

홍콩 디지털 환전 앱을 다운로드, 설치 및 등록하는 방법 2025 홍콩 디지털 환전 앱을 다운로드, 설치 및 등록하는 방법 2025 Apr 30, 2025 pm 07:18 PM

홍콩 디지털 환전 앱의 다운로드, 설치 및 등록 프로세스는 매우 간단합니다. 사용자는이 기사에 제공된 공식 앱 다운로드 링크를 통해이 앱을 신속하게 얻고 사용할 수 있습니다. 이 기사는 모든 사용자가 작업을 원활하게 완료 할 수 있도록 홍콩 디지털 환전 앱을 다운로드, 설치 및 등록하는 방법을 자세히 소개합니다.

작곡가 : PHP 개발자의 패키지 관리자 작곡가 : PHP 개발자의 패키지 관리자 May 02, 2025 am 12:23 AM

Composer는 PHP의 종속성 관리 도구이며 Composer.json 파일을 통해 프로젝트 종속성을 관리합니다. 1) 종속성 정보를 얻기 위해 Composer.json을 구문 분석합니다. 2) 종속성 트리를 형성하기위한 종속성; 3) Packagist에서 공급 업체 디렉토리로 종속성을 다운로드하여 설치합니다. 4) Composer.Lock 파일을 생성하여 팀 일관성 및 프로젝트 유지 관리 가능성을 보장하기 위해 종속성 버전을 잠그십시오.

통화 서클의 세 자이언트는 무엇입니까? 상위 10 개 권장 가상 통화 기본 교환 앱 통화 서클의 세 자이언트는 무엇입니까? 상위 10 개 권장 가상 통화 기본 교환 앱 Apr 30, 2025 pm 06:27 PM

통화 서클에서 소위 Big Three는 일반적으로 가장 영향력 있고 널리 사용되는 세 가지 암호 화폐를 나타냅니다. 이러한 cryptocurrencies는 시장에서 중요한 역할을하며 거래량 및 시가 총액 측면에서 잘 수행되었습니다. 동시에 주류 가상 환전 앱은 투자자와 거래자가 암호 화폐 거래를 수행하는 데 중요한 도구이기도합니다. 이 기사는 통화 서클의 3 개의 거인과 권장되는 상위 10 개 주류 가상 환전 앱을 자세히 소개합니다.

홍콩 디지털 환전 앱을 다운로드하는 방법은 무엇입니까? 상위 10 개 디지털 환전 앱이 포함되어 있습니다 홍콩 디지털 환전 앱을 다운로드하는 방법은 무엇입니까? 상위 10 개 디지털 환전 앱이 포함되어 있습니다 Apr 30, 2025 pm 07:12 PM

Hong Kong Digital Converency Exchange 앱을 다운로드하는 방법에는 다음이 포함됩니다. 1. OSL, Hashkey 또는 Binance HK 등과 같은 호환 플랫폼을 선택하십시오. 2. 공식 채널을 통해 다운로드, iOS 사용자는 App Store, Android 사용자가 Google Play 또는 공식 웹 사이트를 통해 다운로드합니다. 3. 신원을 등록하고 확인하고 홍콩 휴대 전화 번호 또는 이메일 주소를 사용하여 신원을 업로드하고 인증서를 업로드하십시오. 4. 보안 조치를 설정하고, 2 단계 인증을 활성화하고 정기적으로 계정 활동을 확인하십시오.

상위 10 개 디지털 통화 거래 앱 순위 : 상위 10 개 안전하고 쉬운 가상 디지털 통화 거래소 상위 10 개 디지털 통화 거래 앱 순위 : 상위 10 개 안전하고 쉬운 가상 디지털 통화 거래소 Apr 30, 2025 pm 04:24 PM

상위 10 개 디지털 통화 거래 앱의 순위는 다음과 같습니다. 1. Binance, 2. OKX, 3. COINBASE, 4. KRAKEN, 5. HUOBI, 6. KUCOIN, 7. BITFINEX, 8. BITTREX, 9. GEMINI, 10. POLONIEX. 이러한 거래소는 안전하고 신뢰할 수있는 거래 환경과 다양한 거래 방법을 제공합니다. 사용자는 등록 단계, 이메일 확인, KYC Identity Verification, Joint 및 Trading의 단계를 통해 각 플랫폼에서 운영 할 수 있습니다.

HTML 요소의 회전 효과를 설정하는 방법 HTML 요소의 회전 효과를 설정하는 방법 Apr 30, 2025 pm 02:42 PM

HTML에서 요소의 회전 효과를 설정하는 방법은 무엇입니까? CSS 및 JavaScript를 사용하여 달성 할 수 있습니다. 1. CSS의 변환 속성은 회전 (45deg)과 같은 정적 회전에 사용됩니다. 2. JavaScript는 변환 속성을 변경하여 구현되는 회전을 동적으로 제어 할 수 있습니다.

중국의 OK Exchange에 등록하는 방법? OK 거래 플랫폼 등록 및 중국 본토 초보자를위한 사용 안내서 중국의 OK Exchange에 등록하는 방법? OK 거래 플랫폼 등록 및 중국 본토 초보자를위한 사용 안내서 May 08, 2025 pm 10:51 PM

cryptocurrency 시장에서 신뢰할 수있는 거래 플랫폼을 선택하는 것이 중요합니다. 세계적으로 유명한 디지털 자산 거래소 인 OK Trading 플랫폼은 중국 본토에서 많은 초보자 사용자를 유치했습니다. 이 안내서는 OK Trading 플랫폼에 등록하고 사용하는 방법을 자세히 소개하여 초보자 사용자가 신속하게 시작할 수 있도록 도와줍니다.

See all articles