Oldal: 1 / 2 12 UtolsóUtolsó
Eredmény: 1 - 10 (13) összesen

Téma: Letöltés számláló - echo, header

  1. #1
    Törzsvendég Szmöre logója
    Csatlakozott
    09-06-19
    Hozzászólás
    169
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás Letöltés számláló - echo, header

    Sajnos nem tudom megoldani ezt a kis gondot már hetek óta.
    Ebbe a kódba szeretnék egy beszúrni egy mystat számláló kódot, ez szimpla echo() fg-nyel. nos én úgy tudom, hogy ha ob_start(), ob_end_flush() páros közé teszem a kódot, akkor működni fog.
    ne de hogy?
    hova tegyem ob_start(), ob_end_flush() -t?
    Nagyon örülnék ha tudnátok segíteni.

    PHP kód:
    <?php
     error_reporting
    (0); 

     
    /* Ez a fuggveny arra valo, hogy ha nem talal egy fajlt, egy szep 404-es hibaoldalt rakjon ki a felhasznalonak. */ 
     
    function error_notfound() 
     { 
      
    /* Fejlec kiirasa. Ez arra kell, hogy az automatak tudjak, hogy itten hibaoldalrol van szo. */ 
      
    header("HTTP/1.1 404 Not Found"true404); 
      
    /* Ez meg a 404-es hibaoldal tartalma. */ 
      
    echo('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html lang="hu"> 
     <head> 
      <title>404 Nem tal&aacute;lhat&oacute;</title> 
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
     </head> 
      
     <body> 
      <p>A k&eacute;rt f&aacute;jl nem tal&aacute;lhat&oacute;.</p> 
     </body> 
    </html>'
    ); 
     } 

     
    /* Ez a fuggveny arra valo, hogy ha szabad megnyitni egy fajlt, egy szep 401-es hibaoldalt rakjon ki a felhasznalonak. */ 
     
    function error_forbidden() 
     { 
      
    /* Fejlec kiirasa. Ez arra kell, hogy az automatak tudjak, hogy itten hibaoldalrol van szo. */ 
      
    header("HTTP/1.1 401 Forbidden"true401); 
      
    /* Ez meg a 401 hozzaferes megtagadva hibaoldal tartalma */ 
      
    echo('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html lang="hu"> 
     <head> 
      <title>401 Nem enged&eacute;lyezett</title> 
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
     </head> 
      
     <body> 
      <p>A k&eacute;rt f&aacute;jl let&ouml;lt&eacute;se nem enged&eacute;lyezett.</p> 
     </body> 
    </html>'
    ); 
     } 

     
    /* Ez a fuggveny arra valo, hogy ha valami csunya hiba van, egy szep 500-as hibaoldalt rakjon ki a felhasznalonak. */ 
     
    function error_server() 
     { 
      
    header("HTTP/1.1 500 Internal Server Error"true500); 
      echo(
    '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html lang="hu"> 
     <head> 
      <title>500 Szerver hiba</title> 
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
     </head> 
      
     <body> 
      <p>A let&ouml;lt&eacute;s feldolgoz&aacute;sa k&ouml;zben szerverhiba l&eacute;pett fel.</p> 
     </body> 
    </html>'
    ); 
     } 

     
    /* Ez a fuggveny csinalja a file letolteset */ 
     
    function download_file($file
     { 
        
      
    /* Megnyitjuk a filet binaris olvasasra. */ 
      
    if ($fp fopen($file'rb')) 
      { 
       
    /* Fejlec: ok, tartalom kovetkezik */ 
       
    header("HTTP/1.1 200 Ok"true200); 
       
    /* Hack, hogy az IE is megegye: */ 
       
    header('Content-Type: application/octet-stream'); 
       
    /* Lementeni akarjuk, nem megnyitni, ezert a Content-Disposition: attachment */ 
       
    header('Content-Disposition: attachment; filename="' basename($file) . '"'); 
       
    /* Ennek a mezonek ilyen formatumunak kell lennie: Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT */ 
       
    header('Last-Modified: ' date("D, j M Y G:i:s T"filemtime($file))); 
       
    /* Megadjuk a meretet, nehogy valami galiba legyen: */ 
       
    header('Accept-Ranges: bytes'); 
       
    header('Content-Length: 'filesize($file)); 
        
       
    /* Amig nincs file vege... */ 
       
    while (!feof($fp)) 
       { 
        
    /* ...1 kB-os darabokban kiolvassuk a filet es elkuldjuk. Ez memoriakimelo megoldas. */ 
        
    echo(fread($fp1024)); 
       } 
       
    /* Becsukjuk a fajlt. */ 
       
    fclose($fp); 
      } else { 
       
    /* Letezik a file, de nem sikerult megnyitni. */ 
       
    error_server(); 
      } 
     } 

     
    /* !!! itt jon a fuggvenyeket meghivo resz: */ 

     /* Levesszuk a konyvtarnevet, hogy meg csak veletlenul se olvasson kenyes fileneveket. Tehat /../valamigonoszfajl.php-bol valamigonoszfajl.php lesz. */ 
     
    $file basename($file); 
      
     
    /* Nem engedjuk letolteni ezt a filet, mert az csunya lenne. */ 
     
    if ($file == basename(__FILE__)) 
     { 
      
    error_forbidden(); 
      
    /* Ha nem letezik a file, 404-es hibat dobunk. */ 
     
    } else if (!file_exists(dirname(__FILE__) . "/images/stories/flash/" $file)) { 
      
    error_notfound(); 
     } else { 
      
    /* HA letezik a file, akkor letoltjuk. */ 
      
    download_file(dirname(__FILE__) . "/images/stories/flash/" $file); 


     } 

    ?>




  2. #2
    Bölcs sitebuilder logója
    Csatlakozott
    09-08-23
    Hely
    Debrecen
    Hozzászólás
    1.005
    Begyűjtött 8 köszönetet
    5 hozzászólásával

    Alapbeállítás re: Letöltés számláló - echo, header

    ob_start()-ot az előtt kel kitenni mielőtt bármi bármilyen 'html kimenetet' nem generálsz (whitespace sem mehet ki előtte).

    Azt hiszem..



  3. #3
    kow
    kow nem elérhető
    KowDerMei$ter kow logója
    Csatlakozott
    07-05-09
    Hely
    Budapest
    Hozzászólás
    1.447
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Letöltés számláló - echo, header

    Miért nem tárolod inkább adatbázisban a letöltések számát? Nagyon egyszerű lenne:
    downloads( file_name, dcount );

    letöltésenként pedig meghívod:
    "UPDATE downloads SET dcount = dcount+1 WHERE file_name = 'lol.pdf'"

    Amit szeretnél amúgy nem fog működni, szerintem.



  4. #4
    Törzsvendég Szmöre logója
    Csatlakozott
    09-06-19
    Hozzászólás
    169
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Letöltés számláló - echo, header

    Idézet kow eredeti hozzászólása Hozzászólás megtekintése
    Miért nem tárolod inkább adatbázisban a letöltések számát? Nagyon egyszerű lenne:
    downloads( file_name, dcount );

    letöltésenként pedig meghívod:
    "UPDATE downloads SET dcount = dcount+1 WHERE file_name = 'lol.pdf'"
    Az oldal mindenfajta mérését a mystat végzi, jó lenne ha ezt is láthatnám ott.


    Utoljára módosítva: Szmöre által : 2009-08-29 15:05

  5. #5
    kow
    kow nem elérhető
    KowDerMei$ter kow logója
    Csatlakozott
    07-05-09
    Hely
    Budapest
    Hozzászólás
    1.447
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Letöltés számláló - echo, header

    Jó, de ha egyszer már küldtél egy fejlécet, akkor hogy akarod utána módosítani azt? Ez így nem kivitelezhető.

    Előbb csinálj egy download.php-t, ami meghívja a STAT kódot és a <meta>-refresh teg-be illeszd be azt az URL-t, ami meghívja a file letöltést, ez csak így működhet.



  6. #6
    Tag Psysoul logója
    Csatlakozott
    09-08-28
    Hely
    Budapest
    Hozzászólás
    64
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Letöltés számláló - echo, header

    Szerintem nem itt kéne ezt beraknod, mert itt már konkrétan megkapja a user böngészője a filet, ha minden oké.

    A számláló kódját berakhatnád oda, ahol megjelenik a letöltés gomb.

    Vagy amit kow írt, akkor a download_file függvényben megtörténhetne az adatbázisba írás.



  7. #7
    Törzsvendég Szmöre logója
    Csatlakozott
    09-06-19
    Hozzászólás
    169
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Letöltés számláló - echo, header

    Köszönöm! nem vagyok túl nagy zseni ehhez.
    ezt pontosan hogy értetted? <meta>-refresh teg



  8. #8
    kow
    kow nem elérhető
    KowDerMei$ter kow logója
    Csatlakozott
    07-05-09
    Hely
    Budapest
    Hozzászólás
    1.447
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Letöltés számláló - echo, header


  9. #9
    Törzsvendég Szmöre logója
    Csatlakozott
    09-06-19
    Hozzászólás
    169
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Letöltés számláló - echo, header

    Idézet Psysoul eredeti hozzászólása Hozzászólás megtekintése
    Szerintem nem itt kéne ezt beraknod, mert itt már konkrétan megkapja a user böngészője a filet, ha minden oké.

    A számláló kódját berakhatnád oda, ahol megjelenik a letöltés gomb.

    Vagy amit kow írt, akkor a download_file függvényben megtörténhetne az adatbázisba írás.
    ez pontosan úgy néz ki, hogy van egy download.php ami echo-val számoltatna a mystat-tal, majd include-olja ezt a scriptet. Na ez nem megy. (beszúrhatom ide ha kell.)



  10. #10
    Bölcs huncyrus logója
    Csatlakozott
    07-04-26
    Hely
    EU :)
    Hozzászólás
    541
    Begyűjtött 4 köszönetet
    4 hozzászólásával

    Alapbeállítás re: Letöltés számláló - echo, header

    szerintem elég a 200-as headerhez beraknod a astat-ot. bár asszem van az astatnak más megoldása is statisztikához, de ha ragaszkodsz hozzá, akkor a functionba heggeszd bele.

    az fclose utánra rakd bele az ob_start() -ot, utána az include-ot bár a helyett inkább a request_once -ot javaslom használni, utána ob endelj és kész. ha mákod van akkor simán menni fog a dolog.

    Osztom Zoli javaslatát, hogy adatbázisban is kövesd nyomon a dolgokat. Ártani, még senkinek sem ártott az ilyesmi


    Cyrusmagus.hu - Informatika, Fantasy, Blog, Irások

Oldal: 1 / 2 12 UtolsóUtolsó

A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •