Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]limitowanie downloadu plików
Forum PHP.pl > Forum > Przedszkole
dvhk
Witam wszystkich smile.gif
To mój pierwszy post na forum więc proszę o wyrozumiałość. W tematykę php dopiero wchodzę biggrin.gif A teraz do tematu.

Pracuje sobie nad takim mini CMS (taki pierwotny i bardzo prosty można powiedzieć bardzo łopatologiczny )
I napotkałem problem i nie mam pojęcia jak to ruszyć proszę o porady smile.gif
Chodzi o to iż wykonałem sobie system autoryzacji użytkowników oraz download i wszystko ładnie działa
tylko zastanawiam się jak limitować ilość pobieranych plików przez użytkowników??
Tzn przyznaję userowi na start 10pkt i za pobranie każdego odejmuje mu 1pkt (jeśli ma 0 nie ma możliwości pobierania)
Z skryptem jakoś sobie poradzę ale chodzi mi o pomoc w tym iż nie mogę limitować pobierania(nie mogę tego kontrolować)
tzn system punktacji działa ale tylko na takiej zasadzie ze za pobranie odejmuje punkt i jak ma zero pkt to link znika z profilu
ale jak wpisze się bezpośredni link do pliku to pobranie go jest możliwe :/ (mie mam pojęcia jak sobie z tym poradzić)
a miał by się wyświetlić komunikat iż nie ma pkt i pobranie nie jest możliwe.


Proszę bardzo was o pomoc bo na prawdę nie mam pomysłu jak to zrealizować
Dziękuję za każdą okazaną pomoc
InosU31
Nie wiem czy nie pomogla by SESJA (SESSION) bo to dziala tak ze jesli jestes zalogowany np. na www.xxx.pl/fotki/user/fotki.php - to jest twoj profil z fotkami - to masz dostep do tej strony jesli przeslesz linka komus innemu albo nie jestes zalogowany to mozna sobie wygenerowac taka strone np. "nie masz dostepu do tej czesci strony" i po kliknieciu w tego linka zamiast widziec fotki ktos zobaczy ten napis i tyle. Dodajesz do tego jakas instrukcje warunkowa ze jesli jest ten ktos zalogowany i ma wiecej niz 0 pkt to wtedy wyswietla mu sie ten plik w przeciwnym razie wyswietli mu sie napis ze ma 0 pkt.
Nie wiem czy o to ci chodzi

pozdrawiam
dvhk
wydaje mi się ze nie bedzie to działało ponieważ jeśli pobierze ktoś raz plik
www.mojawww.pl/plik.rar a nastepnie podeśle link innej osobie to pobranie pliku będzie nadal możliwe
Sesjami to można ograniczyć dostęp do treści na www ale czy do plików??

Ciężka sprawa googluje i nic smile.gif z tego co zauważyłem to często fora maja takie zabezpieczenia że jeśli nie jesteś zalogowany
lub nie masz odpowiedznich uprawnień to wpisanie bezpośredniego linku nie pomaga.



pozdrawiam czekam na dalsze sugestie
jeśli się mylę prosze o sprostowanie party.gif
dziurson
musiałbyś stworzyć sobie jakąś regułę w htaccess, tzn. ktoś chce wywołać bezpośredni link i Ty wtedy przekierowujesz go na stronę główną. Niestety moja wiedza o htaccess nie jest za wielka i nie dam gotowego rozwiązania
dvhk
oki thx za podpowiedź coś tam poczytam o htaccess
ale jeśli ktoś bardziej dokladnie zna temat to proszę o rozwinięcie pozdrawiam i dziękuję bardzo guitar.gif powoli odbijam sie od dna z problemem


