Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ajmo PHP majstori

[es] :: PHP :: Ajmo PHP majstori

[ Pregleda: 1307 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

chaki1976
chaki cardak
Vienna

Član broj: 61044
Poruke: 13
*.dynamic.xdsl-line.inode.at.



Profil

icon Ajmo PHP majstori27.10.2005. u 18:22 - pre 225 meseci
E ovako imam php downloadskript i sve radi perfektno osim jedne stvari
a to je:
Ubacio sam par mp3 fajlova e problem je u tome što kad klikneš na link download
starta ti winmediaplayer, a ne download.
E moje je pitanje dali se može i kako to sprečiti???

ista stvar i sa videoklipovima ali to mi sad i nije tako važno

a evo i cede ako treba:

Code:

require_once "maincore.php";
require_once "subheader.php";
require_once "side_left.php";
include LOCALE.LOCALESET."downloads.php";

if (isset($download_id) && !isNum($download_id)) fallback("index.php");

if (isset($download_id)) {
    $res = 0;
    if ($data = dbarray(dbquery("SELECT download_url,download_cat FROM ".$db_prefix."downloads WHERE download_id='$download_id'"))) {
        $cdata = dbarray(dbquery("SELECT * FROM ".$db_prefix."download_cats WHERE download_cat_id='".$data['download_cat']."'"));
        if (checkgroup($cdata['download_cat_access'])) {
            $res = 1;
            $result = dbquery("UPDATE ".$db_prefix."downloads SET download_count=download_count+1 WHERE download_id='$download_id'");
            redirect($data['download_url']);
        }
    }
    if ($res == 0) redirect("downloads.php");
}

if (!isset($cat_id)) {
    opentable($locale['400']);
    $result = dbquery("SELECT * FROM ".$db_prefix."download_cats ORDER BY download_cat_name");
    $rows = dbrows($result);
    if ($rows != 0) {
        $counter = 0; $columns = 2; 
        echo "<table width='100%' cellspacing='0' cellpadding='0' class='tbl'>\n";
        while ($data = dbarray($result)) {
            if (checkgroup($data['download_cat_access'])) {
                if ($counter != 0 && ($counter % $columns == 0)) echo "</tr>\n<tr>\n";
                $num = dbcount("(download_cat)", "downloads", "download_cat='".$data['download_cat_id']."'");
                echo "<td align='center' valign='top' width='50%'><a href='".FUSION_SELF."?cat_id=".$data['download_cat_id']."'>".$data['download_cat_name']."</a> <span class='small2'>($num)</span>";
                if ($data['download_cat_description'] != "") echo "<br>\n<span class='small'>".$data['download_cat_description']."</span>";
                echo "</td>\n" ;
                $counter++;
            }
        }
        echo "</tr>\n</table>\n";
    } else {
        echo "<center><br>\n".$locale['430']."<br><br>\n</center>\n";
    }
    closetable();
} else {
    $res = 0;
    if (!isNum($cat_id)) fallback(FUSION_SELF);
    $result = dbquery("SELECT * FROM ".$db_prefix."download_cats WHERE download_cat_id='$cat_id'");
    if (dbrows($result) != 0) {
        $cdata = dbarray($result);
        if (checkgroup($cdata['download_cat_access'])) {
            $res = 1;
            opentable($locale['400'].": ".$data['download_cat_name']);
            $rows = dbcount("(*)", "downloads", "download_cat='$cat_id'");
            if (!isset($rowstart) || !isNum($rowstart)) $rowstart = 0;
            if ($rows != 0) {
                $result = dbquery("SELECT * FROM ".$db_prefix."downloads WHERE download_cat='$cat_id' ORDER BY download_title LIMIT $rowstart,15");
                $numrows = dbrows($result); $i = 1;
                while ($data = dbarray($result)) {
                    if ($data['download_datestamp']+604800 > time()+($settings['timeoffset']*3600)) {
                        $new = " <span class='small'>".$locale['410']."</span>";
                    } else {
                        $new = "";
                    }
                    echo "<a href='".FUSION_SELF."?cat_id=$cat_id&download_id=".$data['download_id']."' target='_blank'>".$data['download_title']."</a> - ".$data['download_filesize']." $new<br>\n";
                    if ($data['download_description'] != "") echo nl2br(parseubb($data['download_description']))."<br>\n";
                    echo "<span class='small'><font class='alt'>".$locale['411']."</font> ".$data['download_license']." |
<font class='alt'>".$locale['412']."</font> ".$data['download_os']." |
<font class='alt'>".$locale['413']."</font> ".$data['download_version']."<br>
<font class='alt'>".$locale['414']."</font> ".showdate("%d.%m.%y", $data['download_datestamp'])." |
<font class='alt'>".$locale['415']."</font> ".$data['download_count']."</span>\n";
                    echo ($i != $numrows ? "<br><br>\n" : "\n"); $i++;                }
                closetable();
                echo "<div align='center' style='margin-top:5px;'>\n".makePageNav($rowstart,15,$rows,3,FUSION_SELF."?cat_id=$cat_id&")."\n</div>\n";
            } else {
                echo $locale['431']."\n";
                closetable();
            }
        }
    }
    if ($res == 0) redirect(FUSION_SELF);
}

require_once "side_right.php";
require_once "footer.php";
?>


Sve je moje tvoje
 
Odgovor na temu

SmilieBG
Aleksandar Skodric
NL

Član broj: 13094
Poruke: 1821
*.speed.planet.nl.



+3 Profil

icon Re: Ajmo PHP majstori27.10.2005. u 18:51 - pre 225 meseci
verovatno zato sto saljes kao link, a ne kroz headers

takodje, izbrisi winamp (ili ga izbrisi iz browsera) pa ce ti ponuditi download :)

