Jak zrobić licznik pobrań plików ze strony, PHP Skrypty


[MySQL][PHP] Jak zrobić licznik pobrań plików ze strony?

0x01 graphic

Chcesz stworzyć skrypt, który zliczy ile razy użytkownicy pobrali określony plik z Twojego serwisu lub sekcji download.

0x01 graphic

Jeżeli prowadzisz serwis udostępniający użytkownikom pliki do pobrania, z pewnością przyda Ci się skrypt, który policzy ile razy poszczególne pliki zostały pobrane.

Mając takie informacje możesz stworzyć ranking najpopularniejszych plików w serwisie i ułożyć je według popularności, aby najczęściej pobierane były na samym początku listy. Zobacz jak to osiągnąć.

Zakładanie bazy i tabeli

Jeżeli nie masz utworzonej bazy danych w MySQL, możesz ją założyć wykonując poniższy skrypt. Zakłada on bazę danych o nazwie baza1. Wystarczy, że skrypt użyjesz raz, potem nie będzie już potrzebny.

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

$wynik = mysql_query("CREATE DATABASE baza1",$baza);

if ($wynik) echo "Baza została stworzona";

mysql_close($baza);

}

?>

Jeżeli masz już założoną bazę danych, czas aby założyć tabelę o nazwie kliki, w której znajdą się liczniki kliknięć dla poszczególnych plików.

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

$wynik = mysql_select_db("baza1",$baza);

if ($wynik) {

$wynik = mysql_query("CREATE TABLE kliki (

id int not null primary key,

nazwa char(100) not null unique,

licznik int not null default '0'

)", $baza);

if ($wynik) echo "Tabela została stworzona";

}

mysql_close($baza);

}

?>

Wystarczy, że użyjesz skryptu tylko raz, potem nie będzie już potrzebny. Szerszy opis zakładania baz danych i tabel znajdziesz w osobnych poradach. Jeżeli masz już bazę o innej nazwie musisz w pozostałych skryptach zmienić nazwę baza1 na własną.

Mamy już stworzoną tabelę przechowującą unikalny numer pliku id (liczba całkowita), który nie może się powtarzać, jego nazwę nazwa (do 100 znaków), która również jest unikalna i nie może być pusta oraz pole licznik dla każdego z plików, który nie może być pusty (domyślna wartość to zero).

Zarządzanie plikami

Aby do tabeli dodać pliki, które znajdą się w serwisie i będą miały zliczane kliknięcia, posłuż się następującym skryptem:

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

$wynik = mysql_select_db("baza1",$baza);

if ($wynik) {

mysql_query("INSERT INTO kliki VALUES (1,'plik1.zip',0)", $baza);

mysql_query("INSERT INTO kliki VALUES (2,'plik2.exe',0)", $baza);

mysql_query("INSERT INTO kliki VALUES (3,'plik3.jpg',100)", $baza);

// mysql_query("DELETE FROM kliki WHERE id=3", $baza);

// mysql_query("UPDATE kliki SET nazwa='nowanazwa.exe' WHERE id=3", $baza);

}

mysql_close($baza);

}

?>

Polecenie języka SQL o nazwie INSERT INTO nazwaTabeli umieszcza nowy rekord w tabeli o wartościach podanych za poleceniem VALUES. Pierwsze pole to unikalne numery id pliku, drugie to dokładna nazwa pliku (identyczna jak nazwa na dysku, z rozróżnieniem na małe i duże litery), trzeci parametr to licznik, mający wartość 0.

Możesz podać od razu inną wartość licznika. W przykładzie plik o numerze 3 ma licznik od razu ustawiony na 100, bo zakładam, że wcześniej plik został pobrany już 100 razy i nie chcę zaczynać liczenia od zera.

Jeżeli chcesz skasować z listy jakiś plik usuń komentarz z polecenia DELETE FROM, który kasuje z tabeli plik o określonym numerze id. Polecenie UPDATE pozwala zmienić nazwę pliku, gdyby trzeba było tego dokonać.

Powyższy skrypt wykonuj tylko wtedy, gdy chcesz dodać, zmienić lub kasować listę plików. W innych wypadkach nie będzie potrzebny.

Wyświetlanie plików i liczników na stronie

Poniższy skrypt umieść w pliku index.php, w miejscu, gdzie chcesz udostępnić pliki do pobrania. Wyświetla on na stronie nazwy plików i linki do nich, a obok pokazuje ile razy poszczególne pliki zostały pobrane.

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

$wynik = mysql_select_db("baza1",$baza);

if ($wynik) {

$sql="SELECT * FROM kliki ORDER BY licznik DESC";

$wynik = mysql_query($sql,$baza);

mysql_close($baza);

for ($i=0;$i<mysql_num_rows($wynik);$i++) {

list($bid, $bnazwa, $blicznik) = mysql_fetch_row($wynik);

echo "<br>- <a href=\"pobierz.php?id=$bid\">$bnazwa</a> [$blicznik]";

}

} else { echo "Wybranie bazy danych nie było możliwe..."; }

} else { echo "Połączenie do MySQL nie było możliwe..."; }