------------------------------------------------------------------------------------------------------------
znalazłem jeszcze skrypt który mimo iż pobieramy plik nie pokazuje nazwy pliku(ani ścieżki do niego) tutaj zamieszczam kod który znalazłem
niestety nie bardzo wiem jak go użyć bo to jest tylko wycinek ale może komuś coś podpowie

  1. | Send attachment
  2. Line 46: if ( isset( $_GET['attachment']))
  3. Line 62: * send attachment
  4. Line 65: $attachment = $_GET['attachment'];
  5. Line 65: $attachment = $_GET['attachment'];
  6. Line 66: settype( $attachment, 'integer');
  7. Line 69: * we will select attachment from sql
  8. Line 72: $attach_query = $mysql -> query( "SELECT a.*, t.* FROM attachments a LEFT JOIN attachments_types t ON a.attachment_type = t.attachments_type_id WHERE a.attachment_id = '$attachment' AND a.attachment_post > '0'");
  9. Line 72: $attach_query = $mysql -> query( "SELECT a.*, t.* FROM attachments a LEFT JOIN attachments_types t ON a.attachment_type = t.attachments_type_id WHERE a.attachment_id = '$attachment' AND a.attachment_post > '0'");
  10. Line 72: $attach_query = $mysql -> query( "SELECT a.*, t.* FROM attachments a LEFT JOIN attachments_types t ON a.attachment_type = t.attachments_type_id WHERE a.attachment_id = '$attachment' AND a.attachment_post > '0'");
  11. Line 72: $attach_query = $mysql -> query( "SELECT a.*, t.* FROM attachments a LEFT JOIN attachments_types t ON a.attachment_type = t.attachments_type_id WHERE a.attachment_id = '$attachment' AND a.attachment_post > '0'");
  12. Line 72: $attach_query = $mysql -> query( "SELECT a.*, t.* FROM attachments a LEFT JOIN attachments_types t ON a.attachment_type = t.attachments_type_id WHERE a.attachment_id = '$attachment' AND a.attachment_post > '0'");
  13. Line 72: $attach_query = $mysql -> query( "SELECT a.*, t.* FROM attachments a LEFT JOIN attachments_types t ON a.attachment_type = t.attachments_type_id WHERE a.attachment_id = '$attachment' AND a.attachment_post > '0'");
  14. Line 72: $attach_query = $mysql -> query( "SELECT a.*, t.* FROM attachments a LEFT JOIN attachments_types t ON a.attachment_type = t.attachments_type_id WHERE a.attachment_id = '$attachment' AND a.attachment_post > '0'");
  15. Line 86: $attach_forum_query = $mysql -> query( "SELECT f.forum_id FROM posts p LEFT JOIN topics t ON p.post_topic = t.topic_id LEFT JOIN forums f ON t.topic_forum_id = f.forum_id WHERE p.post_id = '".$attach_result['attachment_post']."'");
  16. Line 102: header('Content-type: '.$attach_result['attachments_type_mime']);
  17. Line 106: if ( $_GET['thumb'] && in_array( $attach_result['attachments_type_mime'], $proper_mimes)){
  18. Line 112: $thumb_file = str_ireplace( '.', '_thumb.', $attach_result['attachment_file']);
  19. Line 117: //header('Content-Disposition: attachment; filename="'.$attach_result['attachment_name'].'"');
  20. Line 117: //header('Content-Disposition: attachment; filename="'.$attach_result['attachment_name'].'"');
  21. Line 123: //header("Content-length: ".filesize( ROOT_PATH.'uploads/'.$attach_result['attachment_file']));
  22. Line 124: //header('Content-Disposition: attachment; filename="'.$attach_result['attachment_name'].'"');
  23. Line 124: //header('Content-Disposition: attachment; filename="'.$attach_result['attachment_name'].'"');
  24. Line 126: readfile(ROOT_PATH.'uploads/'.$attach_result['attachment_file']);
  25. Line 136: $mysql -> update( array( 'attachment_downloads' => $attach_result['attachment_downloads'] + 1), 'attachments', "`attachment_id` = '$attachment'");
  26. Line 136: $mysql -> update( array( 'attachment_downloads' => $attach_result['attachment_downloads'] + 1), 'attachments', "`attachment_id` = '$attachment'");
  27. Line 136: $mysql -> update( array( 'attachment_downloads' => $attach_result['attachment_downloads'] + 1), 'attachments', "`attachment_id` = '$attachment'");
  28. Line 136: $mysql -> update( array( 'attachment_downloads' => $attach_result['attachment_downloads'] + 1), 'attachments', "`attachment_id` = '$attachment'");
  29. Line 136: $mysql -> update( array( 'attachment_downloads' => $attach_result['attachment_downloads'] + 1), 'attachments', "`attachment_id` = '$attachment'");
  30. Line 138: $cache -> flushCache( 'attachments_'.$attach_result['attachment_post']);
  31. Line 138: $cache -> flushCache( 'attachments_'.$attach_result['attachment_post']);
  32. Line 142: header("Content-length: ".filesize( ROOT_PATH.'uploads/'.$attach_result['attachment_file']));
  33. Line 144: if ( !in_array( $attach_result['attachments_type_mime'], $proper_mimes))
  34. Line 145: header('Content-Disposition: attachment; filename="'.$attach_result['attachment_name'].'"');
  35. Line 145: header('Content-Disposition: attachment; filename="'.$attach_result['attachment_name'].'"');
  36. Line 147: readfile(ROOT_PATH.'uploads/'.$attach_result['attachment_file']);
  37. Line 154: * no acess to attachment
  38. Line 159: $main_error -> message = $language -> getString( 'post_attachments_notfound');
  39. Line 168: $main_error -> message = $language -> getString( 'post_attachments_notfound');
  40. Line 177: $main_error -> message = $language -> getString( 'post_attachments_notfound');
InosU31
to moze przekonwertuj sobie adres do pliku : www.mojastrona.pl/plik.rar np. na:

  1. www.mojastrona.pl/?page=sciagaj&grupa=archiw&id_programu=3


ja tak sobie zdjecia wyswietlam (z miniatury na duze) niestety narazie poza zdjeciami wyswietla mi sie strona ale grunt ze dziala;-)

Juz tlumacze mniej wiecej ja ja mam.

Wiec zapisuje na dysk te zdjecia - przez formularz - i wrzucam odrazu sobie do bazy nazwe tego zdjecia, lokalizacje, wielkosc itd. (poczytaj o $_FILES). pozniej jako link ukladam sobie cos takiego jak podalem wyzej. Nastepnie cos takiego :
  1. $sql =mysql_query ("SELECT * FROM tabela WHERE id_tego_programu = '".$_GET['id_programu']."'");
  2.  
  3. foreach ($sql as $record => $key)
  4. {
  5. $lokalizacja_pliku_na_dysku = "/programy/arch/cos.rar";
  6. $lokalizacja = $record['lokalizacja'];
  7. $nazwa_pliku = $record['nazwa']; // nie wiem czy ma byc $record czy $key ale mozna to sprawdzic i zamienic w razie w;-)
  8.  
  9. if ($lokalizacja_pliku_na_dysku == $lokalizacja.$nazwa_pliku)
  10. {
  11. echo "dziekuje za pobranie pliku";
  12. //i tutaj jakas instrukcja badz cos co pobierze ci ten plik (a przynajmiej sprawi ze mona go pobrac) - ja
  13. u siebie wyswietlam zdjecia w nowym oknie na takiej zasadzie;-) i tu mam linka do zdjecia
  14. }
  15.  
  16. }
  17.  


cos takiego i wtedy jak wklei ktos takiego linka przy np. uzytej sesji to go nie sciagnie;-)

tak teoretycznie mi sie zdaje

pozdrawiam
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.