• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

Download регистратор

  • Ја почнал/а темата
  • #1

NENAD

Intern
5 јуни 2007
29
0
Незнаев како да ја крстам темава но еве ќе прецизирам:
Значи си хостирам сајт на било кој сервер (на пр. mkd.net) и сега ставам некој фајл за download, е сега како да направам да знам колку пати ми е симнуван тој фајл т.е. дали има некој бројач ли сл. што ќе ми регистрира колку пати некој го симнал?
Програм, скрипта или сл.
Однапред благодарам.
 

sojic

Intern
29 април 2007
435
23
За тоа ти треба .php скриптица. Моментално сум надвор од градот, за утре ќе ти пишам код (и ќе го префрлиме у php форум).
 

HijackHacker

Gaining Experience
21 февруари 2008
5,108
297
www.gorjan.info
Можеш да направип доунлоад страна и да вели: "Оди на даунлоад страната", и тоа да те однесе на страна со бројач и да вели "кликнете овде да го симнете" и да им го даде фајлот.
 

sojic

Intern
29 април 2007
435
23
Еве едно мое решение.

Код:
<?

$filename = "files/".$_GET['get'].$_GET['file'];

$log = $_SERVER['REMOTE_ADDR']." - ".$filename."\r\n";

$logFile = fopen("log.txt", "a+");
fwrite($logFile, $log);
fclose($logFile);

$len=filesize($filename);
//$file=basename($filename);
$size = filesize($filename);

$file = str_replace(" ", "-", $_GET['file']);


header("Content-Type: application/octet-stream");
header("Content-Type: application/force-download");
header("Content-Length: $len");

// >>> ovde je caka
if (preg_match("/MSIE 5.5/", $HTTP_USER_AGENT)) 
    // za IE
    header("Content-Disposition: filename=$file");
else
    // za ostale normalne browser-e
    header("Content-Disposition: attachment;filename=$file");
// >>> ovde je caka

header("Content-Transfer-Encoding: binary");
$fp = fopen($filename, "r");
fpassthru($fp);

?>
Имаш и поедноставно решение, ама тоа не е сигурно.

Код:
<?
// Matematika za log
......
header("Location: http://domain/path/file.ext");

?>
Зошто ова не е сигурно?

Затоа што посетителот ќе ја добие реалната локција на фајлот и може да го постави на форум или ..... и другите да пристпат директно до него.

Со првото решение фајлот е замаскиран. Корисникот не ја знае физичката локација на фајлот.
 
  • Ја почнал/а темата
  • #5

NENAD

Intern
5 јуни 2007
29
0
А кај да ја убацам скриптава? Пошто не сум баш навлезен у HTML-ов толку добро.
Иначе фала, ќе ѕирнам ова.
 
  • Ја почнал/а темата
  • #6

NENAD

Intern
5 јуни 2007
29
0
Можеш да направип доунлоад страна и да вели: "Оди на даунлоад страната", и тоа да те однесе на страна со бројач и да вели "кликнете овде да го симнете" и да им го даде фајлот.
Хм, не е тоа финтата, ако е за тоа у старт ми текна, иам башка премиум рапидшер но ипак неќам преку него пошто ептен често ги кинат линковите а башка чекање, капча и триста други глупости.
 

sojic

Intern
29 април 2007
435
23
Уф.... треба да имаш мали познавање од php.

Сними го фајлот како download.php и прави линкови до download.php?file=muzika.mp3, а muzika.mp3 уплоадирај го у files/muzika.mp3

Тоа $_GET['get'] не ми текнува што е. :(
 

Delicon

Gaining Experience
10 јуни 2007
863
276
delicon.mk
@sojic

Колку што видов има грешки во кодот... а и не е тоа тој што бара.
Toa треба да прави само лог фајл (log.txt) со IP адресата и фајлот што е download-иран, но не и да брои колку пати е симнат.

@NENAD

Еве како би требало да биде тоа (прост пример, со 'txt' фајлови):

<?php

$file_name = $HTTP_GET_VARS['get'];
$download_dir = 'files';
$counter_dir = 'counters';

$path = $download_dir.'/'.$file_name;

if(file_exists($path)) {
$file = fopen($counter_dir.'/'.$file_name.'.txt','r+');
$count = fread($file,100);
fclose($file);
$count++;
$file = fopen($counter_dir.'/'.$file_name.'.txt','w');
fwrite($file, $count);
fclose($file);

$size = filesize($path);

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$file_name);
header('Content-Length: '.$size);

readfile($path);

} else {
echo "<p>The file <b>$file_name</b> is not available for download.</p>";
}

