


Créez un enregistrement de courrier électronique anti-spam et opt-in avec Python
Vous souhaitez donc créer une application et attirer de nombreux utilisateurs ?
Nous le faisons tous et si vous êtes débutant, vous devez prendre en compte les fonctionnalités d'inscription par e-mail suivantes.
- Adresse email valide avec un mot de passe fort
- Prévention des robots
- Inscription à double opt-in
Un système d'inscription par e-mail solide est essentiel pour les applications Web, les newsletters, les téléchargements gratuits, les invitations à des groupes privés et la génération de leads. Ne comptons pas sur l'utilisation de services tiers tels que Auth0, Facebook ou Google pour accéder à votre application. Gardez les données de votre application !
Pour commencer, vous devez avoir une certaine expérience en Python car nous allons utiliser le framework Flask avec une base de données MySQL. Cela va être plus amusant que d'utiliser Wordpress, le CMS le plus populaire. Vous devrez payer pour un plugin Wordpress pour avoir les mêmes fonctionnalités qu'une extension Flask gratuite. J'ai déjà construit sur les deux et je préfère Python Flask pour les applications Web, même si Wordpress est très capable de créer des applications Web.
Chaque extrait de code sera expliqué et inclura quelques commentaires dans le code. Si vous n'avez pas créé d'enregistrement d'utilisateur ou si vous ne connaissez pas le fonctionnement interne, je décrirai les détails pour vous. Voici un résumé des fonctionnalités que nous mettrons en œuvre comme indiqué dans le premier paragraphe :
Une adresse e-mail valide peut être vérifiée en analysant la chaîne d'entrée de l'utilisateur à l'aide d'une expression régulière ou d'une extension Flask. Nous n'autoriserons pas les hacks de type texte aléatoire ni injection SQL.
La La prévention des robots peut être effectuée avec un champ caché qui n'est pas affiché à l'utilisateur mais qui est généralement rempli automatiquement par les robots qui explorent les formulaires d'inscription vulnérables.
La méthode de double opt-in nécessite que le destinataire vous autorise à lui envoyer un e-mail en recevant un lien de validation dans sa boîte de réception. Ceci est principalement utilisé pour empêcher quelqu'un d'autre d'utiliser votre adresse e-mail. Cela empêche également les utilisateurs de test qui se contentent de s'inscrire et d'abandonner leur compte.
Codons-le !
Créez un répertoire de travail :
mkdir signup cd signup
Créez votre environnement Python en utilisant python3 -m venv signup ou conda create -n signup python3. Je préfère conda.
Créez une table MySQL pour stocker vos utilisateurs. Le champ validé est pour le 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 );
Installer les dépendances :
pip flask flask-mail sécurisé SQLAlchemy Flask-WTF Flask-SQLAlchemy mysql-connector-python
Alternativement, vous pouvez avoir la même chose répertoriée dans un fichier exigences.txt et exécuter pip install -r exigences.txt
Créez le fichier app.py avec les dépendances suivantes :
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
Entrez vos propres données de configuration de serveur en utilisant ces lignes :
# 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
En fin de compte, vous devriez avoir vos informations de configuration dans un fichier .env.
La section suivante utilise la structure ORM de SQLAlchemy pour interroger la base de données pour vous. Notez que le nom de la classe doit correspondre au nom de votre table de base de données sinon vous obtiendrez une erreur. Le db.model représente les paramètres de votre table qui incluent le nom de la colonne, son type, sa longueur, sa clé et sa valeur nulle :
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)
Si vous n'avez pas déjà créé manuellement la table de la base de données MySQL, vous pouvez le faire avec ce code Flask directement après le bloc de code utilisateur de la classe :
# Create the database table with app.app_context(): db.create_all()
Par souci de concision de ce didacticiel, nous ignorons la page d'index ou ce que vous voudriez appeler la page d'accueil de votre application et affichons simplement la page d'inscription à l'aide de la fonction de décoration de Python pour l'itinéraire de la page :
@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')
Avant d'ajouter le formulaire d'inscription html, complétons le backend en ajoutant l'itinéraire de validation de la fonctionnalité de double opt-in. Cette route utilise la variable s que nous avons créée précédemment qui génère le jeton secret sensible au temps. Voir la documentation pour plus de détails
L'âge maximum correspond aux secondes précédant l'expiration du lien. Dans ce cas, l'utilisateur dispose de 20 minutes pour confirmer son adresse e-mail.
@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>'
Maintenant, l'instruction principale omniprésente qui indique à Python d'exécuter le script si le fichier est exécuté directement (par opposition à un module importé) :
if __name__ == '__main__': app.run(debug=True)
Avant de terminer ce code back-end, nous avons encore besoin du code HTML front-end pour la saisie de l'utilisateur. Nous allons le faire avec le modèle Jinja intégré de Flask. Créez un fichier nommé templates/signup.html dont le nom doit correspondre à l'itinéraire que vous avez créé précédemment dans app.py. Par défaut, Jinja utilise le répertoire /templates pour les fichiers html. Vous pouvez modifier ce paramètre mais pour ce tutoriel, nous allons utiliser le répertoire /templates de l'application.
<!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>
Votre code devrait fonctionner à partir de ce point lorsque vous exécutez la commande flask avec le débogage activé. Cela vous permettra de voir les erreurs éventuelles dans la ligne de commande ainsi que dans la fenêtre du navigateur :
flask --app app.py --debug run
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Python est plus facile à apprendre et à utiliser, tandis que C est plus puissant mais complexe. 1. La syntaxe Python est concise et adaptée aux débutants. Le typage dynamique et la gestion automatique de la mémoire le rendent facile à utiliser, mais peuvent entraîner des erreurs d'exécution. 2.C fournit des fonctionnalités de contrôle de bas niveau et avancées, adaptées aux applications haute performance, mais a un seuil d'apprentissage élevé et nécessite une gestion manuelle de la mémoire et de la sécurité.

