2009-12-08 8 views
0

Je ne suis pas un pro de PHP, je commence tout juste et je me demandais si vous pouviez m'aider.PHP Formulaire de contact d'édition

En essayant d'obtenir ce formulaire de contact pour m'envoyer un courriel en indiquant le nom de personnes et le message comme ceci.

Nom: Fred Blogs Message: Message, Message.

Mais quand j'essaye tout ce que je reçois est le message, je ne peux pas sembler insérer la variable de nom n'importe où.

Ce code

<?php 
$name = $_REQUEST['name'] ; 
$email = $_REQUEST['email'] ; 
$message = $_REQUEST['message'] ; 
$subject = $_REQUEST['subject'] ; 

mail("[email protected]", "Name: $name", "$subject", $message, "From: $email"); 
header("Location:contact.php"); 
?> 
+1

Peut-être que ce n'était pas la meilleure de toutes les idées d'afficher votre adresse e-mail en direct ici. Mais encore une fois, le filtre anti-spam Googles fait du bon travail. – Tomalak

+0

Edité pour expurger l'e-mail (bien évidemment, il apparaîtra dans l'histoire, et dans les réponses ...) –

+0

Et je parie que @Tomalak a dit Google son un @gmail ou @googlemail ... génie –

Répondre

1

Vous passez trop de paramètres à la fonction mail(). Essayez quelque chose comme ceci:

<?php 
ob_start(); 
$name = $_POST['name'] ; 
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); 
$message = $_POST['message'] ; 
$subject = strtr($_POST['subject'],array(':' => ' ', "\r" => ' ', "\n" => ' ')); 

$message = "Name: {$name}\r\nmessage: {$message}"; 
mail("[email protected]", $subject, $message, "From: {$email}"); 
header("Location: contact.php", true, 302); 
ob_end_clean(); 
die; 
?> 
+0

Génial, pas je peut envoyer des emails de [email protected];). Vous devriez évaluer tout ce qui vient de l'extérieur (comme GET/POST/REQUEST/COOKIE) .. – halfdan

+0

Bien que vous ayez raison, cela dépasse le cadre de la question. Là encore, je ne suis pas contre tout ce qui découle d'une discussion sur BCP Security. Enfin, j'ai mis à jour ma version pour refléter ceci =) – Dereleased

+0

Merci c'est exactement comme je le voulais! Mais pourriez-vous m'aider un peu plus? Je suis d'accord avec les commentaires ci-dessus en disant que je devrais valider l'adresse e-mail, mais je comment puis-je faire? –

1

Jetez un oeil au manuel pour mail():

mail("[email protected]", "Name: $name", $message, "From: $email"); 

Mais de toute façon, je suggère fortement que vous ne comptez pas sur le courrier de PHP() - fonction de sa valeur de retour n'indique pas si un mail a vraiment été envoyé. Utilisez phpmailer pour l'envoi à la place.

Meilleurs voeux,
Fabian

2

Vous avez les arguments mélangés un peu:

mail("[email protected]", $subject, "Name: $name\nMessage: $message", "From: $email"); 

De plus, vous ne devriez pas faire "From: $email" sans valider l'adresse e-mail - cela laissera votre script ouvert à l'envoi de spam.

+1

+1, les informations d'en-tête sont correctes, car un utilisateur peu scrupuleux peut envoyer des en-têtes supplémentaires tels que CC, des champs To supplémentaires, etc. – Dereleased

Questions connexes