Как отправить переменные сеанса корзины покупок на электронную почту - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть веб-сайт электронной коммерции, на котором я хочу, чтобы товары из корзины покупок отправлялись по почте, чтобы можно было завершить заказ.У меня есть сеанс корзины покупок на странице оформления заказа, и как только нажимается кнопка размещения заказа, он переходит на другую страницу, где выполняется процесс php.У меня нет ошибок, но он отправляет на почту только последний товар в корзине, а не все товары в корзине.Ниже приведен код, который я использовал для переноса товаров на страницу оформления заказа

<?php
session_start();
?>
<?php
$product_ids = array();
if(isset($_POST['checkout'])){  
if(isset($_SESSION['shopping_cart'])){
$count = count($_SESSION['shopping_cart']); 
$product_ids = array_column($_SESSION['shopping_cart'], 'id');
if (!in_array(filter_input(INPUT_GET, 'id'), $product_ids)){
$_SESSION['shopping_cart'][$count] = array
(       
'id' => filter_input(INPUT_GET, 'id'),
'name' => filter_input(INPUT_POST, 'name'),
'price' => filter_input(INPUT_POST, 'price'),
'qty' => filter_input(INPUT_POST, 'qty'),
'img' => filter_input(INPUT_POST, 'img'),   
);
echo "Product Added to cart";
}else{
echo "Product Already added to cart";       
}   
}else{
$_SESSION['shopping_cart'][0] = array
(
'id' => filter_input(INPUT_GET, 'id'),
'name' => filter_input(INPUT_POST, 'name'),
'price' => filter_input(INPUT_POST, 'price'),
'qty' => filter_input(INPUT_POST, 'qty'),
'img' => filter_input(INPUT_POST, 'img'),
);
}
}
?>

Ниже приведен код для получения каждого товара из сеанса

  <?php
$total =0;  
foreach($_SESSION['shopping_cart'] as $key => $r):
?>

<?php
 $prodname = $r['name'];
 $prodprice = $r['price'];
 $prodqty = $r['qty'];

?>

<?php
$total = ($r['qty'] * $r['price']);
?>

<?php
endforeach;
?>


<?php
$totalall=0;
foreach($_SESSION['shopping_cart'] as $key => $r):
$totalall = $totalall +  ($r['qty'] * $r['price']);
?>

<?php
endforeach;
?>

Вот код, которыйотправить товар на почту

<?php
include('Mail.php');

$username = 'username';
$password = 'password'; 

$from = "";
$to = "";
$subject = "$subject";
$body= "
$prodname;
$prodprice;
$prodqty;
$prodtotal;
";

$headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject);
$smtp = Mail::factory('smtp', array ('host' =>'localhost', 'auth' => true, 
'username' => $username, 'password' => $password, 'port' => '25'));
$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)){
echo("<p>" . $mail->getMessage() . "</p>");
}
else {
echo("Order Completed Successfully");
}
?>

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

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