Rumah >pembangunan bahagian belakang >tutorial php >Kemahiran pembangunan PHP: Bagaimana untuk melaksanakan fungsi pengesahan SMS pendaftaran pengguna

Kemahiran pembangunan PHP: Bagaimana untuk melaksanakan fungsi pengesahan SMS pendaftaran pengguna

王林
王林asal
2023-09-21 14:37:48750semak imbas

Kemahiran pembangunan PHP: Bagaimana untuk melaksanakan fungsi pengesahan SMS pendaftaran pengguna

Kemahiran pembangunan PHP: Bagaimana untuk melaksanakan fungsi pengesahan SMS pendaftaran pengguna

Dalam era Internet, pendaftaran pengguna telah menjadi tingkah laku biasa untuk laman web dan aplikasi. Untuk melindungi keselamatan akaun pengguna dan mencegah pendaftaran berniat jahat, banyak syarikat telah mendayakan fungsi pengesahan SMS. Pengguna perlu memasukkan nombor telefon bimbit mereka dan menerima kod pengesahan SMS semasa mendaftar untuk mengesahkan identiti dan kesahihan mereka. Dalam artikel ini, kami akan memperkenalkan cara menggunakan bahasa PHP untuk melaksanakan fungsi pengesahan SMS pendaftaran pengguna dan memberikan contoh kod khusus.

Langkah 1: Sediakan persekitaran pembangunan

Pertama, pastikan anda telah memasang penghurai PHP dan pangkalan data, seperti MySQL. Selain itu, anda juga memerlukan platform SMS yang tersedia Kami akan menggunakan Perkhidmatan SMS Awan Alibaba (Aliyun SMS) dalam contoh ini. Anda perlu mendaftar akaun dengan Alibaba Cloud dan ikuti dokumentasinya untuk mengkonfigurasi dan mendapatkan kunci API.

Langkah 2: Buat pangkalan data

Buat pangkalan data bernama "pengguna" dan buat jadual bernama "pengguna" dalam pangkalan data. Struktur jadual adalah seperti berikut:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  password VARCHAR(255) NOT NULL,
  mobile VARCHAR(20) UNIQUE NOT NULL,
  status TINYINT(1) DEFAULT 0,
  verification_code VARCHAR(6) DEFAULT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Dalam jadual ini, kami menyimpan maklumat pengguna, termasuk nama pengguna, kata laluan, nombor telefon mudah alih, status pengguna, kod pengesahan dan masa penciptaan.

Langkah 3: Hantar kod pengesahan SMS

Seterusnya, kami akan menulis fungsi PHP untuk menghantar kod pengesahan SMS. Dalam fungsi ini, kita perlu memanggil API SMS Alibaba Cloud dan memasukkan nombor telefon mudah alih dan kod pengesahan sebagai parameter.

function sendSMS($mobile, $verificationCode) {
  $accessKeyId = '<Your Access Key Id>';
  $accessSecret = '<Your Access Key Secret>';
  $params = [
    'PhoneNumbers' => $mobile,
    'SignName' => '<Your Sign Name>',
    'TemplateCode' => '<Your Template Code>',
    'TemplateParam' => json_encode(['code' => $verificationCode])
  ];
  $client = new GuzzleHttpClient();
  $response = $client->request('POST', 'https://dysmsapi.aliyuncs.com/', [
    'query' => array_merge($params, ['AccessKeyId' => $accessKeyId]),
    'headers' => ['x-sdk-client' => 'php/2.0.0']
  ]);
  return $response->getBody();
}

Dalam fungsi ini, kami perlu menggantikan <your access key id></your><your access key secret></your>替换为你在阿里云获取的API密钥信息。同时,你还需要将<your sign name></your><your template code></your> dengan tandatangan SMS dan kod templat SMS yang anda tetapkan dalam Alibaba Cloud.

Langkah 4: Memproses permintaan pendaftaran

Apabila pengguna menyerahkan permintaan pendaftaran, kami perlu menyemak sama ada nombor telefon bimbit telah didaftarkan. Jika tidak didaftarkan, kami menjana kod pengesahan 6 digit secara rawak dan menyimpannya ke pangkalan data.

