Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Upload,download plikow z uwzglednieniem przynaleznosci do grup
kedi1989
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.03.2013

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


Witam serdecznie !

Chciałbym zasięgnąć pomocy odnośnie stworzenia upload'u , download'u plików z uwzględnieniem przynależności użytkowników do danej grupy, kursów.

Jestem dość początkującym koderem php, robię pracę inżynierską , system na zasadzie zarządzania studentami i wymiany prac, ocen, komentarzy pomiędzy studentami a wykładowcą.

Mam już zrobiony system logowania, rejestracji, sprawdzania obecności automatycznej po zalogowaniu się studenta itd.. Zrobiłem już również możliwość tworzenia grup i kursów przez wykładowcę do których mogą podłączać się studenci.
Po dołączeniu przez studenta do danej grupy i kursu chciałbym aby pliki które upload'uje wykładowca były widoczne dla danej grupy i kursu od strony studenta.

Szukałem już podobnych tematów ale większość kończy się na tematyce czy lepiej przechowywać pliki w bazie danych co jest złe czy lepiej na serwerze w plikach.

Otóż chciałbym aby wykładowca przy uploadzie mógł z listy rozwijanej , wybrać również daną grupę i kurs dla której udostępniony będzie plik oraz date w której ten kurs będzie wyświetlany. Potem na zasadzie sprawdzenia w bazie danych, przynależności danego studenta do grupy i kursu, plik wyświetlał się do pobrania dla odpowiednich osób i w odpowiednim czasie.

Chciałbym aby pliki były przechowywane na serwerze a nie w bazie danych. Jak to mniej więcej zrobić ? Rozumiem , że dużo operacji powinno odbywać się na zasadzie sprawdzania wartosci w bazie danych oraz dopisywaniu ich do odpowiedniej tabeli.

Czy mógłby ktoś polecić mi jakiś konkretny przykład? Artykuł ? Odnośnie uplodu i downloadu plików z uwzględnieniem jakiś praw?

Mam jeszcze jedno pytanie.

System po zalogowaniu przekierowuje na podstawie "roli" w tabeli users odpowiednio jeżeli jest to student to na podstronę panelu studenta oraz jeżeli jest to administrator to na podstronę panelu administratora. Rozwiązałem to za pomocą sesji, która na każdej podstronie należącej do studenta bądź admina sprawdza rolę i wyświetla zawartość danej podstrony. Uniemożliwia to przejście na inną podstronę nawet po wpisaniu ze strony studenta np. adresu podstrony administratora do przeglądarki gdyż na każdej podstronie sprawdzany jest warunek na podstawie przypisanej do sesji roli.

Czy to dobre rozwiązanie ?

  1.  
  2. if($_SESSION['rola'] === '1')
  3. {
  4. echo " TO JEST PODSTRONA STUDENTA ORAZ LINKI ";
  5.  
  6. echo '<a href="student_dolacz.php">Dolacz do grupy i kursu</a><br/>';
  7. echo '<a href="logout.php">Wyloguj</a><br/>';
  8.  
  9. }


Ten post edytował kedi1989 16.03.2013, 17:49:29
Go to the top of the page
+Quote Post
Michael2318
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Podsumowując, oczekujesz od nas pomysłu, jak stworzyć download rozdzielony dla poszczególnych grup?
No więc tak, na początek będziesz potrzebował stworzyć formularz z uploadem (chyba dla wykładowcy, jeśli dobrze zrozumiałem):
  1. <input type="file" name="file">


Skoro masz rozpoznawanie pomiędzy student/wykładowca to na pewno poradzisz sobie z odpowiednim zwarunkowaniem ww. inputa, tak aby wyświetlał się dla wykładowcy.

Następnie przy uploadzie, przyda się tabelka:
Kod
| ID_DOWNLOAD | REAL_NAME | FAKE_NAME | GROUP_ID |