?>

Na ekranie po wykonaniu skryptu zobaczysz coś w stylu:

- plik6.jpg [11]

- plik1.zip [5]

- plik2.exe [3]

gdzie nazwy plików będą odnośnikami. Po kliknięciu nazwy pliku nastąpi pobranie go i zwiększenie licznika pobrań o 1. Tym razem za pomocą polecenia SQL:
"SELECT * FROM kliki ORDER BY licznik DESC" pobieramy (SELECT) z bazy kliki (FROM kliki) wszystkie (*) rekordy sortując je (ORDER BY) malejąco (DESC) według pola licznik.

Poszczególne rekordy zostają zamienione na zmienne $bid, $bnazwa i $blicznik, a następnie umieszczone w odpowiednim fragmencie kodu HTML.

Pobranie pliku i zwiększenie licznika.

Poprzedni skrypt numer pliku kieruje do skryptu pobierz.php?id=numer, przekazuje mu numer pliku do pobrania. Pozostała nam więc jeszcze jedna część układanki - skrypt, który wyśle plik do użytkownika i zwiększy licznik o 1.

Poniższy kod (i tylko ten kod, nic więcej) umieść w pliku pobierz.php.

<?

if ($id) {

$baza = mysql_connect("localhost", "user", "password");

mysql_select_db("baza1",$baza);

mysql_query("UPDATE kliki SET licznik=licznik+1 WHERE id=$id", $baza);

$wynik = mysql_query("SELECT nazwa FROM kliki WHERE id=$id", $baza);

mysql_close($baza);

}

if ($wynik) {

$w = mysql_fetch_row($wynik);

$plik= $w[0];

if (($plik<>"")and(file_exists("pliki/$plik"))) {

header("location: pliki/$plik"); exit;

}

}

header("location: index.php"); exit;

?>

Jeżeli zostanie przekazany numer identyfikacyjny pliku (wywołanie następuje w poprzednim skrypcie index.php z listą plików), to w bazie licznik dla tego pliku zwiększany jest o jeden, pobierana jest jego nazwa i plik za pomocą nagłówka wysyłany jest do użytkownika. Pliki muszą znaleźć się w katalogu pliki (oczywiście katalog możesz zmienić na inny).

Jeżeli do skryptu nie zostany przekazany numer id, id będzie błędny lub id nie wystąpi w bazie, użytkownik zostanie skierowany ponownie na stronę index.php, gdzie znajduje się spis plików do pobrania.

Może się też zdarzyć, że plik o podanej nazwie nie istnieje (został przez przypadek skasowany) i wtedy również użytkownik zostanie odesłany do strony index.php. W ten sposób łatwo osbłużyć błędne przekazywanie parametrów do skryptu pobierz.php.

Gotowe. Masz już licznik plików, które użytkownicy pobierają z Twojego serwisu. Jeżeli chcesz, możesz rozbudować tabelę o dodatkowe pola, np. z opisem pliku.



Wyszukiwarka

Podobne podstrony:
jak wykonac strone z logowaniem do innej strony, PHP Skrypty
jak policzyc objetosc plikow w katalogu i podkatalogach, PHP Skrypty
Jak zablokować powtórne przetwarzanie formularzy przy odświeżaniu strony, PHP Skrypty
Jak zabezpieczyć się przed wielokrotnym wykonywaniem kodu po odświeżeniu strony, PHP Skrypty
Jak pobierać na komputer filmy ze strony TVP
Jak stworzyć zaawansowany test wyboru lub quiz, PHP Skrypty
jak miedzy stronami przesłać zmienne korzystajac z sesji, PHP Skrypty
jak wypisac zawartosc bazy danych dBase (dbf), PHP Skrypty
Jak dopisać dane na początku pliku tekstowego, PHP Skrypty
Jak wygenerować statyczny plik .html z bazy danych, PHP Skrypty
Jak zamienić liczby na kwoty zapisane słownie, PHP Skrypty
jak samodzielnie obliczyc numer dnia w dowolnym roku, PHP Skrypty
Jak odbierać dane pochodzące z różnych pól formularza, PHP Skrypty
Jak wysłać list do grup dyskusyjnych USENET, PHP Skrypty
Jak cenzurować wypowiedzi i brzydkie słowa na forum, PHP Skrypty
jak w grafice zmienic wybrane kolory na inne, PHP Skrypty
Jak automatycznie pokolorować na przemian wiersze tabeli, PHP Skrypty
Jak stworzyć zaawansowany test wyboru lub quiz, PHP Skrypty
Jak wysłać ze strony WWW e-mail z dowolnym załącznikiem, PHP Skrypty

więcej podobnych podstron