function registerUser($username, $password, $mobile) {
  // 检查手机号码是否已被注册
  if (checkMobileExists($mobile)) {
    return '手机号码已被注册';
  }
  // 生成随机验证码
  $verificationCode = rand(100000, 999999);
  // 保存验证码到数据库
  saveVerificationCode($mobile, $verificationCode);
  // 发送短信验证码
  $response = sendSMS($mobile, $verificationCode);
  return '短信验证码已发送';
}

function checkMobileExists($mobile) {
  // 连接数据库
  $conn = new mysqli('localhost', 'root', 'password', 'users');
  // 检查手机号码是否已存在
  $sql = "SELECT * FROM users WHERE mobile = '{$mobile}'";
  $result = $conn->query($sql);
  return $result->num_rows > 0;
}

function saveVerificationCode($mobile, $verificationCode) {
  // 连接数据库
  $conn = new mysqli('localhost', 'root', 'password', 'users');
  // 保存验证码到数据库
  $sql = "UPDATE users SET verification_code = '{$verificationCode}' WHERE mobile = '{$mobile}'";
  $conn->query($sql);
}

Dalam kod contoh ini, kami mula-mula menyemak sama ada nombor telefon bimbit telah didaftarkan. Jika nombor mudah alih sudah wujud, kami akan mengembalikan mesej ralat. Jika tidak, kami akan menjana kod pengesahan 6 digit rawak dan menyimpannya ke pangkalan data.

Langkah 5: Sahkan kod pengesahan

Selepas pengguna memasukkan kod pengesahan SMS yang diterima, kami perlu mengesahkan sama ada kod pengesahan itu betul. Jika kod pengesahan adalah betul, kami akan mengemas kini status pengguna kepada "Disahkan" untuk menunjukkan bahawa pengguna telah disahkan oleh nombor telefon mudah alih mereka.

function verifyCode($mobile, $verificationCode) {
  // 检查验证码是否正确
  if (checkVerificationCode($mobile, $verificationCode)) {
    // 更新用户状态
    updateStatus($mobile);
    return '手机号码验证成功';
  }
  return '验证码错误';
}

function checkVerificationCode($mobile, $verificationCode) {
  // 连接数据库
  $conn = new mysqli('localhost', 'root', 'password', 'users');
  // 检查验证码是否正确
  $sql = "SELECT * FROM users WHERE mobile = '{$mobile}' AND verification_code = '{$verificationCode}'";
  $result = $conn->query($sql);
  return $result->num_rows > 0;
}

function updateStatus($mobile) {
  // 连接数据库
  $conn = new mysqli('localhost', 'root', 'password', 'users');
  // 更新用户状态为已验证
  $sql = "UPDATE users SET status = 1 WHERE mobile = '{$mobile}'";
  $conn->query($sql);
}

Dalam kod ini, kami mula-mula menyemak sama ada kod pengesahan itu betul. Jika kod pengesahan adalah betul, kami akan mengemas kini status pengguna kepada 1, menunjukkan bahawa pengguna telah disahkan melalui nombor telefon mudah alih.

Ringkasan:

Melalui langkah di atas, kami berjaya melaksanakan fungsi pengesahan SMS pendaftaran pengguna. Pengguna akan menerima kod pengesahan mesej teks semasa mendaftar Dengan memasukkan kod pengesahan yang betul, kesahihan dan kesahihan nombor telefon bimbit dipastikan. Fungsi pengesahan SMS ini boleh meningkatkan keselamatan akaun pengguna dengan berkesan dan menghalang pendaftaran berniat jahat dan akaun yang dicuri.

Perlu diambil perhatian bahawa kod di atas hanyalah contoh mudah, dan langkah keselamatan dan proses pengesahan lain mungkin perlu dipertingkatkan dalam projek sebenar. Tetapi melalui contoh ini, anda boleh belajar cara menggunakan bahasa PHP dan perkhidmatan SMS Awan Alibaba untuk melaksanakan fungsi pengesahan SMS pendaftaran pengguna.

Rujukan:

  • [Dokumen API SMS Awan Alibaba](https://help.aliyun.com/document_detail/55284.html?spm=a2c4g.11186623.6.624.649a645e)

Atas ialah kandungan terperinci Kemahiran pembangunan PHP: Bagaimana untuk melaksanakan fungsi pengesahan SMS pendaftaran pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn