Zdroj: http://prochazka.clanweb.eu/index.php?a=php/hcm-modul-download • Vydáno: 2.2.2013 18:55 • Autor: hacesoft
HCM modul Download
Modul pro RS (redakční systém) SunLight CMS 7.5.x. na počítání staženích souborů.
Instalace je velice jednoduchá. Stažený soubor uložíte na Váš web do adresáře: \plugins\hcm. Tam vytvoříte adresář hacesoft a do něho uložíte soubor download.php a function.php.
Nakopírovat na web adresář Install_download a v prohlížeči spustit v tomto adresáři skript. Nesledně postupovat dle instrukcí. Upozornění heslo je stejné, jaké používá RS pro přihlášení do databáze. Po instalaci databáze, důrazně upozorňuji, smažte tento adresář z ostrého webu!
Počítací HCM modul se použije v RS následovně:
PHP code
[ hcm
]hacesoft
/download
,"code.php.zip","code.php"[ /hcm
]
První parametr určuje co stáhnout, popřípadě i část cesty k souboru.
Druhy parametr je proste zobrazované jméno, které uvidíte na webu.
Skript obsahuje konstanty, které lze měnit:
PHP code
define("cesta_k_souborum", "web/download"); <- toto je důležitý parametr
, který ukazuje
, kde se nacházejí požadované soubory
.
PHP code
define("download", "download"); <- název tabulky v databázi
, pro přehlednost nedoporučuji měnit
. Pokud změníte její hodnotu
, musíte provést změnu v samotné databázi na serveru a nebo při instalaci databázi ve skriptu index
.php v adresáři install_download u konstanty
define("nazev_tabulky", "download");
Tento skript je pouze jen počitadlo stažených souborů, neobsahuje administraci a souhrny výpis souboru. Tyto funkce budou dostupné časem v dalším samostatným HCM modulu.
Když je žádost o stažení souboru poprvé, automaticky se vytvoří v databázi odpovídající záznam z dostupných informaci.
Upozornění: pokud na webu nastane chyba, která je hlášena na začátku stránky, typicky E_NOTICE, tak skript nadále počítá stažené soubory ale soubor nejde stáhnout. Soubor je poslán formou HEADER.
Stáhnout HCM modul: download.php.
HCM kód download modulu:
PHP code
<?php
// Autor www.prochazka.zde.cz
// verze souboru v2.0.0.
// dne 31.12.2012 - vytvoreni modulu
if(!defined('_core')) exit;
define("cesta_k_souborum", "web/download");
define("download", "download");
require _indexroot
."plugins/hcm/hacesoft/function.php";
function _HCM_hacesoft_download
($SPatchFile='', $SshowFile='')
{
$mresult ="";
if (isset($_GET['d7'])){// stazeni souboru
$k = 0;
$pBuffer = explode("߀", Dekodovani_Dat
($_GET['d7']));
if (isset($pBuffer[0])) {
$k = $k + 1;
}
if (isset($pBuffer[1])) {
$sCrc = $pBuffer[1];
$k = $k + 1;
}
if ($k == 2) {
if ($sCrc == CrcOrign
()) {
DownloadFile
($pBuffer[0]);
}
}
}
$sBuffer ="";
$CestakPrevHacFunkci =GetAdr
()."&d7=";
if ($SPatchFile != ''){ //vytvor odkaz na pocitadlo
$sBuffer = Kodovani_Dat
($SPatchFile. '߀' . CrcOrign
());
$mresult .= "<a href='".$CestakPrevHacFunkci.$sBuffer."' >".$SshowFile."</a>";
}
return $mresult;
}
function DownloadFile
($sNazevSouboru){
$sFullPatchFile = _indexroot
.cesta_k_souborum
."/".$sNazevSouboru;
if (file_exists("$sFullPatchFile")) {
$sDatumNew = date ("j.n.Y H:i:s");
$nazev_tabulky = _mysql_prefix
."-".download
."-hac";
$query = DB
::query_row('SELECT * FROM `'.$nazev_tabulky.'` WHERE `soubor`="'.$sNazevSouboru.'"');
if (is_bool($query) === false){
$pocet_stazeni = $query[stazeni
] + 1;
$query = DB
::query('UPDATE `'.$nazev_tabulky.'` SET `stazeni` ="'.$pocet_stazeni.'", `naposledy_stazen` ="'.$sDatumNew.'" WHERE `soubor` ="'.$sNazevSouboru.'"');
}
else{ //Soubor existuje ale doposud neni veden v databazi, tak ho do databaze zapisem }
$sDatumfile = date ("j.n.Y H:i:s", filemtime("$sFullPatchFile"));
$sSize = formatfilesize
(FileSize("$sFullPatchFile"));
$cat_title_seo = $GLOBALS['query']['cat_title_seo'];
$title = $GLOBALS['query']['title'];
$query = DB
::query("INSERT INTO `".$nazev_tabulky."` (soubor,rubrika,velikost,datum,verze,popis,stazeni,naposledy_stazen,hodnoceni,pocet_hodnotitelu) VALUES ('$sNazevSouboru', '$cat_title_seo', '$sSize', '$sDatumfile', '', '$title', 1, '$sDatumNew','0','0')");
}
$_GET['d7'] = "";
header("location: $sFullPatchFile"); //Posly soubor
}
}
?>
Soubor function.php obsahuje různé funkce, které volají HCM moduly uveřejněné na tomto webu.
HCM kód function modulu:
PHP code
<?php
define("crc", "hac59fh5986v57xf8er451amhac");
function Kodovani_Dat
($sVstup) {
$sBuffer= md5($sVstup);
unset ($_SESSION[$sBuffer]);
$_SESSION[$sBuffer] = $sVstup;
return base64_encode($sBuffer);
}
function Dekodovani_Dat
($sVstup) {
$sBuffer= base64_decode($sVstup);
if(isset($_SESSION[$sBuffer])){
$sVystup = $_SESSION[$sBuffer];
return $sVystup;
}
else return 0;
}
function CrcOrign
($Crc = crc
){
return $Crc;
}
function formatfilesize
($a) {
$unim = array("B", "KB", "MB", "GB", "TB", "PB");
$c = 0;
while ($a >= 1024) {
$c++;
$a = $a / 1024;
}
return number_format($a, ($c ?
2 : 0), ",", ".") . " " . $unim[$c];
}
function GetAdr
($funkce="all",$sUpdate="no"){
switch ($funkce){
case "all";
return $_SERVER['PHP_SELF'] . (!empty($_SERVER['QUERY_STRING']) ?
'?' . $_SERVER['QUERY_STRING'] : '');
break;
case "1";
if (isset($_SERVER['QUERY_STRING'])){
$urlBuffer = $pBuffer = explode("&", $_SERVER['QUERY_STRING']);
if (isset($_REQUEST[Nazev_strankovani
])){
$urlBuffer[0] = $urlBuffer[0]."&".Nazev_strankovani
."=".$_REQUEST[Nazev_strankovani
];
}
if($sUpdate=="update") {
$_SERVER['QUERY_STRING'] = $urlBuffer[0];
$_SERVER['REDIRECT_QUERY_STRING'] = $urlBuffer[0];
$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'] .'?'. $urlBuffer[0];
return $_SERVER['REQUEST_URI'];
}
else {
return $_SERVER['PHP_SELF'] .'?'. $urlBuffer[0];
}
}
break;
}
}
?>