koszyk na zakupy na sesjach, nie działa przy register_global

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Olimpia_ona
Nowy
Nowy
Posty: 27
Rejestracja: pt gru 03, 2004 7:41 pm
Lokalizacja: Elbląg

koszyk na zakupy na sesjach, nie działa przy register_global

Post autor: Olimpia_ona »

Witam,
pisałam już kiedyś o koszyku. Wszystkie problemy z nim związane rozwiązałam i wydawało mi się, że już wszystko jest ok, ale zapomniałam zmienić ustawień serwera na register_globals = off, po tej zmianie nie trzyma mi tego koszyka. Nie pamięta zmiennej $stan, co wydaje się być logiczne, ale teraz proszę o pomoc, co muszę zrobić, by jednak ten koszyk działał z register_globals = off.

Fragment jak mam to zrobione:
[php]<?php
session_start();
...
$koszyk=$_SESSION['koszyk'];
$dodaj=$_GET['dodaj'];
$usun=$_GET['usun'];
$zmien=$_GET['zmien'];
...
class koszyk
{
/* tablica asocjacyjna zawierajaca stan koszyka */
/* klucz, to wartosc id produktu, wartosc to ilosc elementow */
var $zawartosc;

function dodaj($element, $ilosc)
{
$this->zawartosc[$element] += $ilosc;
}

function usun($element, $ilosc)
{
if ($this->zawartosc[$element] > $ilosc)
$this->zawartosc[$element] -= $ilosc;
else
unset($this->zawartosc[$element]);
}

function zmien($element, $ilosc)
{
$this->zawartosc[$element] = $ilosc;
}

function stan()
{
return $this->zawartosc;
}
}

if (!$koszyk)
$koszyk = new koszyk;
...
if ($dodaj)
$koszyk->dodaj($dodaj1, 1);
...
$stan = $koszyk->stan();
...
//i wyświetlanie koszyka
if ($stan)
{
$ilewkosz=0;
while (list($key, $value) = each($stan))
{
echo "produkt: $key ilość:$value<br />";
}
}
?>[/php]

próbowałam robić coś w stylu:

[php]<?php
$_SESSION['stan'] = $koszyk->stan(); //z lini 45 (patrz wyżej)
$stan=$_SESSION['stan'];
?>[/php]
ale to nie pomogło.
HaWaJ
Nowy
Nowy
Posty: 159
Rejestracja: pt kwie 06, 2007 5:12 pm

Re: koszyk na zakupy na sesjach, nie działa przy register_global

Post autor: HaWaJ »

Nie wiem czy tak zrobiłaś czy nie ale jak wklejasz caly kod do podstrony z koszykiem to na pewno masz session_start(); na początku całego kodu ? Chodzi mi o coś takiego:

[php]<?php
session_start();
?>

/*reszta kodow html i php*/
[/php]
the_foe
Przelotem
Przelotem
Posty: 295
Rejestracja: pt sty 31, 2003 12:53 pm
Lokalizacja: Wałbrzych
Kontakt:

Re: koszyk na zakupy na sesjach, nie działa przy register_global

Post autor: the_foe »

a co to za zmienna $dodaj1 w 43. linii?
ODPOWIEDZ