>백엔드 개발 >PHP 튜토리얼 >PHP 사용자 등록 이메일 활성화 계정 기능

PHP 사용자 등록 이메일 활성화 계정 기능

怪我咯
怪我咯원래의
2017-06-16 11:11:431472검색

웹사이트에 계정을 등록하면 일반적으로 계정을 활성화할 수 있는 클릭 링크가 포함된 이메일을 받게 됩니다. 이 글에서는 주로 PHP 이메일 활성화 계정 구현 코드를 소개합니다.

등록 중입니다. 웹사이트 우리는 계정을 개설할 때 일반적으로 계정을 활성화하기 위한 클릭 링크가 포함된 이메일을 받습니다. 오늘은 어떻게 계정을 활성화합니까?

준비 조건

저희는 계정을 등록할 때 일반적으로 사용자 테이블에 ID, 사용자 이름, 비밀번호, 이메일 또는 휴대폰 번호를 기록하며, 계정 활성화 여부를 입력하는 필드도 있습니다. activation varchar(50) 이라고 가정합니다. 등록 시 일반적으로 활성화 코드가 생성되며 활성화 코드는 $activation_key=bin2hex(openssl_random_pseudo_bytes()를 사용할 수 있습니다. 16)) 를 생성하여 필드에 삽입합니다. activation varchar(50) 注册时一般都会生成一个激活码,并且把激活码插入activation字段,我们可以使用$activation_key=bin2hex(openssl_random_pseudo_bytes(16)); 来生成,并且把它插入字段。

在链接中保存激活信息

既然我们点击了邮件里的链接后,就激活了账户,那么说明这个链接里,必然储存了激活信息。而它应该储存哪些信息呢,首先,必须有激活码,还有用户注册时的邮箱或者id,我们这里用邮箱。例如下面这个链接。


复制代码 代码如下:


$message.="64836ed00a3411da01dfd6168e7db875Activate5db79b134e9f6b82c0b36e0489ee08ed";

$email使我们注册时的邮箱,我们用urlencode()来编码一下,将字符串用于 URL 的请求部分,$activation_key

링크에 활성화 정보 저장

이메일에 있는 링크를 클릭해서 계정을 활성화했으니 활성화 정보가 이 링크에 저장되어야 한다는 뜻입니다. 어떤 정보를 저장해야 합니까? 먼저 등록 시 활성화 코드와 사용자의 이메일 또는 ID가 있어야 합니다. 예를 들어 아래 링크입니다.


코드 복사 코드는 다음과 같습니다:

$message. ="< ;a href="." rel="외부 nofollow" http://www.XXXXX.com/activate.php?email=".urlencode($email)."&key=$activation_key"."> Activate4a11e5928b3688cf38c9163b657eb5ac";

$email은 등록할 때 사용한 이메일 주소입니다. urlencode()를 사용하여 이를 인코딩하고 요청 문자열을 사용합니다. $activation_key는 우리가 생성한 활성화 코드입니다. 우리는 서버를 사용하여 활성화 이메일을 이 이메일로 보내고 이는 이메일 클라이언트에 하이퍼링크로 표시됩니다. 클릭하면 이메일과 키가 activate.php 파일로 전송됩니다. 이는 인증 및 계정 활성화가 시작됨을 의미합니다.

activate.php에서 정보 확인🎜🎜🎜URL 요청을 사용하여 사용자 이메일과 활성화 코드를 activate.php에 전달합니다. 이제 사용자 확인을 위해 비교를 위해 데이터베이스에서 원본 정보만 검색하면 됩니다. 그래서 첫 번째 단계는 활성화 코드를 사용자 테이블에 삽입하는 것입니다. 🎜🎜🎜🎜
<?php
$link=mysqli_connect("localhost", "root", "root", "project") or die("Database Access Denied");//连接数据库
if (!isset($_GET[&#39;email&#39;])||!isset($_GET["key"])){
  echo "<p class=&#39;alert alert-danger&#39;>Account Activation Failed</p>";
  exit;//如果邮件链接损坏,没有传入用户激活信息,则不执行后续步骤
}
$email=$_GET[&#39;email&#39;];
$key=$_GET[&#39;key&#39;];
$email=mysqli_real_escape_string($link, $email);
$key=mysqli_real_escape_string($link, $key);//转义特殊字符
$sql="UPDATE users SET activation=&#39;activated&#39; WHERE (user_email=&#39;$email&#39; AND activation=&#39;$key&#39;) LIMIT 1";
$result=mysqli_query($link, $sql);//查询email与key匹配的数据项,并且更新activation字段到activated
if (mysqli_affected_rows($link)==1){
  echo "<p>Account Activated</p>";
  echo &#39;<a href="index.php" rel="external nofollow" type="button">Login</a>&#39;;
  echo "<br/>";
}else{
  echo "<p>Account Activation Failed Or Already Activated</p>";
}
?>
🎜🎜🎜🎜이제 사용자가 로그인하면 먼저 다음과 일치하는지 확인합니다. 활성화가 활성화되면 다음 단계를 진행하세요🎜🎜이 문서에서는 이 문제에 대한 해결책만 다루고 있으며, 전체 사용자 등록, 활성화, 로그인 및 이메일을 보내는 서버도 구성해야 합니다🎜

위 내용은 PHP 사용자 등록 이메일 활성화 계정 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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