PHP Mail: содержимое страницы на почту - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть форма, которую клиенты заполняют личными данными, а также делает выбор в отношении услуги.Поэтому с помощью функции $ _GET я извлекаю информацию из этой формы, выполняю некоторые основные математические операции и показываю всю информацию, чтобы клиент мог просмотреть заказ, а затем нажать «ОТПРАВИТЬ», чтобы подтвердить работу.

Мне нужноотправьте мне этот предварительный заказ по почте, но я не знаю, как все это отправить.Я знаю, как извлечь данные из формы и затем отправить ее, но не знаю, как отправить эти переменные.

FORM

// I am omitting elements to make this shorter    
<select name="Amount">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
     </select>

ЗАКАЗ ПРЕДВАРИТЕЛЬНОГО ОБСЛУЖИВАНИЯ

  $price = 5;  

    // I am omitting elements to make this shorter 
    // here I do some math     
    $Amount = $_GET['Amount']; 
        // check value and select appropriate item 
        if ($Amount== "1") { 
            $extra = "1"; 
            } 
        elseif ($Amount == "2") { 
            $extra = "2"; 
            } 
        elseif ($Amount == "3") { 
            $extra = "3";


// here is the order preview and this is what I need to email to myself
// the customer should look this preview and then HIT a confirm buttom to get this sent

<?php echo $Name;?><br>
<?php echo $Address;?><br>
<?php echo $E-mail;?><br>
<?php echo $Phone;?><br>
Your order: <?php echo $extra . " " . "products, for a total of" . " " . ($price * $extra); ?>

-------------------- ЗАКЛЮЧИТЕЛЬНАЯ ВЕРСИЯ --------------- СПАСИБО всем вам, ребята!

Я буду использовать только 2 поля для сокращения кода

// FORM - Пользователь вводит свои данные

<form method="get" id="order" action="order-info.php">
<h1>Personal Info</h1>
<p>name: <input name="name" type="text" /></p>
<p>email: <input name="surname" type="text" /></p>
<INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Continue">
</form>

// Предварительный просмотр ORDER - Здесь пользователь можетПредварительный просмотр всех его данных и выбора продукта, прежде чем подтвердить заказ

<?php session_start(); ?>
<?php
// get info personal
$Name = $_GET['name'];
$Email = $_GET['email'];
?>
// Now I echo the info
<h2><?php echo $Name . " " . $Email ; ?><br></h2>
<?php
  // here's where the magic is done thanks to Sheldon Ferns!
  $_SESSION['customerInfo']['name'] = $Name;
  $_SESSION['customerInfo']['email'] = $Email;

?>
// having stored all the info in a session I proceed to send it to the email function. That weird name is because I read you should avoid naming your email process file with predictable names like mail.php, this increases protection against spammers. 
<form  method ="POST" action = "xljkadf.php">
<INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Confirm Order">

// MAIL PROCESS -

<?php  session_start();
 # Anti-header-injection - Use before mail() 
# By Victor Benincasa <vbenincasa(AT)gmail.com> 
foreach($_REQUEST as $fields => $value) if(eregi("TO:", $value) || eregi("CC:", $value) || eregi("CCO:", $value) || eregi("Content-Type", $value)) exit("ERROR: Code injection attempt denied! Please don't use the following sequences in your message: 'TO:', 'CC:', 'CCO:' or 'Content-Type'."); 

  $headers = 'From: Your Site <noreply@yoursite.com>' . "\n".
// in the next line what I do is to send a BCC to me as I want the customer to get a copy of the order without knowing my address  
$headers .= 'Bcc: Your site <yourmail@xxxx.com>' . "\r\n";



  $mailBody = "Order details: \n". 
                "Name: ".$_SESSION['customerInfo']['name'] . "\n".
                "Email: " .$_SESSION['customerInfo']['email'] . "\n";




// Next the mail function. The first arguments is the customer e-mail so he gets a copy of his order.
   mail($_SESSION['customerInfo']['Email'], "Order Info ", $mailBody, $headers);

   ?>
 // A redirect to a thank you page once the e-mail is sent.
<script language="JavaScript" type="text/JavaScript">
<!--
window.location.href = "http://www.yoursite.com/thank-you.html";
//-->
</script>

Ответы [ 4 ]

0 голосов
/ 14 ноября 2011

Вы хотите отправить электронное письмо, когда пользователь нажимает кнопку ОТПРАВИТЬ со страницы предварительного просмотра.Но вы не знаете, как получить данные в PHP, которые клиент просматривает;потому что Отправить не отправляет форму.Если в этом и заключается ваша проблема, то вот что вы можете сделать

Когда клиент отправляет ваш файл, в php-файле previewOrder вы можете сохранить информацию в переменной сеанса .. например,

<?php
  session_start(); ?>
  //The php code you have already written.

  //Saving data in session
  <?php
  $_SESSION['customerInfo']['Name'] = $Name;
  $_SESSION['customerInfo']['Address'] = $Address;
  $_SESSION['customerInfo']['Email'] = $Email;
  $_SESSION['customerInfo']['Phone'] = $Phone;
  $_SESSION['customerInfo']['Extra'] = $Extra;
?>

Обратите внимание, что session_start () должен находиться в начале файла.

Теперь со страницы предварительного просмотра, когда пользователь нажимает кнопку SEND, вы должны перенаправить страницу в файл, такой как sendOrder.php, который долженкак-то так

<?php
  session_start();
  $mailBody = "Order Info: \n". 
              "Name: ".$_SESSION['customerInfo']['Name'] . "\n".
              "Address: " .$_SESSION['customerInfo']['Address'] . "\n".
              "Email: " .$_SESSION['customerInfo']['Email'] . "\n".
              "Phone: " .$_SESSION['customerInfo']['Email'] . "\n".
              "Price: " .$_SESSION['customerInfo']['Price'] . "\n".
              "Extra: " .$_SESSION['customerInfo']['Extra'] . "\n";

   mail('your@mail.com', 'Order Information', $mailBody);

?>

То, что вы здесь делаете, это чтение значений, которые вы сохранили в сеансе в предварительном просмотре.СЕССИИ - это один из способов сделать переменные доступными на страницах.

Надеюсь, это поможет,

PS. Я не проверял код на наличие синтаксических ошибок. Пожалуйста, исправьте их, если таковые имеются:)

0 голосов
/ 14 ноября 2011

Создайте строку, подобную этой (я пропускаю разрывы строк и дополнительное форматирование):

$mystring = 'Name: '.$Name.', Address: '.$Address.', E-mail: '.$E-mail.', $Phone: '.$Phone;

Затем отправьте его через mail():

mail('myaddress@php.com', 'My Subject', $mystring);

0 голосов
/ 14 ноября 2011

$mailBody будет захватывать все, что вы отражали между ob_start() и ob_get_clean(). Функция mail() отправит вам электронное письмо.

<?php ob_start(); ?>
<?php echo $Name;?><br>
<?php echo $Address;?><br>
<?php echo $E-mail;?><br>
<?php echo $Phone;?><br>
Your order: <?php echo $extra . " " . "products, for a total of" . " " . ($price * $extra); ?>
<?php $mailBody = ob_get_clean(); 

mail('your@mail.com', 'Mail Subject', $mailBody);

?>
0 голосов
/ 14 ноября 2011

Если я правильно понимаю ваш вопрос, вам нужно знать, как отправить контент по электронной почте с помощью php.Смотрите функцию mail в php.Документация здесь .Аргумент message может содержать ваш контент.Также ознакомьтесь с примерами в документации, вы получите представление о реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...