imliam/php-unique-gmail-address

确保Gmail地址唯一

v1.0.0 2020-09-12 16:27 UTC

This package is auto-updated.

Last update: 2024-09-15 06:35:27 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

一个确保Gmail地址唯一的包。

Gmail平台提供了其他电子邮件平台没有的一些功能。可以存在无限数量的不同Gmail地址,这些地址指向一个Gmail收件箱/账户,这使得恶意用户可以轻易地滥用。

要了解更多关于用户如何为单个Gmail收件箱创建无限地址的信息,请查看这篇文章

此包可以实现检测单个Gmail账户的重复地址并确保它们是唯一的。

安装

您可以通过composer安装此包

composer require imliam/php-unique-gmail-address

用法

此包的主要用途围绕提供的UniqueGmailAddress类,可以将电子邮件地址传递给它进行比较

$email = new UniqueGmailAddress('example@gmail.com');

isGmailAddress方法将检查给定的地址是否属于Gmail账户

$one = new UniqueGmailAddress('example@gmail.com');
$one->isGmailAddress(); // true

$two = new UniqueGmailAddress('example@googlemail.com');
$two->isGmailAddress(); // true

$three = new UniqueGmailAddress('example@example.com');
$three->isGmailAddress(); // false

normalizeAddress方法将接受一个电子邮件地址并将其规范化为最简单的形式

$email = new UniqueGmailAddress('ex.am.ple+helloworld@googlemail.com');
$email->normalizeAddress(); // example@gmail.com

⚠️最好保存并使用用户提供的电子邮件地址,而不是仅保存规范化版本。如果用户输入了非规范化电子邮件地址,他们可能期望接收到的任何电子邮件都使用该确切地址,而不是规范化版本。

getRegexgetRegexWithDelimeters方法将返回一个可以用于将原始电子邮件地址与另一个地址比较的正则表达式,例如使用preg_match函数

$email = new UniqueGmailAddress('example@gmail.com');
$email->getRegex(); // ^e(\.?)+x(\.?)+a(\.?)+m(\.?)+p(\.?)+l(\.?)+e(\+.*)?\@(gmail|googlemail).com$

matches方法将立即将正则表达式与另一个值匹配,如果两个电子邮件地址属于同一Gmail账户,则返回true

$email = new UniqueGmailAddress('example@gmail.com');
$email->matches('ex.am.ple+helloworld@googlemail.com'); // true

Laravel规则

想要检查重复的Gmail账户的最常见用例之一是防止多个用户使用相同的电子邮件地址注册您的服务。

为了处理这种情况,该包还提供了一个Laravel验证规则类,可以用来检查数据库中是否已存在匹配的电子邮件地址。

$request->validate([
    'email' => [new UniqueGmailAddressRule()],
]);

默认情况下,它将检查users表中的email列,但在使用规则时这些可以覆盖。

$request->validate([
    'email' => [new UniqueGmailAddressRule('contacts', 'email_address')],
]);

此规则假设您正在数据库中存储非规范化电子邮件地址。此规则将使用正则表达式与数据库中的每一行进行匹配以检查

💡如果您不想对数据库的每一行都进行正则表达式匹配,您可以将规范化电子邮件地址存储在原始电子邮件地址旁边的第二列中,例如在normalized_email列中。

这将允许您使用标准的exists规则直接进行匹配,效率更高。

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全性

如果您发现任何与安全相关的问题,请发送电子邮件至 liam@liamhammett.com,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件