Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesja i usuwanie pliku...
Forum PHP.pl > Forum > Przedszkole
michaeel
Witam!

To moj pierwszy post smile.gif Troszke skrobie w php i mam zrobiony caly dzienniczek ucznia. Jednak ostatnio taki problem przyszedl mi do glowy...

Calosc opiera sie na plika tekstowych (bez bazy danych) i chodzi mi o mozliowsc edycji.
Kazdy uczen ma swoj plik z ocenami..przypuscmy ze o godzinie 14 edytuje tego ucznia nauczyciel historii, minute pozniej otiwera tego ucznia nauczyciel geografii i zapisuje plik, a ok 14.05 plik zapisuje nauczyciel hisotrii. Wszystko sie dzieje na roznych komputerach..i jak problem powstaje?otoz zmian nauczyciela geografii nie widac - zostaly nadpisane..

i tu mam taki problem..chcialbym jakos zablokowac plik do edycji jesli zostal otwarty i do glowy przyszly mi sesje..no tak wszystko fajnie..plik zablokuje (funkcja ktora cos tam zrobi ze jak raz sie go otworzy do mozna go otworzyc dopiero jak osoba skonczy edycje..ale co jesli osoba poprostu zamknie przegladarke? Plik zostanie zablokowany -> nikt go nie odczyta dopuki nie sicagnie sie blokady...Czy ma ktos jakis pomysl jak to mozna rozwiazac?
bro_da
http://pl2.php.net/flock


pozdro
michaeel
wiem co to jest flock i owszem uzywam go. jednak tutaj chodzi o troszke inny sposob zabezpieczenia..

Nauczyciel edytujac ucznia widzi wszystkei przedmioty, dodaje ocoeny swoje i zapisuje plik -> tym samym nadpisujac poprzedni (bez wzgledu co w nim bylo)
bro_da
no chyba właśnie to realizuje polecenie flock();
nauczyciel historii otwiera plik i go blokuje, w ten sposób nauczyciel geografii musi czekać

dobrze kombinuje? winksmiley.jpg
michaeel
chcialbym aby tak bylo smile.gif

a flock dziala troszke inaczej..chodzi o to ze owszem blokuje go ale tuz przed zapisem. takze dane nie zostana dopisane ani nic sie nie zepsuje..

poprstu nauczyciel Geografii ktory wpisze oceny ich nie zobaczy jesli zapisze plik przed nauczycielem historii, gdyz ten jako pierwszy otrwal plik i w polu z ocenaimi do geografii ich nie mial smile.gif
bro_da
dawno nie bawiłem się na plikach winksmiley.jpg
może poprosu zmień nazwę pliku po otwarciu przez kogoś,
jesli w tym czasie ktoś będzie próbował otworzyć plik, to dostanie komunikat, że plik jest edytowany i musi poczekać...

w tym momencie nic innego ne przychodzi mi do głowy winksmiley.jpg

//edit:
dałbym głowę sobie uciąć, że można zablokować odczyt pliku flockiem...
michaeel
wiesz tak tez myslalem...ale to musialby dzialac tez tak ze jezeli ktos otworzy plik i np. nie zapisze a zamknie przegladarke to ten plik bedzie sie dalo edytowac smile.gif


flock stosuje w momencie zaraz przed zapisem (aby zapobiec np. kliknieciu przycisku zapisz w tym samym czasie winksmiley.jpg)
gszesiek
a może prawa dostępu winksmiley.jpg
(napisz jak już będziesz miał właściwe rozwiązanie)
michaeel
heh..rozwiazlem to moze nie tak jak chcialem ale mam..
  1. <?php
  2. if(file_exists("$plik_wrk"))
  3.  
  4. {
  5.  
  6. $uczen = str_replace("_"," ",$uczen);
  7. $teraz = date('Y.m.d H:i:s');
  8. $czas = filemtime($plik_wrk);
  9. $kosz = $czas + (* 60);
  10. $kosz_do = date('Y.m.d H:i:s',$kosz);
  11. $kiedy = date('H:i:s',$kosz);
  12.  
  13.  
  14. if($kosz_do > $teraz)
  15. {
  16. include("admin_menu.dat");
  17. echo "<center><table border=0 width=390 cellspacing=0 cellpadding=0 style='border: 1px solid #000000; background-color: #ececec;'><tr><td>";
  18.  
  19. die ("<center><p><p><img src=dimg/uwaga.png align=absmiddle><br>Uczeń <b>$uczen</b> aktualnie jest edytowany!<br><b>Spróbuj zalogować się po godz $kiedy!</b><br><br><a href=java script:back(1)>Wstecz</a></td></tr></table><p></center>");
  20. }
  21. else
  22. {
  23. unlink($plik_wrk);
  24. };
  25.  
  26. }
  27. ?>


dziala smile.gif moze nie tak jak chcialem..ale jest smile.gif
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.