ugrás a tartalomhoz

Letöltés számláló

Hasszan · 2012. Ápr. 19. (Cs), 13.04
Az egyik ügyfél olyan megoldást kért a weboldalán lévő pdf katalógus letöltésének számlálására, hogy minden egyes letöltéskor küldjön neki a rendszer automatikusan egy emailt.
JS-ben eddig nem találtam megoldást rá, php-ban sem igazán.

Ötlet esetleg valakinek?
 
1

Kiszolgáláskor...

TeeCee · 2012. Ápr. 19. (Cs), 13.17
... számlálhatsz.

Tehát:
1.) Kérés: index.php?mit-toltsek-le=katalogus.pdf
2.) Számlálót növelsz, e-mailt küldesz (ez utóbbi szerintem hülyeség)
3.) Átirányítod a fájlra, vagy átnyomod PHP-val neki.

Talán jobb megoldás egy doksi-megosztó oldalon keresztül, azokon tán van forgalomszámláló. scribd, slideshare, pdfshare, netommikvannak...

Illetve tudatosítani kellene, hogy ha elmenti a PDF-et, akkor akárhányszor megnyithatja, arról nem fog e-mailt kapni és a számláló sem fog nőni!
2

Átirányítás

Hasszan · 2012. Ápr. 20. (P), 11.37
Az átirányítással bénázok.
Az istennek sem akarja sem egy file-ra átirányítani.
<?php
//header( "Location: http://maczolaci.hu/nonplusz/catalog/NON+_catalog_price.pdf" ) ;
echo "<meta http-equiv='refresh' content='0; url=http://maczolaci.hu/nonplusz/catalog/NON+_catalog_price.pdf'>";
mail("maczolaci##kukac##gmail.com","Katalógus letöltés","Letöltötték a katalógust");
?>
3

Komment

Poetro · 2012. Ápr. 20. (P), 11.45
De most nálad megjegyzésbe van téve az átirányítás, így nem is fog működni. De mivel nem látjuk a HTML oldalt, így nem is igazán tudunk segíteni. A + karakterrel meg óvatosan kell bánni, mert URL-ben szóközt jelent.
9

Azért van megjegyzésben, mert

Hasszan · 2012. Ápr. 20. (P), 13.34
Azért van megjegyzésben, mert az alatta lévő kód is ugyanazt csinálja. Gondoltam mindkettőt elküldöm nektek.
10

Nem

Poetro · 2012. Ápr. 20. (P), 13.53
Az alatta levő kód mást csinál.
11

Gyakorlatilag ugyanazt ebben

Hasszan · 2012. Ápr. 20. (P), 13.56
Gyakorlatilag ugyanazt ebben az esetben szerintem.
4

Az átirányítással

kuka · 2012. Ápr. 20. (P), 11.49
Az átirányítással bénázok.
Javasolnám, hogy függeszd fel az ilyen irányú kísérletezést. Ha kiadod a valós URL-t, azt felvehetik könyvjelzőbe, továbbíthatják levélben, közzé tehetik fórumon. Ezek után a fél világ letöltheti az állományt anélkül, hogy a levél értesítő szkriptnek esély volna lefutni.
5

Ha van Apache...

Gixx · 2012. Ápr. 20. (P), 11.56
És van mod_rewrite, akkor érdemesebb azzal próbálkozni:

.htaccess
<ifModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond    %{REQUEST_FILENAME}    \.pdf$
  RewriteRule    ^(.*)$                 report.php?file=$1
</ifModule>


... és a report.php:

<?php 

// persze megfelelően szűrni kell a beérkezett adatokat
$filename = $_GET['file'];
mail('valaki##kukac##foo.org', 'Letoltottek!', 'Ezt:' . $filename);
header('Content-type: application/pdf');
header('Location: ' . $filename);

Nem ellenőriztem, csak hasraütésre írtam, de valami ilyesmiből indulnék ki. Ha nincs mod_rewrite, akkor letölti a pdf-et, ha van, akkor (elvileg) reportol és utána visz át a fájlra.

Persze nem árt védelmet beépíteni:
* mit tartalmaz a $_GET['file']; // XSS
* létezik-e a fájl // mehet az egyedi 404-re, vagy ha máshol van már a file, akkor 301-es headerrel odairányítod
* hanyadjára hívják ezt meg ugyanonnan // mail flood,
* stb
6

Végtelen ciklus?

kuka · 2012. Ápr. 20. (P), 12.21
Végtelen ciklus?
7

jah tényleg :)

Gixx · 2012. Ápr. 20. (P), 12.31
Mondtam, hogy hasra ütés :)

Akkor a header helyett

echo file_get_contents($filename);
8

Ha úgyis csak azért

kuka · 2012. Ápr. 20. (P), 12.37
Ha úgyis csak azért olvastatod be, hogy rögtön ki is nyomasd kimenetre, a readfile() talán egyenesebb út.

Hasszan, a fentebb linkelt függvény példáinál találsz további header() hívás ötleteket a letöltés gatyába rázására.