2017-03-09 1 views
0

Ich hoffe, jemand kann helfen oder schicken Sie mir in Richtung eines Tutorials?Warenkorb zu E-Mail

Ich habe einen einfachen Einkaufswagen (PHP/MYSQLi), der die Bestellungen verarbeitet und in der Datenbank speichert. Allerdings kann ich nicht herausfinden, wie der beste Weg ist, auch eine E-Mail-Benachrichtigung mit den Bestellbestätigungsdetails gesendet zu bekommen?

Unten ist der Code für checkout.php - das ist, wenn es an die Datenbank übermittelt.

Ich habe auch ordersuccess.php - dies ist nur Seite bestätigt die OrderID.

sollte ich stattdessen ein Skript auf ordersuccess.php implementieren?

Vielen Dank im Voraus Leute, alles eine Lernkurve für mich!

checkout.php

<?php 
// include database configuration file 
include 'dbConfig.php'; 

// initializ shopping cart class 
include 'Cart.php'; 
$cart = new Cart; 

// redirect to home if cart is empty 
if($cart->total_items() <= 0){ 
    header("Location: index.php"); 
} 

?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Checkout</title> 
    <meta charset="utf-8"> 
    <link rel="stylesheet" href="css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
    <style> 
    .container{width: 100%;padding: 50px;} 
    .table{width: 65%;float: left;} 
    .shipAddr{width: 30%;float: left;margin-left: 30px;} 
    .footBtn{width: 95%;float: left;} 
    .orderBtn {float: right;} 
    </style> 
</head> 
<body> 
<div class="container"> 
    <h1>Order Preview</h1> 
    <table class="table"> 
    <thead> 
     <tr> 
      <th>Scent</th> 
      <th>Type</th> 
      <th>Price</th> 
      <th>Qty</th> 
      <th>Subtotal</th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php 
     if($cart->total_items() > 0){ 
      //get cart items from session 
      $cartItems = $cart->contents(); 
      foreach($cartItems as $item){ 
     ?> 
     <tr> 
      <td><?php echo $item["name"]; ?></td> 
      <td><?php echo $item["category"]; ?></td> 
      <td><?php echo '£'.$item["price"].' GBP'; ?></td> 
      <td><?php echo $item["qty"]; ?></td> 
      <td><?php echo '£'.$item["subtotal"].' GBP'; ?></td> 
     </tr> 
     <?php } }else{ ?> 
     <tr><td colspan="4"><p>No items in your cart......</p></td> 
     <?php } ?> 
    </tbody> 
    <tfoot> 
     <tr> 
      <td colspan="4"></td> 
      <?php if($cart->total_items() > 0){ ?> 
      <td class="text-left"><strong>Total <?php echo '£'.$cart->total().' GBP'; ?></strong></td> 
      <?php } ?> 
     </tr> 
    </tfoot> 
    </table> 

    <div class="footBtn"> 
     <a href="index.php" class="btn btn-warning"><i class="glyphicon glyphicon-menu-left"></i> Continue Shopping</a> 
     <a href="cartAction.php?action=placeOrder" class="btn btn-success orderBtn">Place Order <i class="glyphicon glyphicon-menu-right"></i></a> 
    </div> 
</div> 
</body> 
</html> 

ordersucess.php

<?php 
if(!isset($_REQUEST['id'])){ 
    header("Location: index.php"); 
} 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Order Success</title> 
    <meta charset="utf-8"> 
    <style> 
    .container{width: 100%;padding: 50px;} 
    p{color: #34a853;font-size: 18px;} 
    </style> 
</head> 
</head> 
<body> 
<div class="container"> 
    <h1>Order Status</h1> 
    <p>Your order has submitted successfully. Order ID is #<?php echo $_GET['id']; ?></p> 
</div> 
</body> 
</html> 

Antwort

0

Senden von E-Mail kann langsam und Blockierung sein. Sie sollten die sendenden E-Mails in den Hintergrundjob verschieben. Der einfachste Weg besteht darin, eine Befehls-/Nachrichtenwarteschlange zu erstellen und einen Worker/Consumer der Warteschlange zu schreiben. Ich habe mithilfe von swiftmailer mit Symfony2

vor einiger Zeit, dass Sie können, wollen jedoch die Leistungseinbußen der Kommunikation zwischen Swift Mailer und dem E-Mail-Verkehr zu vermeiden, die der Benutzer für die nächste zu warten, die dazu führen könnten Seite zu laden, während die E-Mail sendet.

Verwandte Themen