[php]problem z downoland


(batmomobil) #1

Witam,mam takie pytanko jak zrobić by link downoland po kliknięciu wyświetlił informację:downoland po zalogowaniu! !!

9. Searchin[/code]

(Grzelix) #2

1.

9. Searchin[/code]

i index.php sprawdzasz czy klient jest zalogowany jeśli tak to redirect na link Eminem- Searchin.mp3

jeśli nie to odpowiedni komunikat

  1. javascirpt generowany po stronie serwera php ze zmienną np 'islogon' i następnie zdarzenie onclick z alertem w przypadku gdy klient jest nie zalogowany.

teraz nie jestem pewien ale jeśli zdarzenie zwraca false to nie przejdzie się do linku ale to trzeba by sprawdzić


(Slawek1082) #3

javascript to nie jest dobry pomysł ponieważ zawsze można taki kod usunąć np. przy pomocy firebug'a czy narzędzi deweloperskich w innych przeglądarkach.

Zobacz np. na stronie: http://forum.php.pl/lofiversion/index.php/t68481.html jest opisane jak zrobić taką walidację po stronie serwera i przesłanie pliku do użytkownika dopiero po spełnieniu danego warunku.


(batmomobil) #4

(Drobok) #5

Najprościej to zrobić tak, że sprawdzasz, czy jest zalogowany. Po czym jeśli jest dajesz normalny link, a jeśli nie dajesz do podstrony, na której pisze by się zalogować.


(batmomobil) #6

Zgadza się tylko mi chodzi o coś takiego bo linki są widoczne dla wszystkich i tworzą listę,a mnie zależy by użytkownik nie zalogowany nie mógł skorzystać z downoland,tylko musiał się zarejstrować by ściągnąć.Jak sprawdzić czy jest zalogowany i wywalić odpowiedni komunikat.


(Drobok) #7

Nie możesz mieć linku w takiej postaci, dajesz je do innego php, a z niego dopiero przekierowanie na właściwy plik wg geta z linku.


(Grzelix) #8

Widzę że poprzedni post był zbyt dużym skrótem myślowym. Chcesz prościej z przykładame proszę:

link 

$('#myLink').click(function(e) {

	if(!islogon){

	alert("Musisz się zalgować aby pobrać ten plik");

    e.preventDefault();

    }

});

[/code]




a po postronie serwera sprawdzasz według sesji czy jest zalogowany czy nie i dodajesz taki wpis do strony:

[code]


(Drobok) #9

grzelix , a co jeśli ktoś sobie wpisze link w pasek adresu ? ^^


(Grzelix) #10

@drobok chyba nie muszę ci odpowiadać na to pytanie.

Ja staram się pomagać stricte według sformułowanej prośby. batmobil zadał następujące pytanie:


(batmomobil) #11

i czy na początku podstrony trzeba sprawdzić czy jest zalogowany użytkownik,czy wystarczy ten scrypt.Jaki warunek sprawdzający??$_SESSION['nick'] = $login;

$_SESSION['haslo'] = $haslo;


(Grzelix) #12

@batmobil masz jakiekolwiek pojęcie o php html js czy próbujesz coś zrobić wpisując fgramenty kodu z forum do swoich plików i czekasz aż ktoś poda kompletne rozwiązanie.

skoro używasz sesji to gdzieś na początku pliku generowanej strony masz

session_start();

po tym fragmencie możesz sprawdzić czy zmienna Ssession['nick'] jest zainicjowana np funkcją isset.

to załatwia sprawę czy użytkownik jest zalogowany. Dalej zgodnie z poprzednim postem dodajesz do strony skrypt inline ze zmienną posiadającą wartość boolowską o tym czy użytkownik jest zalogowany. Skrypt ten może być między znacznikami

czyli w nagłówku strony.

Następnie w ciele strony dodajesz swój link. A po linku (tutaj jest ważna kolejność) dodajesz kolejny skrypt który blokuje pobieranie dla nie zalogowanych. Jest to skrypt wykorzystujący biblioteką jquery więc tą biblioteką też musiz dołączyć do strony.

Oczywiście skrypt powinien zostaj ujętyw w znaczniki


(batmomobil) #13

zrobiłem tak jak napisałeś z przekazaniem po przez GET,dziękuję za pomoc,już sobie poradziłem :-D.Tylko czy to będzie bezpiecznie,ponieważ w pasku adresu wyświetla jaki link,czy można to jakoś zmienić,czy tak może być??? :smiley:


(Maks Baum) #14

Przekierowanie na rzeczywisty link do pliku jest bezsensowne bo to żadne zabezpieczenie pliku - takie głębokie ukrycie

Do tego albo serwujesz dane poprzez php - tj on odczytuje rzeczywisty plik i przesyła go dalej - ale rozwiązanie to jest średnio udane w przypadku dużych plików / często ściąganych

Lepiej wykorzystać do tego Apache, choć musisz mieć do tego na 99% przynajmniej vpsa.