Hey lui,

alweer lang geleden, maar ik heb een probleempje.

ik ben bezig met een soort bestel systeem. Het systeem werkt uiteraard met sessies. De sessie heeft de naam $_SESSION['cart']... heel uniek ook

het probleem wat ik nu ondervindt is, wanneer ik een $.get stuur dat ik de inhoud niet kan zien. als ik naar webadres/cart.php?option=3 zegt het script dat ik ook geen producten erin heb..

wanneer ik via Lytebox 5.5 de pagina webadres/cart.php?option=3 opvraag staat alles er wel normaal in.. iemand een idee?

Hier is mijn script:


<?
include 'config.php';

function getCart(){
	$cart = $_SESSION['cart'];
	if ($cart) {
		$items = explode(',',$cart);
		$contents = array();
		foreach ($items as $item) {
			$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
		}

		$total = 0;
		$output[] = '<table id="ctdropdown">';
		$output[] = '<thead>';
		$output[] = '<th>Verwijder?</th>';
		$output[] = '<th>Naam</th>';
		$output[] = '<th>Prijs ps.</th>';
		$output[] = '<th>Aantal</th>';
		$output[] = '<th>Totaal</th>';
		$output[] = '</thead>';
		
		foreach ($contents as $id => $qty){
			$query = mysql_query("SELECT * FROM products WHERE `proId`='".$id."'");
			$row = mysql_fetch_array($query);
			extract($row);
			$output[] = '<tr proId="'.$id.'">';
			$output[] = '<td class="verwijder">Verwijder</td>';
			$output[] = '<td>'.$name.'</td>';
			$output[] = '<td>&euro;'.$price.'</td>';
			$output[] = '<td>'.$qty.'</td>';
			$output[] = '<td> &euro;'.($price * $qty).'</td>';
			$total += $price * $qty;
			$output[] = '</tr>';
		}
		$output[] = '</table>';
		$output[] = 'Totaal: &euro; '.$total;
		echo join('',$output);
		echo '<br /><br /> <a href="emptycartnow.php">Leeg uw dienblad!</a><br /><br /> <a href="placeOrder.php">Plaats uw bestelling!</a>';
	} else {
		echo 'Geen producten';
	}
}
?>
Je zou haast gaan denken dat je ergens een session_start() vergeten bent. Wordt het script via ajax direct uitgevoerd en de andere via een include? Dat zou een oorzaak kunnen zijn dat je session_start() bent vergeten.
Nops in de config heb ik dat altijd staan, speciaal voor zulke gevallen. alsik er zegmaar iets inzet op die pagina en later het weer ophaal werkt et wel..
Een mogelijk probleem met $.get is dat het bijvoorbeeld in IE gecached wordt.
Gebruik best $.ajax met als parameter cache: false.

Verder heb ik ook al meermaals meegemaakt dat in sommige browsers, de sessie cookies niet worden meegestuurd of correct worden gelezen. Dit kan je controleren via firebug en vervolgens naar de http request van de ajax call kijken: komt de sessie cookie overeen met de cookie op de pagina?

Eventueel kan je de session id in de URL meegeven en deze dan achteraf inladen. Daar moet je dan wel zeker oppassen voor session hijacking.
Aangezien dit niet je hele script is, gok ik erop dat er voordat je deze functie uitvoert een if(isset($_GET[]) { code exit();} hebt staan waardoor je script nooit deze functie aanroept.
Vertel eens over je php files.

Waar surft de gebluiker naar?
Is dit cart.php ?

Komt index.php ergens voor?
naar welke url surft Ajax??
Hey lui,

ik gebruik chrome en firefox. De fout komt voor bij zowel ff als chrome. Wanneer ik de browser afsluit gebeurt het zelfde, maar als ik deze via processen afsluit gaat het weer een tijdje goed, totdat het weer fout gaat :P 20 min ofzo

Reageren