?>

* или пак види го поубаво кодот тука: http://www.vmetni.com/5fv1q4-190

Ова го снимаш како download.php

Треба да направиш 2 фолдери: files и counters.
Фајловите за download треба да се во files фолдерот, а во counters фолдерот ќе се наоѓаат txt фајлови кои ќе содржат колку пати е download-иран фајлот (сами ќе се создаваат).

Пример:

Фајл за download ти е firefox.exe

www.primer.com/download.php?get=firefox.exe

Откако ќе се download-ира фајлот во counters фолдерот ќе биде автоматски созданен фајл firefox.exe.txt во кој ќе има само бројки (пр. 1).
 

sojic

Intern
29 април 2007
435
23
Добро, бројачот може да се модифицира по потребите.

Битно беше концептот, да не се користи header за праќање на локацијата на фајлот, туку да се користи метод на .... како да кажам „тунелирање“ или „стримување“ на фајлот. Да се замаскира физичката локација на фајлот и да МОРА да пројде низ php за да се брои.
 

NoLander

Intern
11 ноември 2007
216
15
Имаш и поедноставно решение, ама тоа не е сигурно.

Код:
<?
// Matematika za log
......
header("Location: http://domain/path/file.ext");

?>
Зошто ова не е сигурно?

Затоа што посетителот ќе ја добие реалната локција на фајлот и може да го постави на форум или ..... и другите да пристпат директно до него.

Со првото решение фајлот е замаскиран. Корисникот не ја знае физичката локација на фајлот.

Оваа ти е најпаметно решение
бидејки нема да го оптeретува серверот


$file = fopen($counter_dir.'/'.$file_name.'.txt','r+'); оваа лошо најдобро е да
користиш mysql
Малку е ламерски да создаваш еден тон фајлови и да ги читаш од циклус што ке се случи на 10 000 превземања краш
 

sojic

Intern
29 април 2007
435
23
Да, точно дека нема да го оптоварува серверот меѓутоа може да се „заобикили“ download-от.

Кога ќе дојдеш на линкот ќе биде прикажан „маскираниот“ линк, меѓутоа, кога ќе почне download-от, може да ја видиш „физичката“ локација на фајлот.

Не постои ништо идеално. Сите работи имаат и позитивни и негативни страни.

Останува на Ненад да одлучи што ќе прави.

Не знам колку често и колку големи фајлови ќе има.

И платените хостинзи не ти дозволуват да им го преоптеретуваш серверот, камо ли па free хостинг.

Затоа најубаво didicated сервер, сам свој газда :)

Инаку, за Delicon. Баш како што рече NoLander, за да не се создаваат многу txt фајлови, полесно е да се запишува во еден, па после (пример со excel) филтрирај, број, прави што правиш.
 

Delicon

Gaining Experience
10 јуни 2007
863
276
delicon.mk
Затоа пишав:
Еве како би требало да биде тоа (прост пример, со 'txt' фајлови)
Сигурно тој нема да прави Download.com на free хостинг :)

Малку е ламерски да создаваш еден тон фајлови и да ги читаш од циклус што ке се случи на 10 000 превземања краш
Нема да има еден тон фајлови, за секој фајл за download ќе има и плус еден текст фајл со бројка во него која се зголемува.

најдобро е да користиш mysql
Знам за тоа, но мислам дека ќе биде доста комплицирано за "почетник".
 

NoLander

Intern
11 ноември 2007
216
15
$file = fopen($counter_dir.'/'.$file_name.'.txt','r+');
$count = fread($file,100);
fclose($file);
$count++;
$file = fopen($counter_dir.'/'.$file_name.'.txt','w');
fwrite($file, $count);
fclose($file);
;


Тој дел го замени со мysql и би требало да го добиеш тоа што го сакаш
почетнико може да прочита малце три реда се

Најдобро е да ги давате примерите како требат да бидат не постои поченичко промирање и да ima дедикатет сервер со примерот со многу фајлови ќе биде исто како да пуштил антивирус + пхп по стадарт е огриничен на 30 сек макс за извршување на скрипта
 

Нови мислења

Последни Теми

Статистика

Теми
42,617
Мислења
821,789
Членови
28,266
Најнов член
Bojan Sardjovski
На врв Дно