Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] date() wyslane przez POST
Forum PHP.pl > Forum > Przedszkole
dareo95
witam,
wysylam w formularzu

  1. date("H:i:s")


odczytuje to na drugiej stronie $_POST['date']
i teraz jak z tego wyciagnac same minuty, a potem sprawdzic czy jest wiecej czy mniej roznicy o 10 minut od aktualnego czasu?
sadistic_son
  1. $minuty=explode(':',$_POST['data']);
  2. $minuty=$minuty[1];
  3. $minuty=$minuty*60; //zamiana na sekundy
  4. $za_10_minut=time()+600;
  5. $za_x_minut=time()+$minuty;
  6. if($za_10_minut<$za_x_minut){
  7. echo 'wiecej niz 10 minut';
  8. }
dareo95
dzieki wielkie smile.gif

thek
Tak... o od jedenastej minuty każdej godziny warunek zawsze będzie prawdziwy, bo nie sprawdzasz różnicy, ale o prostu wartość minut.
sadistic_son
Moja wina, nie doczytałem czy ma być wiecej czy mniej niz 10 minut. Poprawka:
  1. if($za_10_minut<$za_x_minut){
  2. echo 'wiecej niz 10 minut';
  3. }else{
  4. echo 'mniej niz 10 minut';
  5. }
Powyższe pokaże ze jest mniej równierz dla przypadku kiedy bedzie dokladnie rowne 10 minut.
dareo95
Cytat(thek @ 22.03.2011, 21:41:19 ) *
Tak... o od jedenastej minuty każdej godziny warunek zawsze będzie prawdziwy, bo nie sprawdzasz różnicy, ale o prostu wartość minut.

teraz juz sie pogubilem...
chodzi mi tylko o taka sytuacje, ze przesylam artykul formularzem, dolaczam aktualny czas i przez 10 minut od jego wyslania mozna go edytowac. wiec to chyba jest dobre co sadistic napisal? nie mam jak w tej chwili sprawdzic
sadistic_son
W takim razie:
  1. if($za_10_minut>=$za_x_minut){
  2.  
  3. //edycja
  4.  
  5. }
dareo95
hmmm a taka sytuacja, ze wysylam formularz o 20:13. o 20:24 juz sie nie da edytowac, ale jak bedzie 21:14 to chyba znowu bedzie sie dalo edytowac? wychodzi na to, ze trzeba by dodac godziny, dni, miesiace i lata, a to juz troche chyba jest roboty? chyba ze jest jakas funkcja specjalna do tego?
darko
Przecież to i tak można obejść.
dareo95
i dlatego mam nawet nie probowac?
Grzyw
Jeśli chcesz z tym działać, to skorzystaj przede wszystkim z funkcji strtotime z interwałem czasowym, żeby nie mordować się z explode'ami i mnożnikami czasu....
darko
Możesz tylko po co? Tutaj lepiej sprawdziłby się jakiś system tokenów oparty o aktualną datę i czas. Możliwości jest wiele.
dareo95
no to nie wiedzialem o czyms takim, jesli to jest lepsze to oczywiscie zastosuje, tylko jak sie do tego zabrac? mozna jakies materialy?
sadistic_son
A co robisz z tymi danymi wysłanymi z formularza? Zapisujesz je w bazie? Jeśli tak to dodaj tylko dodatkowe pole w tabeli i wrzucaj do niego w zapytaniu datę obecną + 600 sekund. Potem jeśli ktoś będzie chciał edytować to tylko sprawdzasz czy time() <= $data_z_bazy i jeśli tak to zezwalasz na edycję.
dareo95
tzn poki co wysylalem to przez POST, zeby sprobowac czy to w ogole bedzie dzialalo, a domyslnie ma isc wlasnie do bazy. tylko w jakim formacie to zapisac, zebym potem mogl sprawdzac tak jak piszesz?

i o co z tymi tokenami chodzi co darko pisal? smile.gif bo skoro to lepsze to bym wolal sprobowac
darko
W b azie tworzysz pole datetime albo timestamp. Natomiast kwestia tokenów opartych o czas jest nieco bardziej skomplikowana, ale generalnie należałoby użyć two way encryption np. za pomocą MCrypt i mcrypt_generic oraz mdecrypt_generic albo zamiennika w postaci mcrypt_ofb
dareo95
zostane jednak przy samej bazie bez tokenow tongue.gif
czyli wrzucam aktualna date do bazy, a potem ja wyciagam, przerabiam strtotime, dodaje do wyniku 600 i potem porownuje?
sadistic_son
Możesz uniknąć przerabiania jej za pomocą strtotime i od razu wrzucić do bazy, do kolumny typu INT wartość czasu unixowego. Zacznij działać i zapodawaj efekty to będziemy na bieżąco pomagać bo takie gadanie "co by można, czego nie, a gdyby to zrobić tak i tak, a tak nie" to nie ma sensu.

F5

I co? Jakieś postępy?
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.