Souci d'envoi de mail d'activation pour confirmation
Fermé
Oseer
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018
-
7 févr. 2017 à 07:58
oseer - 12 févr. 2017 à 21:02
oseer - 12 févr. 2017 à 21:02
A voir également:
- Warning: mail(): "sendmail_from" not set in php.ini or custom "from:" header missing in
- Yahoo mail - Guide
- Not in a hypervisor partition (hvp=0) (verr_nem_not_available). - Forum VirtualBox
- Reboot and select proper boot device or insert boot media in selected boot device and press a key - Forum Windows
- Please plug in ac ✓ - Forum BIOS
- Mail sos carte - Forum Vos droits sur internet
4 réponses
Oseer
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018
7 févr. 2017 à 16:10
7 févr. 2017 à 16:10
<?php
require('config/database.php');
require('includes/functions.php');
require('includes/constants.php');
//Si le formulaire a été soumis
if(isset($_POST['register'])){
//Si tous les champs ont été remplis
if(not_empty(['name', 'pseudo', 'email', 'password', 'password_confirm'])){
$errors = []; //Tableau contenant l'ensemble des erreurs
extract($_POST);
if(mb_strlen($pseudo) <3) {
$errors[] = "Pseudo trop court! (Minimum 3 caractères)";
}
if(! filter_var($email, FILTER_VALIDATE_EMAIL)){
$errors[]= "Adresse email invalide!";
}
if(mb_strlen($password) <6) {
$errors[] = "Mot de passe trop court! (Minimum 6 caractères)";
} else{
if($password != $password_confirm){
$errors[] = "Les deux mot de passe trop ne concordent pas!";
}
}
if(is_already_in_use('pseudo', $pseudo, 'users')){
$errors[] = "Pseudo déjà utilisé!";
}
if(is_already_in_use('email', $email, 'users')){
$errors[] = "Adresse Email déjà utilisé!";
}
if(count($errors) == 0){
//Envoyer un mail d'activation
$to = $email;
$subject = WEBSITE_NAME. " - ACTIVATION DE COMPTE";
$token = sha1($pseudo.$email.$password);
ob_start();
require('templates/emails/activation.tmpl.php');
$content = ob_get_clean();
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($to, $subject, $content, $headers);
//Informer l'utilisateur pour qu'il vérifie sa boite de reception
echo "Mail d'activation envoye!";
}
}else {
$errors[] = "Veuillez SVP remplir tous les champs!";
}
}
?>
<?php require("views/register.view.php"); ?>
Selon le message d'erreur, il s'agit de cette ligne en évidence : mail($to, $subject, $content, $headers);
require('config/database.php');
require('includes/functions.php');
require('includes/constants.php');
//Si le formulaire a été soumis
if(isset($_POST['register'])){
//Si tous les champs ont été remplis
if(not_empty(['name', 'pseudo', 'email', 'password', 'password_confirm'])){
$errors = []; //Tableau contenant l'ensemble des erreurs
extract($_POST);
if(mb_strlen($pseudo) <3) {
$errors[] = "Pseudo trop court! (Minimum 3 caractères)";
}
if(! filter_var($email, FILTER_VALIDATE_EMAIL)){
$errors[]= "Adresse email invalide!";
}
if(mb_strlen($password) <6) {
$errors[] = "Mot de passe trop court! (Minimum 6 caractères)";
} else{
if($password != $password_confirm){
$errors[] = "Les deux mot de passe trop ne concordent pas!";
}
}
if(is_already_in_use('pseudo', $pseudo, 'users')){
$errors[] = "Pseudo déjà utilisé!";
}
if(is_already_in_use('email', $email, 'users')){
$errors[] = "Adresse Email déjà utilisé!";
}
if(count($errors) == 0){
//Envoyer un mail d'activation
$to = $email;
$subject = WEBSITE_NAME. " - ACTIVATION DE COMPTE";
$token = sha1($pseudo.$email.$password);
ob_start();
require('templates/emails/activation.tmpl.php');
$content = ob_get_clean();
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($to, $subject, $content, $headers);
//Informer l'utilisateur pour qu'il vérifie sa boite de reception
echo "Mail d'activation envoye!";
}
}else {
$errors[] = "Veuillez SVP remplir tous les champs!";
}
}
?>
<?php require("views/register.view.php"); ?>
Selon le message d'erreur, il s'agit de cette ligne en évidence : mail($to, $subject, $content, $headers);
jordane45
Messages postés
38138
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 avril 2024
4 649
7 févr. 2017 à 18:44
7 févr. 2017 à 18:44
Bonjour,
Le message d'erreur est pourtant clair ...
-> Soit tu paramètres le php.ini de ton XAMPP pour y paramétrer la variable sendmail_from ....
-> Soit, tu la définit dans les HEADERS que tu envoies dans ta fonction mail.
Comme indiqué dans le manuel php de la fonction mail :
https://www.php.net/manual/fr/function.mail.php
Tu peux donc mettre l'info dans le headers de la fonction mail, comme par exemple :
Le message d'erreur est pourtant clair ...
"sendmail_from" not set in php.ini or custom "From:" header missing
-> Soit tu paramètres le php.ini de ton XAMPP pour y paramétrer la variable sendmail_from ....
-> Soit, tu la définit dans les HEADERS que tu envoies dans ta fonction mail.
Comme indiqué dans le manuel php de la fonction mail :
https://www.php.net/manual/fr/function.mail.php
additional_headers (optionnel)
Chaîne à insérer à la fin des en-têtes du mail.
Ce paramètre est typiquement utilisé pour ajouter des en-têtes supplémentaires (From, Cc et Bcc). Les en-têtes supplémentaires doivent être séparés par un caractère CRLF (\r\n). Si des données externes sont utilisées pour composer cet en-tête, elles doivent être d'abord nettoyées afin de ne pas injecter des données non désirées dans les en-têtes.
Note:
Lors de l'envoi d'un mail, le mail doit contenir un en-tête From. Il peut être défini par le paramètre additional_headers, ou un par défaut peut être défini dans le php.ini.
Ne pas faire ceci causera un message d'erreur similaire à Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. L'en-tête From, sous Windows, définit également l'en-tête Return-Path.
Note:
Si le message n'est pas reçu, essayez d'utiliser uniquement un caractère LF (\n). Quelques agents de transfert de mail Unix (par exemple » qmail) remplacent le caractère LF par le caractère CRLF automatiquement (ce qui revient à doubler le caractère CR si le caractère CRLF est utilisé). Ceci doit être un dernier recours car cela ne correspond pas à la » RFC 2822.
Tu peux donc mettre l'info dans le headers de la fonction mail, comme par exemple :
$headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'From: Your name <info@address.com>' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
ça marche maintenant !!!!!!!! Je reçois les mails d'activations sans blem
Merciii à toi captain-coder .
Merciii à toi captain-coder .
J'ai encore une autre préoccupation au niveau de SHA1
<?php
session_start();
require "config/database.php";
require "includes/functions.php";
if(!empty($_GET['p']) &&
is_already_in_use('pseudo', $_GET['p'], 'users')
&& !empty($_GET['token'])
){
$pseudo = $_GET['p'];
$token = $_GET['token'];
$q = $db->prepare('SELECT email, password FROM users WHERE pseudo = ?');
$q->execute([$pseudo]);
$data = $q->fetch(PDO::FETCH_OBJ);
$token_verif = sha1($pseudo.$data->email.$data->password);
if($token == $token_verif){
$q = $db->prepare("UPDATE users SET active='1' WHERE pseudo = ?");
$q->execute([$pseudo]);
redirect('login.php');
} else {
//die($token);
//die($token_verif);
set_flash('Parametres Invalides', 'danger');
redirect('index.php');
}
Mes 2 token ($token == $token_verif) ne concordent pas donc j'arrive pas à être rediriger sur la page login.php
<?php
session_start();
require "config/database.php";
require "includes/functions.php";
if(!empty($_GET['p']) &&
is_already_in_use('pseudo', $_GET['p'], 'users')
&& !empty($_GET['token'])
){
$pseudo = $_GET['p'];
$token = $_GET['token'];
$q = $db->prepare('SELECT email, password FROM users WHERE pseudo = ?');
$q->execute([$pseudo]);
$data = $q->fetch(PDO::FETCH_OBJ);
$token_verif = sha1($pseudo.$data->email.$data->password);
if($token == $token_verif){
$q = $db->prepare("UPDATE users SET active='1' WHERE pseudo = ?");
$q->execute([$pseudo]);
redirect('login.php');
} else {
//die($token);
//die($token_verif);
set_flash('Parametres Invalides', 'danger');
redirect('index.php');
}
Mes 2 token ($token == $token_verif) ne concordent pas donc j'arrive pas à être rediriger sur la page login.php