Wpis z mikrobloga

Robię stronę w Laravel, gdzie można dokonywać rezerwacji terminów (formularz z chechbox'ami), po kliknięciu rezerwuj przenosi do strony gdzie wyświetlona jest lista wybranych rezerwacji. Tam mam przyciski do zatwierdzenia rezerwacji lub jej anulowania.

Nie mam pomysłu w jaki sposób powinienem przekazywać ID wybranych terminów do kontrolera, który zapisze to w bazie danych.
Po raz kolejny przesyłać je formularzem?
Zapisać te ID do sesji flash?
Czy może w trakcie dokonania rezerwacji tworzyć tymczasową tabelę w bazie danych i w momencie potwierdzenia rezerwacji kasować tymczasową i zapisywać to w docelowej tabeli? Dzięki temu w między czasie nikt inny by nie mógł rezerwować terminu, który jest aktualnie 'w oczekiwaniu' w tymczasowej tabeli rezerwacji.

Może należy zastosować transakcje?
Jak się rozwiązuje taką kwestę najczęściej?

#naukaprogramowania #php #webdev #laravel #bazydanych
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@vault1337: W sensie, że w kontrolerze wywołam odpowiedni model, który to w bazie zapisze.

@normanos: W jaki sposób zabezpiecza się rezerwację 'w trakcie' bez tymczasowej tabeli? Bo ktoś inny może w tym samym czasie wybrać ten sam termin i szybciej go potwierdzić. Nie powinno być to możliwe do momentu, gdy pierwsza osoba zatwierdzi lub anuluje.
  • Odpowiedz
@jasieq91: to jest kwestia do przemyślenia, bo pamiętaj, że to ma być przyjemne dla 99% zwykłych użytkowników, więc nie pozwól, by przez ten 1% intruzów zepsuć usability. Dobrym sposobem są blokady czasowe na IP, bo pamiętaj, że intruza sesje czy inne ciasteczka nieobowiązują.
  • Odpowiedz
@jasieq91: Prześlij ponownie formularzem.

Po co Ci mieszać w sesji/ciastkach? Na drugim etapie masz wszystkie potrzebne informacje – potwierdzenie jest dla użytkownika (jako upewnienie się), a nie dla serwera (jako zabezpieczenie).

Klika „zaniechaj”? Olewasz.
Klika „akceptuj”? Tym razem faktycznie zapisujesz te dane, zamiast tylko przekierować na
  • Odpowiedz