Autor Zpráva
Ghosting
Profil
Zdravím,
mám menší problém. Snažím se nasadit do stránek počítadlo stažení souborů, dle tohoto článku.
Mám tedy tento kód

<?php

/*---- inicializace jadra ----*/

define('_indexroot', './');
require(_indexroot."core.php");
if(!_printart){exit;}


/*---- vystup ----*/
$path="upload/";  // cesta k adresáři se soubory ke stažení
$location="http://$HTTP_HOST/";  // adresa pro přesměrování na hlavní stránku
if (isset($dl) && ERegI("$HTTP_HOST",$HTTP_REFERER)) {  // otestuj, zda je zadán parametr požadovaného souboru a skript je volán ze správné stránky
 // require("opendb.php"); // připoj se k databázi - v SL nevy
  $dl=AddSlashes(Chop($dl)); // ošetři případné nebezpečné znaky parametru dl
  $result = @mysql_query("select path from `" . _mysql_prefix . "-download` where id=$dl");
  $data = mysql_fetch_row($result);
  if (!empty($data[0])) {  // otestuj, zda pro zadaný parametr byla v databázi nějaká data
    @mysql_query("update `" . _mysql_prefix . "-download` set loaded=loaded+1 where id=$dl");  // zvyš počet stažení o 1
    $location="http://$HTTP_HOST/$path$data[0]";  // nastav adresu pro přesměrování na soubor ke stažení
  }
}
Header("Location: $location"); // přesměruj prohlížeč
exit; // ukonči skript

?>

Bohužel to má háček a to je to, že se daný soubor nestáhne ani se nezapočítá počet stažení.
V Článku je uveden problém s REFERERem, když tedy upravím toto
if (isset($dl) && ERegI("$HTTP_HOST",$HTTP_REFERER)) {  // otestuj, zda je zadán parametr požadovaného souboru a skript je volán ze správné stránky
takto
if (isset($dl)) {  // otestuj, zda je zadán parametr požadovaného souboru a skript je volán ze správné stránky

tak funguje započítávání, ale soubor se nestáhne. (Bílá obrazovka).
Nevíte jak na to?
fuckin
Profil
neni potreba predat jinou hlavicku pro stahnuti souboru?

A pouzivej $_SERVER['...'], nikoly ten zkraceny zapis ktery mnohdy nefunguje.

Btw chvalim tvuj styl zapisu kodu, jde videt ze nejsi amater, jeste kdyby tam bylo oop tak je to naprosto dokonale bez jedine chybicky :).
Ghosting
Profil
A pouzivej $_SERVER['...'], nikoly ten zkraceny zapis ktery mnohdy nefunguje.
Ok.
Btw chvalim tvuj styl zapisu kodu, jde videt ze nejsi amater, jeste kdyby tam bylo oop tak je to naprosto dokonale bez jedine chybicky :).
jsem amatér ;)
tiso
Profil
fuckinBtw chvalim tvuj styl zapisu kodu
To by ma fakt zaujímalo čo sa ti konkrétne na tom kóde páči.
Majkl578
Profil
fuckin
opravdu si to myslis? ja jich vidim hned nekolik na to aby ten kod byl dokonaly (nehlede na to, ze kod neni psan prehledne).
nejake uvedu:

1.
define('_indexroot', './');

konstanty se pro prehlednost uvadi velkymi pismeny (INDEX_ROOT) a cesty je lepsi uvadet absolutni (__DIR__)

2.
$HTTP_HOST

zastarale, pouziva se $_SERVER['param']

3.
ERegI("$HTTP_HOST",$HTTP_REFERER)

prvni veci je eregi - od 5.3 deprecated, navic pomalejsi a nenabizi toho tolik jako preg_ metody (zde preg_match)
druhou je samotna promenna v uvozovkach - ???, snad eregi($a, $b) ne?

4.
$dl=AddSlashes(Chop($dl));

toto neosetri data dostatecne pro pouziti v mysql dotazu, pouzivej mysql_real_escape_string

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: