Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] System rejestracji, a userzy i pliki
dworek
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.10.2009

Ostrzeżenie: (0%)
-----


Witam wszystkich serdecznie jako, że nowy tu jestem.

Mam problem z wymyśleniem koncepcji na poniższy problem.

Napisałem sobie system rejestracji/logowania użytkowników oparty na bazie MySQL (rekordy: login, hasło, mail, data rejestracji, data logowania). Po rejestracji - użytkownik generuje sobie folder i kilka plików.
Mój problem polega na tym, iż chciałbym napisać coś co będzie czyściło serwer z tych plików jeśli np. minie 6 miesięcy od ostatniego logowania. Datę ostatniego logowania każdego mam w bazie. I dodatkowo usunie użytkownika z bazy.

Co do czyszczenia bazy mam na to koncepcję i potrafię sobie to napisać, tak do plików za nic nie mogę wymyślić... Jeśli nie da się tego zrobić automatycznie przez PHP to może jakiś skrypt odpalany ręcznie? Powiedzmy, że będzie plik tekstowy z nazwami tych folderów, a skrypt je z tego pliku odczyta i usunie? worriedsmiley.gif Już sam nie wiem...

W PHP jestem raczej początkujący i sporo szukałem na ten temat w sieci... bez rezultatu większego. Proszę o naprowadzenie na trop i ewentualne przedstawienie jakiegoś przykładu.

Z góry dziękuję za pomoc.
Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
bobo168
post
Post #2





Grupa: Zarejestrowani
Postów: 201
Pomógł: 9
Dołączył: 23.08.2006

Ostrzeżenie: (0%)
-----


Po prostu zrób tabelka w bazie w której będziesz miał wszystkie te pliki zapisane (scieżka do katalogu) + id użytkownika do którego nalezy dany katalog. Zapytanie sprawdzające czy mineło pół roku od ostatniego logowania, pobierasz id takich userów nastepnie szukasz w tabelce z katalogami katalogów tych że userów i podstawisz scieżke do takiej funkcji:

  1. <?
  2.  
  3. //USUWA WSZYSTKIE PLIKI Z KATALOGU
  4.  
  5. $katalog = "$delete";
  6.  
  7. if(glob("$katalog/*")) //sprawdza czy katalog jest pełny. jezeli tak wyswietla ponizsza linię
  8. {foreach (glob("$katalog/*") as $filename){if($file != '$katalog' && $file != '..'){}unlink("$filename");}}
  9.  
  10. //USUWA KATALOG
  11.  
  12. rmdir("$delete");
  13.  
  14. echo "<br/>Katalog został pomyślnie usunięty!";
  15. ?>


A co do uruchomiania tego to albo zainteresuj się cronem, albo po prostu odpalaj co jakiś czas ręcznie.
Go to the top of the page
+Quote Post
dworek
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.10.2009

Ostrzeżenie: (0%)
-----


Myślałem nad tym przez weekend, ale nie chce mi to wyjść...

Można troszeczkę naprowadzić?

Mam tabelkę w bazie... (id, login, password, mail, datar, datal) Przy czym datar to data rejestracji, a datal to logowania (zmienia się co logowanie usera)

Mam teraz zrobić nową tabele z informacjami o plikach. Jak ona ma mniej więcej wyglądać? i Jak napisać skrypt w php do kasacji tego wszystkiego. Ewentualnie jak powiązać to z tym kodem wyżej.

Pozdrawiam.
Go to the top of the page
+Quote Post
jmail
post
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


a w jaki sposób generujesz klatalog dla użytkownika?
Go to the top of the page
+Quote Post
dworek
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.10.2009

Ostrzeżenie: (0%)
-----


Katalogi mkdir, a pliki pobieram do kopiowania i fopen'em wkładam do folderów (kopiuje).
Go to the top of the page
+Quote Post
jmail
post
Post #6





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


eh. chodziło mi o generowanie nazwy katalogu :/
Go to the top of the page
+Quote Post
dworek
post
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.10.2009

Ostrzeżenie: (0%)
-----


Nazwa katalogu jest pobierana z pola input podczas rejestracji.

W wielkim skrócie poniżej...

  1. <input class=login type=text name=login></input>
  2. $login = $_POST['login'];
  3. mkdir ($login, 0777);
Go to the top of the page
+Quote Post
jmail
post
Post #8





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


no to zrób tak.

pobierz dane usera z bazy

jak bobo CI radził usuń katalog o nazwie loginu usera

usuń użytkownika z bazy

ustaw sobie w jakimś configu ostatnie czyszczenie i w skrypcie włącz czyszczenie nie wiem. raz na miesiąc

Go to the top of the page
+Quote Post
dworek
post
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.10.2009

Ostrzeżenie: (0%)
-----


Napisałem coś takiego ale zwraca dziwny błąd... według was powinno to działać?

  1. $db = mysql_connect( $db_server, $db_user, $db_pass );
  2. mysql_select_db( $db_name );
  3.  
  4. //USUWA WSZYSTKIE PLIKI Z KATALOGU
  5.  
  6. $katalog = mysql_query('SELECT `login` FROM `users` WHERE datal > 2009-10-10');
  7.  
  8. if(glob("$katalog/*")) //sprawdza czy katalog jest pełny. jezeli tak wyswietla ponizsza linię
  9. {foreach (glob("$katalog/*") as $filename){if($file != '$katalog' && $file != '..'){}unlink("$filename");}}
  10.  
  11. //USUWA KATALOG
  12.  
  13. rmdir("$katalog");
  14.  
  15. echo "<br/>Katalog został pomyślnie usunięty!";



a błąd wyświetla taki:

Cytat
Warning: rmdir(Resource id #9) [function.rmdir]: No such file or directory in /var/www/sites/delete.php on line 17


Nie mam koncepcji sciana.gif
Go to the top of the page
+Quote Post
jmail
post
Post #10





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


spróbuj tak

  1.  
  2. $db = mysql_connect( $db_server, $db_user, $db_pass );
  3. mysql_select_db( $db_name );
  4.  
  5. //USUWA WSZYSTKIE PLIKI Z KATALOGU
  6.  
  7. $katalog_ = mysql_fetch_array(mysql_query('SELECT `login` FROM `users` WHERE datal > 2009-10-10'));
  8. $katalog = $katalog_['login'];
  9.  
  10. if(glob("$katalog/*"))
  11. {
  12. foreach (glob("$katalog/*") as $filename){
  13. if($file != '$katalog' && $file != '..'){
  14. }
  15. unlink("$filename");
  16. }
  17. }
  18. rmdir("$katalog");
  19. echo "<br/>Katalog został pomyślnie usunięty!";
  20.  
Go to the top of the page
+Quote Post
dworek
post
Post #11





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.10.2009

Ostrzeżenie: (0%)
-----


Bardzo ładnie zadziałało smile.gif
Mam jeszcze jedno pytanie co do tego wyżej...

W jaki sposób zrobić pętle by usunęło się wszystko, a nie tylko 1 rekord i czy da się zrobić SELECT i DELETE w jednym zapytaniu?

Mówiąc wszystko mam na myśli np. 50 użytkowników.
Go to the top of the page
+Quote Post
jmail
post
Post #12





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


  1.  
  2. $db = mysql_connect( $db_server, $db_user, $db_pass );
  3. mysql_select_db( $db_name );
  4.  
  5. //USUWA WSZYSTKIE PLIKI Z KATALOGU
  6.  
  7. $katalogQuery = mysql_query('SELECT `login` FROM `users` WHERE datal > 2009-10-10');
  8. while($katalog_ = mysql_fetch_array($katalogQuery)){
  9. $katalog = $katalog_['login'];
  10.  
  11. if(glob("$katalog/*"))
  12. {
  13. foreach (glob("$katalog/*") as $filename){
  14. if($file != '$katalog' && $file != '..'){
  15. }
  16. unlink("$filename");
  17. }
  18. }
  19. rmdir("$katalog");
  20. }
  21. echo "<br/>Katalogi zostały pomyślnie usunięte!";
  22.  
  23.  
Go to the top of the page
+Quote Post
dworek
post
Post #13





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.10.2009

Ostrzeżenie: (0%)
-----


Ok, wszystko działa jak trzeba smile.gif
Dopisałem sobie do tego jeszcze wyrzucanie delikwentów z bazy danych i ładnie działa. Dziękuję jmail za szybką pomoc i bobo168 za naprowadzenie na temat. Bez was pewnie bym się jeszcze z tym męczył tongue.gif . Oczywiście odpowiednia nagroda dla was winksmiley.jpg

Pozdrawiam i dziękuję.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 19:43