会话变量维护一些但不是简单购物车的所有用户

时间:2017-03-10 21:14:25

标签: php session ssl

我有一个我写的php网站,它将从表单中检索到的一些信息存储到后端作为会话变量。以下是每个“交易”的简单步骤:

  1. 用户填写表格
  2. 数据存储在会话变量(某些会话数组)中
  3. 用户点击“立即付款”并前往银行付款
  4. 如果银行退回“已批准”的数据会写入表格。
  5. 问题在于:每次在我的开发网站上都可以使用它,这是现场网站的副本。它只对现场用户有用。

    以下是我的一些想法:

    1. 已添加SSL证书
    2. phpInfo中的会话设置可能有误/ maxlifetime是1440 ??
    3. 对于某些浏览器从银行回来的问题可能是个问题...他们的https到我们新的https
    4. 会话配置:

      session.auto_start  Off Off
      session.cache_expire    180 180
      session.cache_limiter   nocache nocache
      session.cookie_domain   no value    no value
      session.cookie_httponly Off Off
      session.cookie_lifetime 0   0
      session.cookie_path /   /
      session.cookie_secure   Off Off
      session.entropy_file    no value    no value
      session.entropy_length  0   0
      session.gc_divisor  100 100
      session.gc_maxlifetime  1440    1440
      session.gc_probability  1   1
      session.hash_bits_per_character 4   4
      session.hash_function   0   0
      session.name    PHPSESSID   PHPSESSID
      session.referer_check   no value    no value
      session.save_handler    files   files
      session.save_path   /tmp    /tmp
      session.serialize_handler   php php
      session.upload_progress.cleanup On  On
      session.upload_progress.enabled On  On
      session.upload_progress.freq    1%  1%
      session.upload_progress.min_freq    1   1
      session.upload_progress.name    PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
      session.upload_progress.prefix  upload_progress_    upload_progress_
      session.use_cookies On  On
      session.use_only_cookies    On  On
      session.use_strict_mode Off Off
      session.use_trans_sid   0   0
      

      我不知所措,因为我无法复制这个问题。我知道交易正在进行,因为它们出现在“银行方面”......只是没有数据被写入我们的后端表,表明当用户被发送回我的文件并写入数据时会中断(请参阅下面的缩写版本)

      <?php
      session_start();
      include('lib/phpmailer/PHPMailerAutoload.php');
      require_once('functions.php');
      require_once('db/configdb.php');
      $amount = $_POST['x_amount'];
      $authCode = $_POST['x_auth_code'];
      $bank_email = $_POST['x_email'];
      $bank_name = $_POST['CardHoldersName'];
      $responseCode = $_POST['Bank_Resp_Code'];
      $responseMessage = $_POST['Bank_Message'];
      if(isset($_SESSION['cart'][0]['description'])){
          $description = $_SESSION['cart'][0]['description'];
      } else {
          $description = $_SESSION['description'];
      }
      $item = $_SESSION['cart'][0]['item'];
      $firstName = $_SESSION['firstName'];
      $lastName = $_SESSION['lastName'];
      $address1 = $_SESSION['address1'];
      $address2 = $_SESSION['address2'];
      $city = $_SESSION['city'];
      $zip = $_SESSION['zip'];
      $state = $_SESSION['state'];
      $email = $_SESSION['email'];
      if($responseMessage!="Approved"){
          $sessionKey = "username";
          foreach($_SESSION as $key => $value){
            if($key == $sessionKey) continue;
            unset($_SESSION[$key]);
          } 
          header("location:payment-issue.php?reason=".$responseMessage."");
          exit();
      } else {
          switch ($item) {
              case $item=="train":
                  $reason = "train";
                  $sqlUpdate = $db->query("INSERT INTO payments (data) VALUES (data)");
                  $sqlTrain = $db->query("INSERT INTO training (data) VALUES (data)");
                  break;
              case $item=="renew":
                  $reason = "renew";
                  $sqlUpdate = $db->query("INSERT INTO payments (data) VALUES (data)");
                  break;
              case $item=="donate":
                  $reason = "donate";
                  $sqlUpdate = $db->query("INSERT INTO payments (data) VALUES (data)");
                  break;
              case $item=="new member":
                  $reason = "new member";
                  $sqlAdd = $db->query("INSERT INTO newMembers (data) VALUES (data)");
                  $sqlUpdate = $db->query("INSERT INTO payments (data) VALUES (data)");
                  break;
              default:
                  $sqlUpdate = $db->query("INSERT INTO payments (data) VALUES (data)");
                  break;
          }
      }
      $sessionKey = "username";
      foreach($_SESSION as $key => $value){
        if($key == $sessionKey) continue;
        unset($_SESSION[$key]);
      } 
      die(header("location:thank-you.php?reason=$reason"));
      ?>
      

0 个答案:

没有答案