Nasıl "Kimden" kurarım

6 Cevap php

Ben yarattık PHP iletişim formu ile ilgili bir sorun var. Ben forma bilgilerini girin ve bilgiler, bir e-posta adresine gönderilir gönderin tıklayın ancak e bağlı hiçbir gönderenler adres olduğunda.

Kullanıcı tıkladığında sumbit zaman gönderici olarak onların e-posta adresi ile e-posta göndermek, böylece nasıl bir seneders adresi oluştururum.

Benim form için kod aşağıda gösterilmiştir:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Email Form </title>
</head>
<body>

<form method="post" action="sendeail.php">

<?php
$ipi = getenv("REMOTE_ADDR");
$httprefi = getenv ("HTTP_REFERER");
$httpagenti = getenv ("HTTP_USER_AGENT");
?>

<input type="hidden" name="ip" value="<?php echo $ipi ?>" />
<input type="hidden" name="httpref" value="<?php echo $httprefi ?>" />
<input type="hidden" name="httpagent" value="<?php echo $httpagenti ?>" />


---------------(Sending Scripit below)-----------------------------

Name: <br />
<input type="text" name="visitor" size="35" />
<br />
Address:<br />
<input type="text" name="visitoradd" size="35" />
<br />

City<br />
<input type="text" name="visitorcity" size="35" />
<br />

Postcode<br />
<input type="text" name="visitorpost" size="35" />
<br />

Email:<br />
<input type="text" name="visitormail" size="35" />
<br />

Telephone Number:<br />
<input type="text" name="visitortel" size="35" />
<br />
Bookkeeping / Payroll :<br />
<select name="bp" size="1">
<option value=" Bookkeeping">Bookkeeping </option>
<option value=" Payroll ">Payroll</option>
</select>
<br />
<br />
Number of transactions : <br />
<input type="text" name="transcations" size="35" />
<br />
Number of employees <br />
<input type="text" name="employees" size="35" />
<br />
<br />
Payroll weekly / monthly:<br />
<select name="pmw" size="1">
<option value=" Weekly">Weekly</option>
<option value=" Monthly">Monthly</option>
</select>
<br />
<br />
<input type="submit" value="Submit" />
<br />
</form>
</body>
</html>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sendemail Script</title>
</head>
<body>
<?php

$visitor = $_POST['visitor'];
$visitoradd = $_POST['visitoradd'];
$visitorcity= $_POST['visitorcity'];
$visitorpost= $_POST['visitorpost'];
$visitormail = $_POST['visitormail'];
$visitortel = $_POST['visitortel'];
$bp = $_POST['bp'];
$transcations = $_POST['transcations'];
$employees = $_POST['employees'];
$pmw = $_POST['pmw'];


if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,".")))
{
echo "<h2>Use Back - Enter valid e-mail</h2>\n";
$badinput = "<h2>Information was NOT submitted</h2>\n";
echo $badinput;
die ("Go back! ! ");
}

if(empty($visitor) || empty($visitormail)  || empty($visitorcity) || empty($visitorpost) || empty($visitoradd)   || empty($visitortel) || empty($bp) || empty($transcations)  || empty($employees) || empty($pmw) || empty($pmw)) 
{
echo "<h2>Use Back - fill in all fields</h2>\n";
die ("Use back! ! ");
}

$message = "
Name: $visitor\n
Address: $visitoradd\n
City: $visitorcity\n
Post Code: $visitorpost\n
Email: $visitormail\n
Phone Number: $visitortel\n
Bookkeeping/Payroll: $bp\n
Number of Transactions: $transcations\n
Number Of Employees: $employees\n
Payroll Weekly/Monthly: $pmw\n"
;

$subject = "Payment Details";

mail("sd07sb@leeds.ac.uk",$subject,$message,$visitormail);

?>

<p align="center">
<br />
Thank You : <?php echo $visitor ?> ( <?php echo $visitormail ?> )
<br />

<br />
<a href="contact3.php">Click here to Finish</a>
</p> 

</body>
</html>

PHP oldukça yeni ve ben bu ile alabilirsiniz tüm yardıma seviniriz.

Şimdiden teşekkürler

6 Cevap

Böyle bir şey yapmanız gerekir:

$sanitizedEmail = filter_var($visitormail, FILTER_SANITIZE_EMAIL);
mail('recipient@email.com', $subject, $message, 'From: ' . $sanitizedEmail);

Çizgi $sanitizedEmail başlayan bir kullanıcı formdan spam mesaj göndermek olamaz sağlar.

Sen () (şu an için sadece $ visitoremail ekliyoruz. Başlıklar "\ r \ n" ile ayrılmış gereken dördüncü argüman olarak diyoruz posta birden fazla ekstra başlıkları ekleyebilirsiniz. İşte PHP.net / kılavuzundan bir alıntı bulunuyor Ek başlıklar yapmak için nasıl:

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

mail("sd07sb@leeds.ac.uk",$subject,$message, 'From: ' . $visitormail);

Eğer mail() çağırdığınızda gönderenin adresini ayarlamak için başlığında: Eğer "Kimden" ekleyebilirsiniz.

$headers = "From: ".$visitor."<".$visitormail.">\r\n";    
mail("sd07sb@leeds.ac.uk", $subject, $message, $headers);

Istediğiniz (ya da eklemek istediğiniz başlıkları başka bir numara) ise, başlık: Ayrıca "Reply-To" append olabilir

$headers .= "Reply-To: ".$visitor."<".$visitormail.">\r\n";

Diğer seçenek, php.ini dosyasındaki adresi varsayılan ayarlamak veya bu gibi komut ayarlamak için

ini_set(sendmail_from, "your_from@address_here.com"); 

PHP Manual page for mail() daha fazla bilgi vardır.

Diğer yanıtlar Kimden başlığı eklemek için nasıl açıklar. Eğer dikkatlice komut girişini kontrol yoksa önemli bir olası güvenlik açığı bulunmaktadır. Sizin form size keder her türlü neden olabilir spam makinesine dönüştürülebilir.

Read up on email header injection: http://www.damonkohler.com/2008/12/email-injection.html

E-posta adresi bir e-posta adresi olduğunu doğrulayın ve tüm girdileri.

PHPMailer göz at

Sen PHPMailer kullanarak hemen hemen her şeyi yapabilirsiniz. Siteyi ziyaret etmek için buraya tıklayın ve bir kopyasını elde etmek için

http://phpmailer.worxware.com/index.php?pg=phpmailer

PHPMailer sizin için tüm mantığı yok.

Örn. $ Mailler-> addAddress ('sd07sb@leeds.ac.uk');