Est-ce suffisant pour apprendre Python pendant deux heures par jour? Cela dépend de vos objectifs et de vos méthodes d'apprentissage. 1) Élaborer un plan d'apprentissage clair, 2) Sélectionnez les ressources et méthodes d'apprentissage appropriées, 3) la pratique et l'examen et la consolidation de la pratique pratique et de l'examen et de la consolidation, et vous pouvez progressivement maîtriser les connaissances de base et les fonctions avancées de Python au cours de cette période.

Python est meilleur que C dans l'efficacité du développement, mais C est plus élevé dans les performances d'exécution. 1. La syntaxe concise de Python et les bibliothèques riches améliorent l'efficacité du développement. Les caractéristiques de type compilation et le contrôle du matériel de CC améliorent les performances d'exécution. Lorsque vous faites un choix, vous devez peser la vitesse de développement et l'efficacité de l'exécution en fonction des besoins du projet.

Python et C ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1) Python convient au développement rapide et au traitement des données en raison de sa syntaxe concise et de son typage dynamique. 2) C convient à des performances élevées et à une programmation système en raison de son typage statique et de sa gestion de la mémoire manuelle.

PythonlistSaReparmentofthestandardLibrary, tandis que les coloccules de colocède, tandis que les colocculations pour la base de la Parlementaire, des coloments de forage polyvalent, tandis que la fonctionnalité de la fonctionnalité nettement adressée.

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

Les applications de Python en informatique scientifique comprennent l'analyse des données, l'apprentissage automatique, la simulation numérique et la visualisation. 1.Numpy fournit des tableaux multidimensionnels et des fonctions mathématiques efficaces. 2. Scipy étend la fonctionnalité Numpy et fournit des outils d'optimisation et d'algèbre linéaire. 3. Pandas est utilisé pour le traitement et l'analyse des données. 4.Matplotlib est utilisé pour générer divers graphiques et résultats visuels.

Les applications clés de Python dans le développement Web incluent l'utilisation des cadres Django et Flask, le développement de l'API, l'analyse et la visualisation des données, l'apprentissage automatique et l'IA et l'optimisation des performances. 1. Framework Django et Flask: Django convient au développement rapide d'applications complexes, et Flask convient aux projets petits ou hautement personnalisés. 2. Développement de l'API: Utilisez Flask ou DjangorestFramework pour construire RestulAPI. 3. Analyse et visualisation des données: utilisez Python pour traiter les données et les afficher via l'interface Web. 4. Apprentissage automatique et AI: Python est utilisé pour créer des applications Web intelligentes. 5. Optimisation des performances: optimisée par la programmation, la mise en cache et le code asynchrones
