Cześć,
Mam stronkę, na której klienci mogą się logować i przeglądać swoje pliki wideo (znajdujące się na tym serwerze). Wszystko realizowane jest przez wtyczkę VLC. Mam problem ze sprawdzeniem, czy dany klient może otrzymać określony plik video, czy nie. Od strony użytkownika wygląda to tak:
$(this).closest(".recording_wrapper").find(".recording_preview").append(
'<div class="embed_vlc_wrapper">' +
'<embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" version="VideoLAN.VLCPlugin.2"' +
'version="VideoLAN.VLCPlugin.2"' +
'target="../PHP/get_recording.php?file=' + $(this).closest(".recording_wrapper").attr("file") + '&camid=' + $(this).closest(".recording_wrapper").attr("camera_id") + '"' +
'pluginspage="http://www.videolan.org"' +
'/>' +
'</div>'
);
Na tym etapie sesja już jest uruchomiona poprzez session_start(). Niestety... kiedy wywołuję tę funkcję w pliku get_recording.php, tworzy się nowa sesja - istniejąca jest ignorowana. Przez to wszystkie zmienne $_SESSION z poziomu skryptu get_recording.php są niewidoczne, bo ID sesji się nie zgadza. Na 100% nie jest to problem po stronie ustawień serwera, czy błędu w kodzie. Stronka ta jest front-endem do całego serwera streamingowego, oglądanie nagrań jest tylko jedną z podstron. Wszystkie skrypty poprawnie rozpoznają istniejącą sesję przy wywołaniu session_start() oprócz skryptu get_recording.php.
Jestem prawie pewien, że problemem jest niemożność przekazania ciastka z ID sesji do tego skryptu. Dlaczego? Ponieważ skrypt jest wywoływany przez program VLC zainstalowany na komputerze klienta, a nie skrypt z kodem który widać powyżej.
Tak więc nie za bardzo mam jak to zabezpieczyć... nie mogę zawrzeć ID sesji w URL i pobrać go przez $_GET, bo narazi mnie to np. na session hijacking. Z drugiej strony MUSZĘ jakoś przekazać ID sesji do tego skryptu przy próbie odtworzenia wideo na stronie, żeby skrypt wiedział z jakim użytkownikiem ma do czynienia i ewentualnie odmówił mu wydania pliku, jeśli nie będzie on należał do aktualnie zalogowanego użytkownika.
Myślałem o wysyłaniu ID sesji do bazy SQL i pobierania go w get_recording.php, jednak nie jest to rozwiązanie idealne i na pewno można to inaczej rozwiązać. Macie jakiś pomysł?