Как установить адрес «От» в контактной форме PHP?

У меня возникла проблема с созданной мной контактной формой PHP. Когда я вводим информацию в форму и нажимаю кнопку отправки, информация отправляется на адрес электронной почты, но адрес отправителя, прикрепленный к письму, отсутствует.

Как создать адрес seneders, чтобы пользователь, щелкнув sumbit, отправит электронное письмо с адресом электронной почты отправителя.

Код для моей формы показан ниже:

<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 и буду признателен за всю помощь, которую я смогу с этим справиться.

заранее спасибо

Вы должны сделать что-то вроде этого:

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

Строка, начинающаяся с $sanitizedEmail гарантирует, что пользователь не может отправлять спам-сообщения из вашей формы.

Вы можете добавить несколько дополнительных заголовков в вызов mail () в качестве четвертого аргумента (в настоящее время вы добавляете только заголовки $ visitoremail., Поэтому их нужно разграничить с помощью «\ r \ n». Вот выдержка из PHP.net/manual о том, как делать дополнительные заголовки:

 // 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);

Вы можете добавить заголовок «From:» при вызове mail() , чтобы установить адрес отправителя.

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

Вы также можете добавить заголовок «Reply-To:», если хотите (или любое другое количество заголовков, которое вы хотите включить),

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

Другой вариант – установить значение по умолчанию из адреса в файле php.ini или установить его в скрипте следующим образом:

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

На странице руководства PHP для mail () есть дополнительная информация.

Другие ответы объясняют, как добавить заголовок From. Существует важная возможная уязвимость системы безопасности, если вы не тщательно проверяете ввод сценария. Ваша форма может быть превращена в спам-машину, которая может вызвать у вас все виды горя.

Прочтите на вставку заголовка электронной почты: http://www.damonkohler.com/2008/12/email-injection.html

Убедитесь, что адрес электронной почты является адресом электронной почты и дезинфицирует все входные данные.

Посмотрите PHPMailer

Вы можете делать почти все, используя PHPMailer. Нажмите здесь, чтобы посетить сайт и получить копию

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

PHPMailer делает для вас всю логику.

Например. $ Mailer-> addAddress ('sd07sb@leeds.ac.uk ');