takodje, verovatno da mogu da urade Save as...

ovako ide kod mene:

Code:

//What type of file is this.
$filetype=mime_content_type($file);

//Set the filename
$fn = substr($file, strrpos($file, '/')+1);
header("Content-Disposition: attachment; filename=\"$fn\"");

//Set the content type
header('Content-type: '.$filetype);

//Set file size
header("Content-Length: ".filesize($file));

//Read the file into the browser.
readfile( $file );


Ovo je solo skripta kojoj dakle prosledjujes parametar ($file), koji se zatim downloaduje, bez opcije da ga slusaju / gledaju sa servera.

Poz,
Sale
=========
Uporedi cene i karakteristike za vise od 10.000 proizvoda, izmedju ostalog:
Digitalni foto-aparati
Mobilni telefoni
Skolski pribor
=========
 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Re: Ajmo PHP majstori27.10.2005. u 18:56 - pre 225 meseci
Prvo, postoji forum za PHP pa je tu prebačena tema. Drugo, ima dosta toga već pisano na temu "kako se realizuje download" i ovde na forumu a i pre toga http://php.net/header

U čemu je problem s ovim što si okačio? Imaš
Code:
redirect($data['download_url']);

što praktično ispadne kao da je korisnik kliknuo na link prema fajlu s te adrese (kažeš mp3... pa browser pokreće program za čitanje fajla).

Evo ti copy/paste s onog linka više što sam ti ostavio... vezano za download
Code:
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>

U prvi header postavi odgovarajući tip fajla za mp3 (potraži MIME content type).

U drugom headeru zameni ime fajla koje se nudi korisniku za download.

U trećem headeru za argument stavi svoj $data ['download_url'].

Nakon svega ovoga dodaš još komandu exit i gotova stvar.
 
Odgovor na temu

chaki1976
chaki cardak
Vienna

Član broj: 61044
Poruke: 13
*.dynamic.xdsl-line.inode.at.



Profil

icon Re: Ajmo PHP majstori27.10.2005. u 20:01 - pre 225 meseci
Izvinite sto nisam postavio pitanje u odgovarajucoj kategoriji.
hvala za brz odgovor, samo ja sam noob za php tako da nemam pojma di i sta trebam zamjenit postavit.
Mozel malo jednostavniji odgovor kako di i sta i ovaj skript sluzi i za druge formate
tako da mi se nesto nepobrka ako postavim fajl .rar ili .zip ili .avi
Hvala.
Sve je moje tvoje
 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Re: Ajmo PHP majstori27.10.2005. u 20:34 - pre 225 meseci
Pa praktično ti ovaj Content-type nije neophodan za sam download, jer funkcija za određivanje tipa fajla koju je naveo SmilieBG - mime_content_type - često nije podržana na serverima. S druge strane, za download je korisno da se pošalje kolika je veličina fajla (Content-Length).

Sve u svemu... umesto reda
Code:
redirect($data['download_url']);

postavi sledeće
Code:
$filepath = $data ['download_url'];

header ('Content-Disposition: attachment; filename="' . substr ($filepath, strrpos ($filepath, '/') + 1) . '"');

header ('Content-Length: ' . filesize ($filepath));

readfile ($filepath);

exit;

 
Odgovor na temu

chaki1976
chaki cardak
Vienna

Član broj: 61044
Poruke: 13
*.dynamic.xdsl-line.inode.at.



Profil

icon Re: Ajmo PHP majstori28.10.2005. u 21:20 - pre 225 meseci
Svaka cast majstore uradio som ovo kako si naveo i radi
Sve je moje tvoje
 
Odgovor na temu

[es] :: PHP :: Ajmo PHP majstori

[ Pregleda: 1307 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.