


Erstellen Sie mit Python eine Anti-Spam-E-Mail-Registrierung mit Opt-in-Funktion
Sie möchten also eine App erstellen und viele Benutzer gewinnen?
Das tun wir alle und wenn Sie ein Anfänger sind, müssen Sie die folgenden E-Mail-Anmeldefunktionen berücksichtigen.
- Gültige E-Mail-Adresse mit einem sicheren Passwort
- Bot-Prävention
- Double-Opt-In-Anmeldung
Ein solides E-Mail-Anmeldesystem ist für Web-Apps, Newsletter, kostenlose Downloads, Einladungen zu privaten Gruppen und die Lead-Generierung unerlässlich. Verlassen Sie sich nicht darauf, Dienste von Drittanbietern wie Auth0, Facebook oder Google zu nutzen, um Zugriff auf Ihre App zu erhalten. Behalten Sie Ihre App-Daten!
Damit Sie beginnen können, sollten Sie etwas Erfahrung in Python haben, da wir das Flask-Framework mit einer MySQL-Datenbank verwenden werden. Das wird mehr Spaß machen als die Verwendung von Wordpress, dem beliebtesten CMS. Sie müssten für ein Wordpress-Plugin bezahlen, um die gleichen Funktionen wie eine kostenlose Flask-Erweiterung zu haben. Ich habe bereits auf beiden aufgebaut und bevorzuge Python Flask für Web-Apps, obwohl Wordpress sehr gut in der Lage ist, Web-Apps zu erstellen.
Jeder Codeausschnitt wird erklärt und einige Kommentare in den Code eingefügt. Falls Sie die Benutzerregistrierung noch nicht erstellt haben oder nicht mit dem Innenleben vertraut sind, werde ich die Details für Sie beschreiben. Hier ist eine Zusammenfassung der Funktionen, die wir wie im ersten Absatz beschrieben implementieren werden:
Eine gültige E-Mail-Adresse kann überprüft werden, indem die Eingabezeichenfolge des Benutzers mithilfe eines regulären Ausdrucks oder einer Flask-Erweiterung analysiert wird. Wir erlauben keine zufälligen Text- oder SQL-Injection-Hacks.
Bot-Prävention kann mit einem versteckten Feld erfolgen, das dem Benutzer nicht angezeigt wird, aber normalerweise automatisch von Bots ausgefüllt wird, die nach anfälligen Anmeldeformularen suchen.
Die Double-Opt-in-Methode erfordert, dass der Empfänger Ihnen die Erlaubnis erteilt, ihm eine E-Mail zu senden, indem er einen Bestätigungslink in seinen Posteingang erhält. Dies dient hauptsächlich dazu, zu verhindern, dass jemand anderes Ihre E-Mail-Adresse verwendet. Dadurch wird auch verhindert, dass Testbenutzer sich einfach anmelden und ihr Konto aufgeben.
Lass es uns kodieren!
Erstellen Sie ein Arbeitsverzeichnis:
mkdir signup cd signup
Erstellen Sie Ihre Python-Umgebung mit python3 -m venv signup oder conda create -n signup python3. Ich bevorzuge Conda.
Erstellen Sie eine MySQL-Tabelle zum Speichern Ihrer Benutzer. Das validierte Feld ist für das Double-Opt-In:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(120) NOT NULL UNIQUE, password VARCHAR(120) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, validated BOOLEAN DEFAULT FALSE );
Abhängigkeiten installieren:
pip flask flask-mail secure SQLAlchemy Flask-WTF Flask-SQLAlchemy mysql-connector-python
Alternativ können Sie dasselbe in einer Datei „requirements.txt“ auflisten lassen und pip install -r „requirements.txt“
Erstellen Sie eine app.py-Datei mit den folgenden Abhängigkeiten:
from flask import Flask, render_template, request, url_for, redirect, flash from flask_mail import Mail, Message from datetime import datetime from flask_sqlalchemy import SQLAlchemy from sqlalchemy.sql import func from itsdangerous import URLSafeTimedSerializer, SignatureExpired from werkzeug.security import generate_password_hash, check_password_hash import secrets
Geben Sie Ihre eigenen Serverkonfigurationsdaten mit diesen Zeilen ein:
# Flask configurations secret = secrets.token_urlsafe(32) app.secret_key = secret app.config['SECRET_KEY'] = secret # auto-generated secret key # SQLAlchemy configurations SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://admin:user@localhost/tablename' # Email configurations app.config['MAIL_SERVER'] = 'smtp.example.com' app.config['MAIL_PORT'] = 587 app.config['MAIL_USERNAME'] = 'your_email@example.com' app.config['MAIL_PASSWORD'] = 'your_password' app.config['MAIL_USE_TLS'] = True app.config['MAIL_USE_SSL'] = False db = SQLAlchemy(app) mail = Mail(app) s = URLSafeTimedSerializer(app.config['SECRET_KEY']) #set secret to the serliazer
Letztendlich sollten Sie Ihre Konfigurationsinformationen in einer .env-Datei haben.
Im nächsten Abschnitt wird die ORM-Struktur von SQLAlchemy verwendet, um die Datenbank für Sie abzufragen. Beachten Sie, dass der Klassenname mit dem Namen Ihrer Datenbanktabelle übereinstimmen sollte, andernfalls erhalten Sie eine Fehlermeldung. Das db.model stellt Ihre Tabelleneinstellungen dar, einschließlich Spaltenname, Typ, Länge, Schlüssel und Nullwert:
class User(db.Model): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(120), unique=True, nullable=False) password = db.Column(db.String(120), nullable=False) created_at = db.Column(db.DateTime, server_default=db.func.now()) validated = db.Column(db.Boolean, default=False)
Wenn Sie die MySQL-Datenbanktabelle noch nicht manuell erstellt haben, können Sie dies mit diesem Flask-Code direkt nach dem Klassen-Benutzercodeblock tun:
# Create the database table with app.app_context(): db.create_all()
Der Kürze dieses Tutorials halber überspringen wir die Indexseite oder die, wie Sie Ihre App-Homepage nennen würden, und zeigen einfach die Anmeldeseite an, indem wir Pythons Decorator-Funktion für die Seitenroute verwenden:
@app.route('/') def index(): return '<h1>Homepage</h1>' @app.route('/signup', methods=['GET', 'POST']) def signup(): if request.method == 'POST': # Hidden field validation to prevent bot submission hidden_field = request.form.get('hidden_field') if hidden_field: return redirect(url_for('index')) # Bot detected, ignore submission email = request.form['email'] password = request.form['password'] hashed_password = generate_password_hash(password, method='sha256') # Insert user into the database new_user = User(email=email, password=hashed_password) db.session.add(new_user) db.session.commit() # Send confirmation email token = s.dumps(email, salt='email-confirm') msg = Message('Confirm your Email', sender='your_email@example.com', recipients=[email]) link = url_for('confirm_email', token=token, _external=True) msg.body = f'Your link is {link}' mail.send(msg) flash('A confirmation email has been sent to your email address.', 'success') return redirect(url_for('index')) return render_template('signup.html')
Bevor wir das HTML-Anmeldeformular hinzufügen, vervollständigen wir das Backend, indem wir die Route zur Validierung der Double-Opt-In-Funktion hinzufügen. Diese Route verwendet die zuvor erstellte Variable s, die das zeitkritische, geheime Token generiert. Weitere Informationen finden Sie in den Dokumenten
Das maximale Alter beträgt die Sekunden vor Ablauf des Links. In diesem Fall hat der Benutzer also 20 Minuten Zeit, seine E-Mail-Adresse zu bestätigen.
@app.route('/confirm_email/<token>') def confirm_email(token): try: email = s.loads(token, salt='email-confirm', max_age=1200) # Token expires after 1 hour except SignatureExpired: return '<h1>The token is expired!</h1>' # Update field in database user = User.query.filter_by(email=email).first_or_404() user.validated = True db.session.commit() return '<h1>Email address confirmed!</h1>'
Nun zur allgegenwärtigen Hauptanweisung, die Python anweist, das Skript auszuführen, wenn die Datei direkt ausgeführt wird (im Gegensatz zu einem importierten Modul):
if __name__ == '__main__': app.run(debug=True)
Bevor wir diesen Back-End-Code vervollständigen, benötigen wir noch das Front-End-HTML für die Benutzereingabe. Wir werden dies mit der integrierten Jinja-Vorlage von Flask tun. Erstellen Sie eine Datei mit dem Namen templates/signup.html, deren Name mit der Route übereinstimmen sollte, die Sie zuvor in app.py erstellt haben. Standardmäßig verwendet Jinja das Verzeichnis /templates für die HTML-Dateien. Sie können diese Einstellung ändern, aber für dieses Tutorial verwenden wir das Verzeichnis /templates der App.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Email Sign Up</title> </head> <body> <h1>Sign Up</h1> <form action="{{ url_for('signup') }}" method="POST"> <input type="email" name="email" placeholder="Enter your email" required> <input type="password" name="password" placeholder="Enter your password" required> <input type="hidden" name="bot_check"> <input type="submit" value="Sign Up"> </form> {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} <ul> {% for category, message in messages %} <li>{{ message }}</li> {% endfor %} </ul> {% endif %} {% endwith %} </body> </html>
Ihr Code sollte ab diesem Punkt funktionieren, wenn Sie den flask-Befehl mit aktiviertem Debugging ausführen. Dadurch können Sie etwaige Fehler sowohl in der Befehlszeile als auch im Browserfenster sehen:
flask --app app.py --debug run
Das obige ist der detaillierte Inhalt vonErstellen Sie mit Python eine Anti-Spam-E-Mail-Registrierung mit Opt-in-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Ist es genug, um Python für zwei Stunden am Tag zu lernen? Es hängt von Ihren Zielen und Lernmethoden ab. 1) Entwickeln Sie einen klaren Lernplan, 2) Wählen Sie geeignete Lernressourcen und -methoden aus, 3) praktizieren und prüfen und konsolidieren Sie praktische Praxis und Überprüfung und konsolidieren Sie und Sie können die Grundkenntnisse und die erweiterten Funktionen von Python während dieser Zeit nach und nach beherrschen.

