Php Cookie未保存在foreach中
人 我正在尝试构建一个购物车,因此我必须将id、数量和位置id传递给函数。在函数中,如果找到类似的id和location\u id,我将查看传入的id和location\u id。我将+1添加到该项目。但是,如果在数组中使用该函数,它将不起作用。 下面是我构建的另一个函数,用于测试foreach中传递给函数的变量。 但这并不是我传入的第一个变量。它将只保存最新的变量 下面是我的功能代码:Php Cookie未保存在foreach中,php,cookies,cart,Php,Cookies,Cart,人 我正在尝试构建一个购物车,因此我必须将id、数量和位置id传递给函数。在函数中,如果找到类似的id和location\u id,我将查看传入的id和location\u id。我将+1添加到该项目。但是,如果在数组中使用该函数,它将不起作用。 下面是我构建的另一个函数,用于测试foreach中传递给函数的变量。 但这并不是我传入的第一个变量。它将只保存最新的变量 下面是我的功能代码: static public function test($id , $per_min, $location_
static public function test($id , $per_min, $location_id_cart = 0){
echo $new_cart = $id.'-'.$per_min.'-'.$location_id_cart;
if(isset($_COOKIE['cart_item'])){
$last = $_COOKIE['cart_item'];
$testing = $last.','.$new_cart;
}else{
$testing = $new_cart;
}
$set = setcookie("cart_item", $testing, time()+3600);
var_dump($_COOKIE);
}
下面是调用该函数的代码:
$id = 125;
$multi_location = array(636 , 789);
$multi_quantity = array();
$multi_quantity[636] = 5;
$multi_quantity[789] = 10;
$array_key = array_keys($multi_quantity);
foreach($array_key as $o){
if(!in_array($o , $multi_location)){
unset($multi_quantity[$o]);
}
}
$count = 0;
foreach($multi_location as $i){
ZCart::test($id , $multi_quantity[$i], $i);
}
我的结果是:
'cart_item' => string '125-10-789' (length=10)
我的预期结果:
'cart_item' => string '125-5-636,125-10-789'
如果我刷新我的页面,我得到的结果是:
'cart_item' => string '125-10-789,125-10-789,125-10-789,125-10-789,125-10-789,125-10-789,125-10-789'
cookie将只保存数组中给定的最新值。它不会将125-5-636保存到cookie。
为什么?有人能帮我吗?谢谢大家! 因为您没有使用数组或其他变量。每次调用循环中的函数时,它都会更新购物车项目的值。它不会将值存储在不同的变量中 请尝试以下代码:
static public function test($id , $per_min, $location_id_cart = 0){
$new_cart = $id.'-'.$per_min.'-'.$location_id_cart;
if(isset($_COOKIE['cart_item'])){
$last = $_COOKIE['cart_item'];
$testing = $last.','.$new_cart;
}else{
$testing = $new_cart;
}
$set = setcookie("cart_item", $testing, time()+3600);
//This line deals with adding to the cookie while the script is running
$_COOKIE['cart_item'] = $testing;
//var_dump($_COOKIE);
}
我有一种感觉,当您使用setcookie()
时,$\u COOKIE
数组没有被更新,这就是为什么我们用它下面的行手动更新它
此外,我还将删除var\u dump()
调用,同时回显$new\u cart
变量,因为这将停止setcookie()
的工作。相反,我会把它放在您的呼叫代码的底部:
$id = 125;
$multi_location = array(636 , 789);
$multi_quantity = array();
$multi_quantity[636] = 5;
$multi_quantity[789] = 10;
$array_key = array_keys($multi_quantity);
foreach($array_key as $o){
if(!in_array($o , $multi_location)){
unset($multi_quantity[$o]);
}
}
$count = 0;
foreach($multi_location as $i){
ZCart::test($id , $multi_quantity[$i], $i);
}
var_dump($_COOKIE);
如果你正在实现一个购物车,我强烈建议使用,它允许你在服务器端存储敏感的东西,远离伤害,并且根据我的经验,它比cookies更容易使用
另一种选择是将用户的购物车存储在数据库中,如果用户未登录,则使用存储在cookie中的ID链接到该购物车。这将允许购物车在用户关闭浏览器但不让cookie访问安全内容的情况下停留。我希望这是有意义的 我希望结果是饼干中的125-5-636125-10-789。。因此,我没有将值存储在不同的变量中。如果存在COOKIE,则if(isset($\u COOKIE['cart\u item']){$last=$\u COOKIE['cart\u item'];$testing=$last.','.$new\u cart;}。。我将获取cookie值,并将其与最新值组合。但问题是它并没有保存数组的第一个值。但是,如果您使用不同的索引在数组中存储值,那么您也可以获得所需的结果。。您可以使用内爆函数获取o/PBO中所需的字符串,但我希望将我的$id、$multi_数量[$i]、$i逐一传递给该函数。因为我在做购物车。。通过一个接一个的传递,我能够识别哪些是重复的东西,这样我就可以增加数量。我给我的用户复选框和输入文本。他们选中该选项,并在输入文本中输入数量。。这就是为什么我需要对数组进行预处理。没问题:)你知道它为什么不工作吗?我不擅长解释!是的,我明白。首先,我想用session做购物车,但是在我的网站实现HTTPS后,所有的session都出错了。因此,我认为cookie比session更安全。在https中创建的会话无法在http中访问。尝试了从网络上解决这个问题的方法。。好的,干得好:)stackoverflow的困难在于我不能假设什么,也不想侮辱你的智慧!您是否尝试过查看PHP电子商务解决方案的源代码以获取一些提示?我对电子商务和HTTPS一窍不通,我担心你的金伯利项目会很顺利!让我们