将$\u会话数组发送到我的类,并尝试在for loop.php中获取该数组的值

将$\u会话数组发送到我的类,并尝试在for loop.php中获取该数组的值,php,paypal-ipn,Php,Paypal Ipn,我有一个类,在这个类中,iam使用一个方法通过for循环从会话数组中获取信息。每个方法中的2个for循环用于1.计算项目总数,2。把总价加起来,但两人似乎都没有退货。我使用总金额与来自IPN的mc_总过账值进行核对,如果这些值相等,我计划将销售提交到数据库,因为它已经过验证。对于我希望得到的总价格的方法,我得到0.00返回给我。我想我这里的语法搞错了,这是我要买的类。我遇到的两个问题是gettotalcost()和gettotalitems(),如下所示是我的类 <?php class

我有一个类,在这个类中,iam使用一个方法通过for循环从会话数组中获取信息。每个方法中的2个for循环用于1.计算项目总数,2。把总价加起来,但两人似乎都没有退货。我使用总金额与来自IPN的mc_总过账值进行核对,如果这些值相等,我计划将销售提交到数据库,因为它已经过验证。对于我希望得到的总价格的方法,我得到0.00返回给我。我想我这里的语法搞错了,这是我要买的类。我遇到的两个问题是gettotalcost()和gettotalitems(),如下所示是我的类

<?php


class purchase {

private $itemnames;     // from session array
private $amountofitems; // from session array
private $itemcost;     //session array
private $saleid;        //posted transaction id value to be used in sale and sale item     tables
private $orderdate;   //get current date time to be entered as datetime in sale table
private $lastname;   //posted from ipn
private $firstname;   //posted from ipn
private $emailadd;   //uses sessionarray value


public function __construct($saleid,$firstname,$lastname)
{
    $this->itemnames = $_SESSION['itemnames'];
    $this->amountofitems =$_SESSION['quantity'];
    $this->itemcost =$_SESSION['price'];
    $this->saleid = $saleid;
    $this->firstname = $firstname;
    $this->lastname = $lastname;
    $this->emailadd = $SESSION['username'];
    mail($myemail, "session vardump ",  echo var_dump($_SESSION), "From: you@youremail.com" );
 mail($myemail, "session vardump ",count($_SESSION['itemnames']) , "From: you@youremail.com" );
}

     public function commit()
 {

   $databaseinst = database::getinstance();
   $databaseinst->connect();

   $numrows = $databaseinst->querydb($query);
   //to be completed
 }




 public function gettotalitems()
  {
      $numitems;
      $i;

      for($i=0; $i < count($this->amountofitems);$i++)
      {
          $numitems += (int) $this->amountofitems[$i];

      }

     return $numitems;
  }


 public function gettotalcost()
  {
      $totalcost;
      $i;


      for($i=0; $i < count($this->amountofitems);$i++)
      {
          $numitems = (int) $this->amountofitems[$i];
          $costofitem =doubleval($this->itemcost [$i]);
          $totalcost += $numitems * $costofitem;
      }


     return  $totalcost;
  }   







}

?>
提前谢谢你的帮助

我还将这些行添加到我的构造函数中。邮件回复说垃圾堆里什么都没有哦

   mail($myemailaddress, "session vardump ", var_dump($_SESSION), "From:   you@youremail.com" ); 
还添加了
会话_start()

在构造函数的顶部,它不工作!帮助 好的,我在一个单独的php页面上打印了vardump,它给了我这个


数组(9){[“令牌”]=>string(32)“964885a70512d21933d139663a8fe48a”[“ID”]=>string(19)“XXXXXXXX”[“用户名”]=>string(19)“XXXXXXXXXX”[“密码”]=>string(5)“XXX”[“管理员”]=>string(1)“0”[“设置”]=>string(4)“真实”[“项目名称”=>string(3){[0]=>string(43)“清海岬岛:人与风景”[1]=>string(30)“Naomh Ciaran:Pilgrim Islander”[2]=>string(35)“O Driscolls:过去和现在(2005)”[“数量”=>array(3){[0]=>int(2)[1]=>string(1)“1”[2]=>string(1)“1”}[[price”]=>array(3){[0]=>string(5)“12.73”[1]=>string(5)”23.99”[2]=>string(5)“11.76”}

您必须以
会话开始的方式启动会话
在任何事情之前


尝试打印要调试的函数中的numitems和totalcost变量…

好的,答案是,当我离开我的站点处理事务时,IPN不会处理会话变量,所以我必须将它们保存到数据库中,然后如果所有检查都通过我的IPN脚本,我可以将事务标记为p在我的数据库中使用一个唯一的事务号,我将创建一个自定义变量,并将其传递给paypal。如果检查失败,我将发送()购买商品的人使用我将从paypal获得的唯一交易号作为ipn自定义变量删除商品。wow stackoverflow通常比这更有用,也许我的问题有点模糊!

您确定在创建类时$\u会话值设置正确并且会话已经开始了?为什么要写“$totalcost$我"及"元;$我“显式地在函数中?@OM函数是我在java中使用的方式。使用这个”count($this->amountofitems)“我正试图计算数组中的项数!会话数组都已创建并在我使用它们填充购物车时正常工作。如果已经创建了会话,我是否必须在类中启动会话?在实例化任何类的对象并在同一类中使用会话之前,u应获得会话started@eoin是否可以添加一个var\u转储($\u会话);在构造函数中,将输出粘贴到此处?我会将其打印到文件中!我需要几分钟才能完成。我现在就试着去做。一分钟前我休息了一下,现在我放在构造器中的邮件没有发送给我,这真的很烦人。我离开paypal网站去做一些处理后,又回到了页面!这可能就是问题所在!我应该在构造函数和脚本中调用session_start吗?!或者可能是因为IPN在paypal页面上运行,而im不会将会话变量返回给我的对象。这里需要帮助我还修复了变量名称上的语法错误。您需要在使用会话变量之前调用会话启动。它可以在任何地方,但在使用会话数据之前
<?php
 session_start(); 
 include("purchase.php");

 var_dump($_SESSION)

 exit;

 $purchase = new purchase($...........
?>
<?php
 session_start(); 
 include("purchase.php");

 var_dump($_SESSION)

 exit;

 $purchase = new purchase($...........
?>