Python ist in der Entwicklungseffizienz besser als C, aber C ist in der Ausführungsleistung höher. 1. Pythons prägnante Syntax und reiche Bibliotheken verbessern die Entwicklungseffizienz. 2. Die Kompilierungsmerkmale von Compilation und die Hardwarekontrolle verbessern die Ausführungsleistung. Bei einer Auswahl müssen Sie die Entwicklungsgeschwindigkeit und die Ausführungseffizienz basierend auf den Projektanforderungen abwägen.

Python und C haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1) Python ist aufgrund seiner prägnanten Syntax und der dynamischen Typisierung für die schnelle Entwicklung und Datenverarbeitung geeignet. 2) C ist aufgrund seiner statischen Tipp- und manuellen Speicherverwaltung für hohe Leistung und Systemprogrammierung geeignet.

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Zu den Anwendungen von Python im wissenschaftlichen Computer gehören Datenanalyse, maschinelles Lernen, numerische Simulation und Visualisierung. 1.Numpy bietet effiziente mehrdimensionale Arrays und mathematische Funktionen. 2. Scipy erweitert die Numpy -Funktionalität und bietet Optimierungs- und lineare Algebra -Tools. 3.. Pandas wird zur Datenverarbeitung und -analyse verwendet. 4.Matplotlib wird verwendet, um verschiedene Grafiken und visuelle Ergebnisse zu erzeugen.

Zu den wichtigsten Anwendungen von Python in der Webentwicklung gehören die Verwendung von Django- und Flask -Frameworks, API -Entwicklung, Datenanalyse und Visualisierung, maschinelles Lernen und KI sowie Leistungsoptimierung. 1. Django und Flask Framework: Django eignet sich für die schnelle Entwicklung komplexer Anwendungen, und Flask eignet sich für kleine oder hochmobile Projekte. 2. API -Entwicklung: Verwenden Sie Flask oder Djangorestframework, um RESTFUFFUPI zu erstellen. 3. Datenanalyse und Visualisierung: Verwenden Sie Python, um Daten zu verarbeiten und über die Webschnittstelle anzuzeigen. 4. Maschinelles Lernen und KI: Python wird verwendet, um intelligente Webanwendungen zu erstellen. 5. Leistungsoptimierung: optimiert durch asynchrones Programmieren, Caching und Code
