Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Sistema Downloads ai solo autenticati

    Ciao a tutti ^^ Sono nuovo di questo forum.
    Ho realizzato questa mattina uno script in php che permette ai soli iscritti al forum phpbb del mio progetto online di effettuare download dal dominio.
    Per salvaguardare la banda ho provato a limitare la possibilità di effettuare download ogni 5 minuti (grazie ad una sessione, che dopo il primo download si crea, così se lo script verrà ri-eseguito controllerà l'esistenza della sessione, nel caso non esistesse avvia il download, nel caso esistesse stamperebbe a video il messaggio di errore contenuto nella stessa sessione).
    Vi mostro lo script:
    Codice PHP:
    <?php
        
    //login data 
        
    include("include.php");

    $pagina_default 0;
    $id = (isset($_GET['id']))?$_GET['id']:$pagina_default;
     if(!
    is_numeric($id)) {
    $id 1;
    }
     if(
    $id >= 7) { //<-- in questo rigo cambiare "id >= NUM" in base al contenuto dell'array
    $id 0;
    }
    session_start();
        if(
    $_SESSION["timecontrol"]){
        if(
    $userdata['session_logged_in']){        
       
                   
    $filename = array(
                    
    "nullo",
                    
    "ff_media/ciao.txt",
                    
    "ff_media/ciao1.txt"
                        
    );
                
    $filename realpath($filename[$id]);

                
    $file_extension strtolower(substr(strrchr($filename,"."),1));

                switch (
    $file_extension) {
                    case 
    "pdf"$ctype="application/pdf"; break;
                    case 
    "exe"$ctype="application/octet-stream"; break;
                    case 
    "zip"$ctype="application/zip"; break;
                    case 
    "doc"$ctype="application/msword"; break;
                    case 
    "xls"$ctype="application/vnd.ms-excel"; break;
                    case 
    "ppt"$ctype="application/vnd.ms-powerpoint"; break;
                    case 
    "gif"$ctype="image/gif"; break;
                    case 
    "png"$ctype="image/png"; break;
                    case 
    "jpe": case "jpeg":
                    case 
    "jpg"$ctype="image/jpg"; break;
                    default: 
    $ctype="application/force-download";
                }

                if (!
    file_exists($filename)) {
                    die(
    "Il file non esiste");
                }

                
    header("Pragma: public");
                
    header("Expires: 0");
                
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                
    header("Cache-Control: private",false);
                
    header("Content-Type: $ctype");
                
    header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
                
    header("Content-Transfer-Encoding: binary");
                
    header("Content-Length: ".@filesize($filename));
                
    set_time_limit(0);
                @
    readfile("$filename") or die("File non trovato.");
                
    session_start();
                
    //chiudo l'if del timecontrol
                
    } else { echo $_SESSION["timecontrol"]; }
                
    //chiudo l'if è loggato
                
    } else { 
                
    ?> 
                <form action="../public/forum/login.php" method="post" name="login"> 
    <input type="text" name="username">

    <input type="password" name="password">

    <input type="hidden" name="redirect" value="<? echo "../../downloader/dl.php"; if( $id == "" ){ echo ""; } else { echo "?id=".$id; } ?>"> 
    <input type="submit" value="login" name="login">
    </form>
    <? 
    }
                
    session_start();
        
    //time control
                
    $ora date("H:i"time() + 5*60);
                
    $errore "Sono le ".date("H:i"time())." potrai effettuare il prossimo download alle ".$ora;
                
                if ( !
    $_SESSION["timecontrol"] ) {
                
    session_start();
                
    $_SESSION["timecontrol"] = $errore;
                
    //session_destroy(date("H:i", time() + 5*60));
                
    }
    ?>
    Il problema è che non so come determinare il tempo di vita di una sessione (5 minuti in questo caso) e in ogni caso ho dei problemi, lo script non fa partire il download e mostra perennemente il form per il login anche se l'utente è autenticato..
    qualcuno sa aiutarmi? ^_^"
    PS: lo script una volta eseguito non rilascia nessun errore di sintassi :|

  2. #2
    Troppo complicato? non mi sono spiegato bene? Please help!

  3. #3
    Hai controllato che le condizioni dei 2 if fossero verificate?
    cos'è $userdata['session_logged_in'] ?

  4. #4
    $userdata['session_logged_in'] controlla se l'utente è autenticato :\
    In ogni caso, c'è qualche problema con le sessioni secondo me :| Devo dichiarare ogni volta "session start()"? (anke perkè questo problema è sorto dopo aver inserito le sessioni :|)

  5. #5
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    Devo dichiarare ogni volta "session start()"?
    secondo me si, o la inserisci in un file che dopo lo "includi" in ogni pagina...

  6. #6
    Forse sto capendo dove sta l'errore... qualcuno mi sa spiegare come si determina il tempo di validità per una sessione (dopo il quale decade)?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    15
    Ti apro un'altra strada senza scomodare le sessioni..
    Visto che gli utenti a cui è permesso scaricare sono comunque salvati nel database perchè non sfruttare questa situazione !?
    Non ti risulterebbe più semplice aggiungere un campo alla tabella degli utenti in cui salvare l'ora dell'ultimo download !?

  8. #8
    Non che non la conoscessi XD
    Solo che mi scocciava entrare sul db, fare due query lol
    Ormai lo script è fatto ed è pure semplice, se c'è la sessione non scarichi, se non c'è scariki e si crea senza scomodare un database : P

  9. #9
    L'unico modo è settarlo con ini_set? Mh... non credo.. voglio sperare :|

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    15
    non voglio insistere pero' devo
    hai idea di quante query fa un forum phpbb !? (taante)
    2 query in più giustificano tutto questo !?
    penso che sia questa la domanda da porti !
    poi se lo fai per studio o perchè ormai ti sei imputato fai pure )

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.