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 :|