![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 28.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Zacząłem robić sklep internetowy w ramach nauki we własnym zakresie. Zrobiłem już mniej więcej wygląd strony, logowanie oraz rejestrację. Jedynie problem jest przy koszyku, kupionych rzeczach, sprzedawanych itd. Teraz przejdę do sedna, chodzi mi o to jak połączyć 2 tabele w MySQL w PHPMyAdmin bo nigdzie tam nie mogę takiego czegoś znaleźć... Chodzi mi o takie połączenie relacyjne, że dla danego id użytkownika w nowej tabeli przypisywane są przedmioty, które dodał i komentarze. Tak się zastanawiałem nad tym jak ma działać koszyk i jedynie przychodzi mi do głowy takie coś, że dla użytkowników zakładana jest tabela, w której dodawane są przedmioty lub usuwane jak chce użytkownik. No, ale jak mamy 1000 użytkowników to 1000 tabel przeciąży serwer... Więc musi to być jedna tabela, w której dla konkretnego ID użytkownika przypisuje konkretne ID przedmiotu, który obserwuje (wrzucił do koszyka). Dla osób niezalogowanych można przy wejściu na stronę nadawać id itd tworząc takiego jakby użytkownika, który kasowany jest po tym jak ktoś się zaloguje lub jak wyjdzie ze strony (tutaj za bardzo nie wiem jak kasować np. cookies po wyłączeniu strony). Można też dla niezalogowanych dawać informacje, że koszyk tylko po zalogowaniu do serwisu ![]() Nie wiem czy takie moje myślenie jest odpowiednie, dlatego chciałbym żeby ktoś mi doradził, poprawił moje myślenie i nakierował jak ustawiać to z bazami danych. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Ale mieszasz... ![]() Jeśli chodzi o koszyk to możesz zrobić tak, że zapisujesz ID | NAZWĘ | CENE w ciasteczku Jeśli chodzi o bazę danych to: 2 tabele: ZAMOWIENIA i ZAMOWIENIA_PRODUKTY W pierwszej tabeli będą dane dotyczące danych użytkownika, a w drugiej dane produktów jakie wybrał. Struktura pierwszej (ZAMOWIENIA): ID | ID_UZYTKOWNIK | IMIE ...itd Tabela: ZAMOWIENIA_PRODUKTY ID | ID_ZAMOWIENIA | NAZWA PRODUKTU | CENA itd. I póżniej sobie pobierasz zamówiedla użytkownika 1, a następnie ID zamówienia łączysz z produktami z drugiej tabeli. To tak na szybko ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Jeśli chodzi o koszyk to możesz zrobić tak, że zapisujesz ID | NAZWĘ | CENE w ciasteczku A potem pierwszy domorosly haker sobie pozmienia dane w ciasku i bedzie sie pultal ze w koszyku ma nowe Tv za 100zł a w sklepie kaza mu placic 2tys...
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 28.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Cześć. Ale mieszasz... ![]() Jeśli chodzi o koszyk to możesz zrobić tak, że zapisujesz ID | NAZWĘ | CENE w ciasteczku Jeśli chodzi o bazę danych to: 2 tabele: ZAMOWIENIA i ZAMOWIENIA_PRODUKTY W pierwszej tabeli będą dane dotyczące danych użytkownika, a w drugiej dane produktów jakie wybrał. Struktura pierwszej (ZAMOWIENIA): ID | ID_UZYTKOWNIK | IMIE ...itd Tabela: ZAMOWIENIA_PRODUKTY ID | ID_ZAMOWIENIA | NAZWA PRODUKTU | CENA itd. I póżniej sobie pobierasz zamówiedla użytkownika 1, a następnie ID zamówienia łączysz z produktami z drugiej tabeli. To tak na szybko ![]() No trochę może i mieszam, w głowie mam to inaczej (taki już mój los) ^^. W Access to można było sobie relacyjnie ładnie połączyć to wszystko, a tutaj nigdzie takiej opcji nie widziałem ![]() ![]() A potem pierwszy domorosly haker sobie pozmienia dane w ciasku i bedzie sie pultal ze w koszyku ma nowe Tv za 100zł a w sklepie kaza mu placic 2tys... Właśnie wolałbym coś bezpieczniejszego ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przecież i tak musisz za każdym razem sprawdzać poprawność tych danych więc co za różnica.
Możesz te dane zapisać w BD nadając im jakiś bardzo losowy ciąg i ten ciąg zapisać w cookie. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 28.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o koszyk to możesz zrobić tak, że zapisujesz ID | NAZWĘ | CENE w ciasteczku Pytanko do tego... Nie mam jak na razie sprawdzić dlatego pytam was ![]() Takie rozwiązanie by było już bezpieczniejsze niż zapisywanie wszystkiego do ciasteczek i odczytywanie później, bo jak Pan wyżej napisał ktoś będzie mógł zmienić cenę i kłócić się z właścicielem. Żeby nie było to siedzę i analizuję rozwiązania tego problemu, ale gdy już myślę, że mam odpowiednie to nagle wpada mi do głowy, że tak to nie będzie działać ;d |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
zapisujesz zserializowaną tablicę (ew. json)
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
A potem pierwszy domorosly haker sobie pozmienia dane w ciasku i bedzie sie pultal ze w koszyku ma nowe Tv za 100zł a w sklepie kaza mu placic 2tys... A co to ma do bezpieczeństwa? Ja sobie mogę w każdym sklepie zmienić w HTMLu cenę i pójdę się pultać? wtf... Przykład: ![]() Przy realizacji zamówienia pobierać ID produktu i wszystkie dane z tym związane. Można zrobić to na masę sposób, a podałem koledze jeden z nich (przejrzysty). Pozdrawiam Ten post edytował aras785 30.03.2016, 20:30:03 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to że podczas tworzenia tabeli koszyk i sprawdzania danych przez PHP nie ma możliwości oszukania skryptu i zrobienia zamówienia za inną cenę niż sprzedawca ustawi... W ciasteczkach można zmienić wartości, ale to nie jest moim zdaniem też jakoś bardzo niebezpieczne bo sprzedawca po złożonym zamówieniu przez klienta widzi wszystkie dane i ma dwa wyjścia (zaakceptować zamówienie, albo je odrzucić), choć w przypadku MediaMarktu, wątpię aby sprzedawca znał ceny wszystkich swoich produktów, dlatego podczas tworzenia sklepu, lepiej zrobić to raz, a porządnie...
Ten post edytował GodOfPeople 30.03.2016, 23:25:34 -------------------- Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zaproponowałem trzymanie danych w ciasteczku ponieważ bez zapytań można pokazywać sumę wszystkich produktów w koszyku.
Przy finalizacji zamówienia i tak system musi sprawdzać czy ID z ciasteczek pasuje do produktów i pobiera wtedy z bazy ich dane (cene, nazwe) i pokazuje na podsmumowaniu zamówienia więc klient i tak zobaczy przed samym zamówieniem ile to tak naprawdę kosztuje. Pozdrawiam |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 28.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje ślicznie za odpowiedzi
![]() ![]() Mam taką prośbę bez zakładania nowego tematu. Mógłby mi ktoś wytłumaczyć łopatologicznie po co jest mvc, bo chce się tego nauczyć, ale jakoś istoty tego nie mogę załapać za bardzo... Prosiłbym też o podanie jakiegoś dobrego kursu,tutorialu, który pomoże mi w nauce i zrozumieniu istoty tego mvc, z góry dziękuję ![]() |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
https://www.youtube.com/watch?v=Aw28-krO7ZM
Proste jak konstrukcja cepa. MODEL odpowiada za komunikację z baza danych VIEW odpowiada za warstwę prezentacji zazwyczaj przekazujesz parametry z controllera CONTROLLER odpowiada za warstwę logiki zazwyczaj zarządzana tutaj modelem i przekazujesz dane do widoku |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 28.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Wiem co i jak tylko do czego to się przydaje
![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Aby utrzymać ład i porządek w projekcie i aby ktoś kto przejmie po tobie pałeczkę czyli projekt nie złapał się za głowę i wyklinal swojego poprzednika. Ale również aby Ci ułatwić pracę.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 28.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Czyli jeżeli dobrze rozumiem to jest po to, aby rozdzielić php itd od kodu html ? Oraz, aby kod nie był zbyt obszerny tylko ładnie zamknięty w klasach np. by nie powtarzać go kilka razy np. nie wywoływać zapytania co jakiś czas ?
![]() |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Coś w ten deseń
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 28.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Ok dziękuje
![]() ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:53 |