Przy uploadzie zmieniasz standardową nazwę pliku na coś trudnego, jakiś hash z md5 może być i teraz tak:
tworzysz dwie nazwy:
a) nazwa prawdziwa, którą przypisujesz do uploadowanego pliku,
(IMG:style_emoticons/default/cool.gif) nazwa fikcyjna, przyda się przy autoryzacji czy ten ktoś na bank jest w danej grupie.

Potem uploadujesz plik na serwer, już ze zmienioną nazwą, a do bazy wklepujesz takie zapytanie:
  1. INSERT INTO `tabela` (`real_name`, `fake_name`, `group_id`) VALEUS ('hash_prawdziwy', 'hash_zastepczy', 'id_grupy_dla_ktorej_download_jest_aktywny');


Teraz przy downloadzie, np. link: http://mojastrona.pl/download.php?id=FAKE_NAME

w pliku:
Pobierasz z GETa FAKE_name:
  1. $sql = "SELECT * FROM `tabela` WHERE fake_name = '".$_GET['id']."'";
  2. // bla bla
  3. if ( $row['group_id'] !== $user['group_d'] )
  4. {
  5. die('sorry, ale nie nalezysz do tej grupy, nie ma dla Ciebie downloadu');
  6. }
  7. else
  8. {
  9. }


Coś mniej więcej takiego, tyle że dla katalogu /downloady/ jeszcze wrzuć jakiś sensowny htaccess żeby Ci nie listował katalogu.

Ten post edytował Michael2318 16.03.2013, 17:56:47
Go to the top of the page
+Quote Post
kedi1989
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.03.2013

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


AA to rozumiem że fake name jest po to aby , nie autoryzowana osoba nie wpisała sobie real name do przeglądarki i nie pobrała sobie pliku ?

No dobra a jeżeli chodzi o moje drugie pytanie ? Czy to dobry sposób na rozdzielenie admina i studentów ? Poprzez sprawdzanie roli na każdej podstronie ?
Go to the top of the page
+Quote Post
Michael2318
post
Post #4





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Nie ma możliwości zmiany sesji z poziomu przeglądarki, więc czemu nie? (IMG:style_emoticons/default/smile.gif) Jest OK. Takie coś można zrobić albo na podstawie bazy albo na podstawie innych method (w tym wypadku Twojej - sesje).
Wszystko skupia się do tego samego punktu:

  1. $sql = "SELECT * FROM `users` WHERE user_id = ".$zmienna_z_id_obecnie_zalogowanego;
  2. // dalsze instrukcje
  3. $rola = row['rola'];
  4.  
  5. if ( $rola == 1 )
  6. {
  7. echo 'costam';
  8. }


Jak widać - w linii 4 zaczyna się ten kod, który masz u Ciebie:

  1. $rola = $_SESSION['rola'];
  2.  
  3. if ( $rola == 1 )
  4. {
  5. echo 'costam';
  6. }


Podsumowując - na jedno wychodzi bo jeśli użyłbyś rozwiązania z bazą to ID i tak identyfikujesz po sesjach. Jest ok (IMG:style_emoticons/default/smile.gif)

EDIT:

Cytat
AA to rozumiem że fake name jest po to aby , nie autoryzowana osoba nie wpisała sobie real name do przeglądarki i nie pobrała sobie pliku ?


Dobrze rozumiesz.

Ten post edytował Michael2318 16.03.2013, 18:49:12
Go to the top of the page
+Quote Post
kedi1989
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.03.2013

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


To super dziekuję (IMG:style_emoticons/default/smile.gif) Przynajmniej jedna wątpliwość z głowy.
Jestem początkującym koderem, na początku starałem się uczyć wszystkiego ale doszedłem do wniosku że po prostu postawie sobie cele i zacznę pisać cegiełka po cegiełce, szukając rozwiązań na forach i kursach (IMG:style_emoticons/default/smile.gif)
I jakoś tak powoli mi idzie.

Proszę o nie zamykanie tematu, będe miał pewnie jeszcze jakieś pytania wraz z rozwojem skryptu (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 3.10.2025 - 21:39