Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] W jaki sposób przekazywane są duze ilości danych w Sesji ?
Forum PHP.pl > Forum > Przedszkole
InosU31
Witam

Mam taki maly problem bo nie zabardzo rozumiem w jaki sposob sa przekazywane wieksze ilosci danych w sesji, tzn.

dobrym przykladem bylby tu koszyk zakupowy. Powiedzmy ze ktos wchodzi na strone i dodaje do koszyka jakies rzeczy, np. ksiazki. Nastepnie robi nadal zakupy poruszajac sie po stronach a w koszyku dodane pozycje nie znikaja.

I chialbym sie dowiedziec w jaki sposob sie takie cos robi.
czy tak:
  1. $_SESSION['ksiazka1'] = "nazwa_ksiazki_1";
  2. $_SESSION['ksiazka2'] = "nazwa_ksiazki_2";


i te dane z koszyka wendruja w tych zmiennych sesyjnych

czy jakos inaczej bo nie zabardzo rozumiem tego.


Na niektorych stronach pisza ze np. jesli jestes zalogowany to $_SESSION['cokolwiek'] = 1; a jesli nie to jest rowne 0, - ok to rozumiem, jak sesja dziala tez rozumiem ale nie potrafie sobie wyobrazic jak te dane (wieksze ilosci) dodane do tego koszyka wedruja sobie po stronach i nie sa wcale zapisane w bazie ani w plikach.

inny przyklad:

Wysylam sobie cos postem, powiedzmy kilka danych typu imie, nazwisko, wiek, email. Daje na formularzu przycisk "Dalej" i w ten sposob przeladowuje sie na inna strone gdzie jest nastepny formularz z innymi danymi : miejscowosc, kod pocztowy, telefon. I w tym miejscu mam przycisk "Wyslij dane". I chodzi mi o to jak za pomoca sesji przeslac te pierwsze dane do drugiej strony tak aby dopiero po nacisnieciu "Wyslij dane" zapisac je razem w bazie.

moglby mi ktos to w miare prosty sposob wyjasnic i ewentualnie podac jakis przyklad?

z gory dzieki za odpowiedz.

Pozdrawiam
piotrekkr
Sesja zazwyczaj zapisuje unikalny identyfikator dla ciebie w ciastku na twoim komputerze. Same dane fizyczne które dodajesz do sesji są zazwyczaj zapisywane na serwerze w pliku np. w /tmp/sess_9743a66f914cc249efca164485a19c5c lub bazie danych. W tych plikach trzymana jest twoja tablica z danymi sesji. Kiedy wchodzisz na stronę wysyłasz info do serwera że masz takie id sesji, on szuka pliku sesyjnego na dysku i jeśli znajdzie plik o nazwie sess_twoje_id to odczytuje jego dane i masz do nich dostęp (zapis / odczyt). Rozumiesz mniej więcej ?smile.gif
InosU31
dzieki za odpowiedz:-)

no dobrze ja to rozumiem co napisales ale jak to wyglada teraz w praktyce??

zrobilem cos takiego:

index.php

  1. <?php
  2.  
  3. if (!isset($_SESSION['test']))
  4. {
  5. $_SESSION['test'] = 1;
  6. include_once "form.php";


}

?>

[/php]

form.php

  1. <form enctype="multipart/form-data" action="docelowy.php" method="post">
  2.  
  3. Nazwa wyswietlana:
  4.  
  5. <input type="text" name="wyswietlana" value=""><br><br>
  6. <input type="text" name="numer" value="">
  7. <br>
  8. <input type="submit" name="przycisk" value="Zmien" >
  9. </form>


docelowy.php

  1. <form enctype="multipart/form-data" action="ostatni.php" method="post">
  2.  
  3. Nazwa wyswietlana:
  4.  
  5. <input type="text" name="w" value=""><br><br>
  6. <input type="text" name="n" value="">
  7. <br>
  8. <input type="submit" name="wyslij" value="wyslij" >
  9. </form>


i po wyslaniu wszystkiego dostaje to :

Notice: Undefined index: wyswietlana in D:\_www_kurs\test\ostatni.php on line 3


Notice: Undefined index: numer in D:\_www_kurs\test\ostatni.php on line 4

ola
ula


dane z jednego formularza po przekazaniu do drugiego gina przy przeslaniu innych danych na koncowa strone

i chodzi mi o to ze nie rozumiem w jaki sposob mam napisac powyzszy skrypt zeby on mi tez pamietal dane z indexu : wyswietlana i numer. Gdzies wyczytalem ze dzieki sesji nie musze przekazywac ciagle danych przez POSt, tylko nie wiem wlasnie w jaki sposob to zapisac. Czy kazda dana z posta przypisywac do $_SESSION czy jakos inaczej??

mam nadzieje ze teraz bardziej zrozumiale napisalem o co mi chodzi.

pozdrawiam
mls
Aby coś zapisać do sesji, trzeba to przypisać do superglobalnej zmiennej $_SESSION. W każdym pliku w którym chcesz korzystać z sesji (czy to zapisywać, czy odczytywać) dodaj na początku session_start();.
InosU31
ok juz mniejwiecej zalapalem;-)

dziekuje bardzo

Pozdrawiam:-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.