PDA

View Full Version : مشکل با کلاس و کوکی بر روی هاست



mamad_za
دوشنبه 02 فروردین 1395, 05:15 صبح
سلام دوستان من یه سایت درست کردم ، قسمت سبد کالاش رو با cookie ایجاد کردم الان یه مشکلی که هست اینه که قمست اضافه شدن به سبد و همه قسمت ها تو لوکال خوب کار می کنه اما الان که upload کردم سایت رو رو هاست ارور میده.

ارور که دارم :
Warning: Invalid argument supplied for foreach() in /home/srgirani/public_html/basket/product.cl.php on line 16

کد اضافه کردن کالا توسط کوکی

<?php
class Cart
{

//Add a product order to our COOKIE/JSON based cart.

public function AddProduct($productid, $quantity)
{
$x=0;
//Checks to see if cart already exists.

if (isset($_COOKIE['Cart']))
{
//JSON content is turned back into array.
$cart = json_decode($_COOKIE['Cart']);
foreach ($cart as $order => $product)
{
//Check to see if $products key ($order) matches the $products key we wish to remove.
if($product[0] == $productid)
{

//If result is false add product order to new array.
$record=$order;
$x=1;
}


}
if($x==1){

}else{
$cart[] = array($productid,$quantity);

//Encode cart array back into JSON.

$createcart = json_encode($cart);

setcookie('Cart',$createcart,time()+3600);
}
}
else
{
$cart = array();
$cart[] = array($productid,$quantity);

//Encode cart array back into JSON.

$createcart = json_encode($cart);


setcookie('Cart',$createcart,time()+3600);
}

//Add product id and quantity desired to cart.



}

//Displays our Cart to the page.

public function DisplayCart()
{

if (isset($_COOKIE['Cart']))
{

$cart = $_COOKIE['Cart'];

//JSON content is turned back into array.

$products = json_decode($cart);

//Loop through Cart array to display relevant Cart info.
//print_r($products);
foreach($products as $order => $product)
{
$myarr[]=$product[0];

//echo '<p>';
//echo $order;
//echo $product[0];
//echo $product[1];
//echo '</p>';
}
return $myarr;
}
else
{
echo 'No Products In Cart';
}

}

//Remove product order from Cart.

public function RemoveProduct($orderid)
{

$cart = $_COOKIE['Cart'];

//JSON content is turned back into array.

$products = json_decode($cart);

$newcart = array();

foreach ($products as $order => $product)
{

//Check to see if $products key ($order) matches the $products key we wish to remove.
if($product[0] != $orderid)
{

//If result is false add product order to new array.

$newcart[] = array($product[0], $product[1]);

}

}

//Encode new Cart array into JSON.

$createcart = json_encode($newcart);

setcookie('Cart',$createcart,time()+3600);

}
public function CountCart()
{

if (isset($_COOKIE['Cart']))
{

$cart = $_COOKIE['Cart'];

//JSON content is turned back into array.

$products = json_decode($cart);

//count array.

$count=count($products);
return $count;

}
else
{

return '0';

}

}
}


?>


کد استفاده کردن از کوکی

<?php
if(isset($_POST['addtobasket']) && !empty($_POST['addtobasket'])){
$id=clearxss($_POST['id']);
require_once('basket/product.cl.php');
$cart=new Cart();
$cart-> AddProduct($id,'1');
//echo "yes";

//header("Location: http://www.srgiran.com/index.php?srg=basket");
}

?>

kb0y667
شنبه 19 تیر 1395, 02:06 صبح
شما قبل از ارسال درخواست بصورت post
اطلاعات مربوط به سبدکالا رو
با استفاده از JSON از طریق جاوااسکریپت بعنوان کوکی ثبت میکنید ؟

اگر نمیکند ، احتمالا باید اینجور باشه ولی نیست


شما خودتون برنامه نویسی کردید؟ یا اسکریپت خارجکی هست؟


اگه خودتون نوشتید
شاید در این بخش اشتباه کردید :

json_decode($_COOKIE['Cart']);



چرا باید مقدار
$_COOKIE['Cart']
وارد تابع
json_decode
بشه ؟

ولی اگر برنامه نویسی خودتون نیست :
قبل از خط 15
که نوشته: = cart$
یک خط بالاتر این کد رو بنویسید :


die(print_r($_COOKIE['Cart']));
که نشون بده دقیقا محتویاتش چی هست
و مشکل از کجاست

چون ممکنه مشکل حتی از سمت کلاینت (جاوااسکریپت) باشه