Bonjour à tous,
J'ai un souci au niveau de mon code et je ne comprends pas l'origine de ce problème. En effet, j'ai créé une fonction PHP contenant un tableau avec une liste des mots interdits. Il s'agit d'un système de question/réponse. Si un client saisit un mot interdit dans sa réponse, je vérifie que ce mot ou expression est dans mon tableau. Si le mot existe et est interdit j'envoie un émail à l'administrateur pour le signaler, sinon j'enregistre la réponse et je l'affiche. Même dans le cas ou le mot est interdit j'enregistre quand même la réponse et c'est juste au niveau de l'affichage que je remplace le mot par des étoiles (***). L'envoie de mail c'est pour informer l'administrateur qu'un mot interdit a été saisi et lui permettre de le modérer ou de le supprimer.
Voici mon script :
Je pense que mon problème c'est au niveau de la vérification si le mot interdit existe dans mon tableau. Car je n'arrive pas à envoyer mon mail. Mais je n'ai pas de problème au niveau du traitement de mon mail car si je fais un test d’envoi de mail avec un mot correcte ça fonctionne.
Merci pour votre aide !
Modifié par dinolam (20 Sep 2016 - 10:49)
J'ai un souci au niveau de mon code et je ne comprends pas l'origine de ce problème. En effet, j'ai créé une fonction PHP contenant un tableau avec une liste des mots interdits. Il s'agit d'un système de question/réponse. Si un client saisit un mot interdit dans sa réponse, je vérifie que ce mot ou expression est dans mon tableau. Si le mot existe et est interdit j'envoie un émail à l'administrateur pour le signaler, sinon j'enregistre la réponse et je l'affiche. Même dans le cas ou le mot est interdit j'enregistre quand même la réponse et c'est juste au niveau de l'affichage que je remplace le mot par des étoiles (***). L'envoie de mail c'est pour informer l'administrateur qu'un mot interdit a été saisi et lui permettre de le modérer ou de le supprimer.
Voici mon script :
// fonction mots interdits:
function motInterdit ($mot) {
$mots = array(
'mot 1',
'mot 2',
'mot 3'
);
$mot_remplacement = '******';
$data = str_ireplace($mots, $mot_remplacement, $mot);
return $data;
}
// requête d'insertion ici
/*.........*/
// select
$q = array('lastId'=>$lastId);
$sql = 'SELECT * FROM reponse WHERE reponse_id = :lastId';
$req = $db->prepare($sql);
$req->execute($q) or die(print_r($db->errorInfo()));
foreach ($req->fetchAll() as $data):
$tab = nl2br(htmlspecialchars($data));
$resTab = motInterdit ($tab);
if (is_array(resTab) && in_array($tab, $resTab)) {
// envoie de mail
mail($to, $subject, $message, $headers);
}
endforeach;
Je pense que mon problème c'est au niveau de la vérification si le mot interdit existe dans mon tableau. Car je n'arrive pas à envoyer mon mail. Mais je n'ai pas de problème au niveau du traitement de mon mail car si je fais un test d’envoi de mail avec un mot correcte ça fonctionne.
Merci pour votre aide !
Modifié par dinolam (20 Sep 2016 - 10:49)