Я создаю приложение электронной коммерции с помощью видео-обучения.
У меня есть функция process_transaction
, которая анализирует PayPal
tx-параметры URL-адреса после успешной покупки и заполняет таблицу 'заказов' в phpMyAdmin
4.8.0.
Ранееесли вы обновили мою страницу thank_you.php
, то ордера продолжают заполнять мою таблицу «ордеров» (так как ранее не было уничтожения сеанса, встроенного в вышеупомянутую функцию).
Проблема в том, что код, предложенный для предотвращения такого нашим преподавателем, для этой функции не работает.При запуске таблица 'orders' больше не заполняется из транзакций, а также session_destroy не работает.
Мне было интересно, что не так с функцией.
thank_you.php
<?php require_once("../resources/config.php"); ?>
<?php require_once("../resources/cart.php"); ?>
<?php include('../resources/templates/front/header.php') ?>
<?php
process_transaction();
?>
<!-- Page Content -->
<div class="container">
<h1 class="text-center">THANK YOU</h1>
<h3>Nippon will get your products shipped today</h3>
</div>
<!-- /.container -->
<?php include('../resources/templates/front/footer.php') ?>
cart.php (не работает должным образом - не сохраняет приказы в БД или не уничтожает сеанс)
function process_transaction(){
if(isset($_GET['tx'])){
$amount = $_GET['amt']; // get amount
$currency = $_GET['cc'];
$transaction = $_GET['tx']; //
$status = $_GET['st']; // get status ie completed
$total = 0;
$item_quantity = 0;
foreach ($_SESSION as $name => $value) {
if($value > 0 ) {
if (substr($name, 0, 8) == "product_") {
$length = strlen($name);
$id = substr($name, 8, $length);
$send_order = query("INSERT INTO orders (order_amount,order_transaction,order_status,order_currency) VALUES('{$amount}','{$transaction}','{$status}','{$currency}')");
$last_id = last_id();
confirm($send_order);
$query = query("SELECT * FROM products WHERE product_id = " . escape_string($id) . " ");
confirm($query);
while($row = fetch_array($query)) {
$product_price = $row['product_price'];
$product_title = $row['product_title'];
$sub = $row['product_price'] * $value;
$item_quantity += $value;
$insert_report = query("INSERT INTO reports (product_id, order_id, product_title, product_price,product_quantity) VALUES ('{$id}','{$last_id}','{$product_title}','{$product_price}','{$value}')");
confirm($insert_report);
}
$total += $sub;
echo $item_quantity;
}
}
}
session_destroy();
} else {
redirect("index.php");
}
}
functions.php
<?php
function query($sql) {
global $connection;
return mysqli_query($connection, $sql);
}
function fetch_array($result) {
return mysqli_fetch_array($result);
}
function escape_string($string){
global $connection;
return mysqli_real_escape_string($connection,$string);
}
?>