Heim  >  Artikel  >  Backend-Entwicklung  >  PHP realisiert die automatische Anti-Swiping-Funktion des E-Mail-Bestätigungscodes

PHP realisiert die automatische Anti-Swiping-Funktion des E-Mail-Bestätigungscodes

WBOY
WBOYOriginal
2023-09-13 08:52:50565Durchsuche

PHP realisiert die automatische Anti-Swiping-Funktion des E-Mail-Bestätigungscodes

Titel: PHP realisiert die automatische Anti-Swiping-Funktion des E-Mail-Bestätigungscodes

Mit der Popularität des Internets und der weiten Verbreitung von Anwendungen sind E-Mail-Bestätigungscodes in vielen Websites und Anwendungen zu einer häufig verwendeten Verifizierungsmethode geworden. Da jedoch die Häufigkeit des Versendens von Verifizierungscodes zu hoch ist, stellt dies eine zusätzliche Belastung für den Server dar und kann von böswilligen Benutzern leicht dazu missbraucht werden, SMS-Verifizierungscodes zu erschleichen. Um dieses Problem zu lösen, kann die automatische Anti-Swiping-Funktion von E-Mail-Verifizierungscodes in PHP implementiert werden. In diesem Artikel wird erläutert, wie Sie diese Funktion mit PHP implementieren, und es werden spezifische Codebeispiele angehängt.

1. E-Mail-Bestätigungscode generieren

Zuerst müssen wir einen E-Mail-Bestätigungscode generieren. In PHP können Sie die Zufallszahlenfunktion rand() verwenden, um einen zufälligen Verifizierungscode einer bestimmten Länge zu generieren. Das Codebeispiel lautet wie folgt:

function generateEmailCode($length) {
    $code = '';
    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charLength = strlen($chars);

    for ($i = 0; $i < $length; $i++) {
        $code .= $chars[rand(0, $charLength - 1)];
    }

    return $code;
}

Im obigen Code akzeptiert die Funktion „generateEmailCode()“ eine Parameterlänge, mit der die Länge des generierten Bestätigungscodes angegeben wird. Intern verwendet die Funktion die Funktion rand(), um Zufallszahlen zu generieren und generiert Verifizierungscodes basierend auf dem angegebenen Zeichensatz. Abschließend wird der generierte Verifizierungscode zurückgegeben.

2. Berechnen Sie die Häufigkeit des Sendens von Bestätigungscodes

Um zu verhindern, dass Benutzer häufig Bestätigungscodes durchziehen, müssen wir die Häufigkeit des Sendens von Bestätigungscodes berechnen. Bei der Implementierung der automatischen Anti-Swipe-Funktion können wir mithilfe der Datenbank den Zeitpunkt aufzeichnen, zu dem jede E-Mail-Adresse einen Bestätigungscode sendet, und das Zeitintervall für das Senden von Bestätigungscodes berechnen. Wenn das Zeitintervall unter dem festgelegten Schwellenwert liegt, wird dies als Putzverhalten gewertet und die Übermittlung des Bestätigungscodes wird verweigert.

Zuerst müssen wir eine Datenbanktabelle erstellen, um die Sendezeit des Bestätigungscodes aufzuzeichnen, einschließlich E-Mail-Adresse, Sendezeit und anderer Felder. Das Codebeispiel lautet wie folgt:

CREATE TABLE `email_verification` (
    `email` varchar(255) NOT NULL,
    `send_time` datetime NOT NULL
);

Als nächstes schreiben Sie eine Funktion checkEmailFrequency(), die die Häufigkeit des Sendens von Bestätigungscodes überprüft. Das Codebeispiel lautet wie folgt:

function checkEmailFrequency($email, $threshold) {
    $conn = mysqli_connect('localhost', 'username', 'password', 'database');

    if (!$conn) {
        die('数据库连接失败');
    }

    $query = "SELECT send_time FROM email_verification WHERE email = '$email' ORDER BY send_time DESC LIMIT 1";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_assoc($result);

    if ($row) {
        $lastSendTime = strtotime($row['send_time']);
        $currentTime = time();
        $timeDiff = $currentTime - $lastSendTime;

        if ($timeDiff < $threshold) {
            return false;
        }
    }

    return true;
}

Im obigen Code akzeptiert die Funktion checkEmailFrequency() zwei Parameter, nämlich die E-Mail-Adresse und den Schwellenwert. Innerhalb der Funktion wird zunächst eine Datenbankverbindung aufgebaut, dann der letzte Sendezeitpunkt eines bestimmten Postfachs abgefragt und das Zeitintervall berechnet. Wenn das Zeitintervall kleiner als der Schwellenwert ist, geben Sie „false“ zurück, um das Wischverhalten anzuzeigen; andernfalls geben Sie „true“ zurück, um das Senden des Bestätigungscodes zu ermöglichen.

3. Senden Sie den E-Mail-Bestätigungscode

Wenn Sie den E-Mail-Bestätigungscode senden, rufen Sie zunächst die Funktion checkEmailFrequency() auf, um die Häufigkeit des Sendens des Bestätigungscodes zu überprüfen. Wenn „true“ zurückgegeben wird, kann der Bestätigungscode gesendet werden; andernfalls wird der Bestätigungscode nicht gesendet und es wird eine entsprechende Fehlermeldung ausgegeben. Das Codebeispiel lautet wie folgt:

$email = 'user@example.com';
$threshold = 60; // 阈值设为60秒

if (checkEmailFrequency($email, $threshold)) {
    $verificationCode = generateEmailCode(6); // 生成6位验证码

    // 发送验证码的逻辑代码

    // 记录验证码的发送时间
    $conn = mysqli_connect('localhost', 'username', 'password', 'database');

    if (!$conn) {
        die('数据库连接失败');
    }

    $query = "INSERT INTO email_verification (email, send_time) VALUES ('$email', NOW())";
    mysqli_query($conn, $query);
} else {
    echo '验证码发送过于频繁,请稍后再试。';
}

Im obigen Code ist $email die E-Mail-Adresse, an die der Bestätigungscode gesendet werden muss, und $threshold ist der festgelegte Schwellenwert. Rufen Sie zunächst die Funktion checkEmailFrequency() auf, um die Sendehäufigkeit zu überprüfen. Wenn „true“ zurückgegeben wird, wird der Bestätigungscode gesendet und die Sendezeit aufgezeichnet.

4. Zusammenfassung

Durch die oben genannten Schritte haben wir die automatische Anti-Swiping-Funktion für E-Mail-Bestätigungscodes erfolgreich in PHP implementiert. Durch Schritte wie das Generieren von Bestätigungscodes, die Berechnung der Sendehäufigkeit und das Versenden von Bestätigungscodes wird der Missbrauch von Bestätigungscodes durch Benutzer effektiv verhindert. Gleichzeitig stellen wir auch kurz spezifische Codebeispiele vor, um Entwicklern die schnelle Verwendung zu erleichtern. Ich hoffe, dieser Artikel hilft Ihnen zu verstehen, wie Sie die automatische Anti-Swiping-Funktion von E-Mail-Bestätigungscodes implementieren.

Das obige ist der detaillierte Inhalt vonPHP realisiert die automatische Anti-Swiping-Funktion des E-Mail-Bestätigungscodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn