Как использовать кеш без потери переменных сеанса? - PullRequest
0 голосов
/ 04 августа 2020

Я использую платежный шлюз для онлайн-транзакции, для которой я отправляю форму через этот скрипт, где я рассчитываю стоимость заказа и отправляю форму на URL-адрес платежного шлюза:

 <?php
    
    session_start(); 
    header("Pragma: no-cache");
    header("Cache-Control: no-cache");
    header("Expires: 0");
    
    
    
    require_once("./lib/config_paytm.php");
    require_once("./lib/encdec_paytm.php");
    
    
    
    
    if(!isset($_SESSION['groupid']) || !isset($_SESSION['userid'])){
    header('location: cart.php');
    exit();
    }
    
    $db= mysqli_connect('localhost','root','','project');
    
    $groupid = $_SESSION['groupid'];
    $userid = $_SESSION['userid'];
$charges = 0;
$disc = 0;
$taxes = 0;
$delfee =0;
    
   
    
    $query_9="SELECT content,delievery_charges,taxes FROM orders WHERE userid='$userid' and groupid='$groupid' ";
    
         $result_9=mysqli_query($db,$query_9);
    
    if(mysqli_num_rows($result_9)==0){
    header('cart.php');
    }
    
    while($row=mysqli_fetch_assoc($result_9)){
    
    if(!empty($row["delievery_charges"])){
    $charges = $charges + $row["delievery_charges"];
    }
    if(!empty($row["taxes"])){
    $taxes = $taxes + $row["taxes"];
    }
    
    // I calculate charges,discount here
   
    }
    
       $net = round($charges - $disc + $taxes +$delfee);
    $paytmcharge=$net + (0.0099 * $net);
    
    
    
    $checkSum = "";
    $paramList = array();
    
    $ORDER_ID = "ORDS" . rand(10000,99999999).$_SESSION['userid'];
    $CUST_ID = $_SESSION["userid"];;
    $INDUSTRY_TYPE_ID = "Retail";
    $CHANNEL_ID = "WEB";
    
    
    $TXN_AMOUNT = round($paytmcharge);
    
    // Create an array having all required parameters for creating checksum.
    $paramList["MID"] = PAYTM_MERCHANT_MID;
    $paramList["ORDER_ID"] = $ORDER_ID;
    $paramList["CUST_ID"] = $CUST_ID;
    $paramList["INDUSTRY_TYPE_ID"] = $INDUSTRY_TYPE_ID;
    $paramList["CHANNEL_ID"] = $CHANNEL_ID;
    $paramList["TXN_AMOUNT"] = $TXN_AMOUNT;
    $paramList["WEBSITE"] = PAYTM_MERCHANT_WEBSITE;
    
    
    $paramList["CALLBACK_URL"] = "https://www.mydomain.in/pgResponse.php";
    
    
    //Here checksum string will return by getChecksumFromArray() function.
    $checkSum = getChecksumFromArray($paramList,PAYTM_MERCHANT_KEY);
    
    
    ?>
    <html>
    <head>
    <title>Merchant Check Out Page</title>
    </head>
    <body>
        <center><h1>Please do not refresh this page...</h1></center>
            <form method="post" action="<?php echo PAYTM_TXN_URL ?>" name="f1">
            <table border="1">
                <tbody>
                <?php
                foreach($paramList as $name => $value) {
                    echo '<input type="hidden" name="' . $name .'" value="' . $value . '">';
                }
                ?>
                <input type="hidden" name="CHECKSUMHASH" value="<?php echo $checkSum ?>">
                </tbody>
            </table>
            <script type="text/javascript">
                document.f1.submit();
            </script>
        </form>
    </body>
    </html>

В моем ответном скрипте получено из платежного шлюза (упомянутого ниже) меня перенаправляют в корзину. php потому что, вероятно, мои $ _SESSION ['groupid'] и $ _SESSION ['userid'] не установлены

<?php
session_start(); 
header("Pragma: no-cache");
header("Cache-Control: no-cache");
header("Expires: 0");



if(!isset($_SESSION['userid']) || !isset($_SESSION['groupid'])){
header('location: cart.php');//I am always getting redirected here
exit();
}

//check if transaction is successfull or not
?>
<html>
        <head>
        <title>Merchant Check Out Page</title>
        </head>
        <body>
//show if transaction was successfull or not 
</body>
</html>

Я пробовал session_cache_limiter('private') ; session_cache_expire(0);, но он по-прежнему не работает, и все мои переменные сеанса потеряны. Как я могу использовать nocache без потери переменных сеанса

...