Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] sklep teoria-użytkownicy
Forum PHP.pl > Forum > Przedszkole
grykon
Witam,
mam problem bardziej teoretyczny
A mianowicie:
-jeżeli zalogowany użytkownik wrzuca przedmioty do koszyka to wiadomo luz tabela koszyk przypisujemy danemu użytkownikowi daną ilość danych przedmiotów

zastanawiam się jedynie nad użytkownikiem niezalogowanym (gość):
-gość wrzuca przedmioty do koszyka - czy już wtedy wrzucać jego przedmioty do DB a zamiast uid wpisywać sessid (żeby go po czymś rozpoznawać) ? czy może trzymać w sesji? ale sesja wygaśnie i byłoby to niewygodne dla klienta wiem po sobie że lubię wrócić do sklepu i mieć to co miałem w koszyku (ciasteczka)
-gość wrzuca przedmioty do koszyka i wiadomo w którymś momencie chce się zalogować i wtedy:
-jeżeli jako user już ma koszyk to jego poprzedni koszyk usuwam a ten nowy zastępuję?
-jeżeli jako user nie ma koszyka to po prostu do tego gościowego przypisuje ten uid tak? to w takim razie gdzie wrzucić "if-a" ? w momencie logowania? było by to dość niewydajne żeby każdemu kto się loguje sprawdzało najpierw czy miał koszyk czy nie

reszta rzeczy przynajmniej u mnie w głowie jest poukładana ale ta zmiana stanów użytkownika wprowadza trochę zamieszania i zastanawiam się jak to rozwiązać... wiem że wiele sklepów po prostu olewa niezalogowanych użytkowników i koniec sesji to zapomina co miałeś. wiem też że porzucone koszyki w bazie danych zaśmiecają ale można stworzyć procedurę która oczyści DB z porzuconych koszyków (załóżmy gdzie data=dziś-2miesiące i mniej) i będzie cacy
anka_skakanka
ja mam tak w tabeli kosyzk
id_koszyk id_user id_sesji id_wyb_rab ilosc_wyb_rab data_dodania ( w momencie goscia w id klient=0 )... te dane sa tam w sumie aż ich nie usunę...w momencie gdy sie loguje to mam update koszyka zeby zaktualizowalo id_usera na idklienta where idsesji=(..)... natomiast gdy przychodzi do momentu złożenia zamówienia to dane te przechodzą do tabeli zamówienia a z tabeli koszyk są usuwane...
Ale nie wiem czy to dobre rozwiązanie
dr_bonzo
> -gość wrzuca przedmioty do koszyka - czy już wtedy wrzucać jego przedmioty do DB

tak, w ciacho ID koszyka. Tylko zabezpiecz sie przed "modyfikacja tego ciacha".

> -jeżeli jako user już ma koszyk to jego poprzedni koszyk usuwam a ten nowy zastępuję?

bez sensu, user straci produkty ktore np. wczoraj sobie znalazl i dodal, polacz koszyki smile.gif

> -jeżeli jako user nie ma koszyka to po prostu do tego gościowego przypisuje ten uid tak?

tak,

> było by to dość niewydajne żeby każdemu kto się loguje sprawdzało najpierw czy miał koszyk czy nie

no chyba zartujesz? user loguje sie raz na powiedzmy godzine, a do wyswietlenia strony glownej sklepu potrzeba i tak z kilkudziesieciu SQLek
grykon
dzięki za rozwianie wątpliwości

mam w takim razie jeszcze jedno pytanie... jak zabezpieczyć te ciasteczka? bawić się w tokeny? przecież i tak tam nie będę przechowywał wrażliwych danych tylko myślę product_id, qty i może jakiś sess_id czy coś żeby ropoznać potem czyje to ciastko

jeżeli się mylę to mnie popraw

modyfikacja ciastek jest banalna ... co innego zmodyfikować ciastko tak żeby coś robiło... ale i tak nie widzę za bardzo sensu bo co użytkownik z takimi danymi w ciastku może zmienić? ilość produktów? sess_id innego usera przecież i tak nie zgadnie

ciastko tak samo jak informacje w GET powinno zawierać jak najmniej wrażliwych informacji lub te informacje mieć odpowiednio zakodowane (w POST też ale w POST da się więcej ukryć po stronie PHP smile.gif )

dr_bonzo
W ciastku wpisujesz ID koszyka guesta.

User moze sobie je wyedytowac i przejac czyjsc koszyk.

Chodzi o to zeby tak latwo nie mogl zmienic tego ID koszyka. Np. przez "podanie hasla" do tego koszyka.
Tzn wysylasz 2 ciacha - ID + hash (np. md5). Hash jest budowany z jakichs smieci + tajnego kodu + ID koszyka.

I przy wczytywaniu koszyka z ciacha

1. budujesz ten hash po stronie sklepu i sprawdzasz czy hash dostarczony przez usera w ciachu sie zgadza - a ze hash jest budowany z ID koszyka to kazdy koszyk ma swoj unikalny (w praktyce) hash
2. user zeby przejac czyjs koszyk musi ustawic ID koszyka + wygenerowac ten hash, ale nie jest w stanie tego zrobic gdyz nie zna tajnego kodu
3. Jesli user odesli ci ciacha niezmodyfikowane to wszystko bedzie OK
grykon
dziękuję w zupełności smile.gif no no no i stosować sobie różne sole nie sole hehe smile.gif użytkownik tego nie zgadnie bardzo ładnie dziękuję Panu smile.gif i nie wiem czy umiem ale jak mi się uda to kliknę że pomógł smile.gif
jak coś to jeszcze będę pisał i wymyślał inne problemy biggrin.gif

a ten manerw z koszykiem to po prostu taki token i jakoś md5 nie ufam może mylnie ale na internecie łatwo znaleźć stronkę która odwraca md5 ... może jednak lepiej sha1? // a przepraszam ta stronka polega tylko na szukaniu tego co ma wpisane w bazie danych i rozwinięciach skrótów czyli na dobrą sprawę nie dekoduje tak bezpośrednio
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.