Salve ho un piccolo problema con un file che permette agli utenti iscritti di scaricare dei file..
Il punto è questo che nella pagina che fa vedere i file all'interno della cartella funziona.. Ma quando si clicca sul file per scaricarlo dice che è inesistente...
vi posto il file così mi potete aiutare
Codice che crea la lista chiamata list.php:
codice:
<?php
session_start();
?>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="3" align="center">MP3</td>
</tr>
<tr>
<td><div align="center">Episodio</div></td>
<td><div align="center">Dimensione</div></td>
<td><div align="center">Mirrors</div></td>
</tr>
<?php
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$inizio = getmicrotime();
//Sarà utile per vedere in quanti secondi processa tutto lo script.
//mi evito tutte le cose che forse voi dovreti piazzare.. ma questo.. è il meno
$configurazione = @include("includes/db.php");
if($configurazione == false)
{
//Non riesce ad aprire il file di configurazione dunque. non può partire poichè appunto, non conosce la directory.
die("Impossibile inizializzare il programma");
}
//Prendiamoci tutti i file della cartella.
if ($handle = opendir($eps_dir))
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
$encode = base64_encode($file);
$a1=filesize("$eps_dir/$file");
$a2=$a1/1024;
$a3=$a2/1024;
$a4=intval($a3);
echo "<tr><td align='center'>".$file."</td><td align='center'>".$a4." MB</td><td align='center'><a target=\"_blank\" href=\"down/get.php/$fakerize/$encode\">Download</a></td></tr>";
}
}
closedir($handle);
}
?>
</table>
Codice che permette o meno di scaricare.. cn verifica log, chiamato get.php
codice:
<?php
session_start();
require("../includes/db.php");
include("../includes/functions.php");
// Carichiamo qualche variabile per il controllo del tempo °__°
$now_time = time();
$dl_limit = $eps_limit*60;
$timeout = $now_time+$dl_limit;
// Prendiamo la directory per scaricare ^^
$dl_dir = explode("/",$eps_dir);
// Connetto al mysql
$connessione = @mysql_connect($db_host,$db_user,$db_pass);
@mysql_select_db($db_name,$connessione);
//Questo è il file più importante...
$cropped = explode("/", $_SERVER['PHP_SELF']);
if($cropped[count($cropped)-2] == $fakerize)
{
$file = $cropped[count($cropped)-1];
$verofile = base64_decode($file);
if(isset($_SESSION[username]))
{
define("OK", true);
}
else if(isset($_SERVER['PHP_AUTH_USER']))
{
$username = $_SERVER["PHP_AUTH_USER"];
$password = md5($_SERVER["PHP_AUTH_PW"]);
//vediamo se è un vero utente o ci sta inculando di brutto.
$query = "SELECT * FROM $table_reg WHERE username ='$username' AND password ='$password'"; //modificala secondo le tue esigenze
if(mysql_fetch_row(mysql_query($query)))
{
define("OK", true);
}
}
else if(!isset($_SERVER['PHP_AUTH_USER']))
{
header("WWW-Authenticate: Basic realm=\"AMWORLD.IT\"");
header("HTTP/1.0 401 Unauthorized");
redirect('javascript:window.close();', 1);
die("Impossibile scaricare!");
}
if(defined("OK"))
{
//inviamogli il file che tanto bramava!
//ma prima... esiste?!
if(is_file($dl_dir[1]."/".$verofile))
{
$control = @mysql_query("SELECT dl_timeout FROM $table_reg WHERE username='$username' OR username='$_SESSION[username]'",$connessione);
$dl_timeout = mysql_fetch_row($control);
if ($dl_timeout[0] >= $now_time) { die("E' possibile scaricare solamente un file ogni $eps_limit minuti"); }
elseif($dl_timeout[0] < $now_time) {
$set_timeout = @mysql_query("UPDATE $table_reg SET dl_timeout='$timeout' WHERE username='$username' OR username='$_SESSION[username]'",$connessione);
mysql_close();
header("Content-Disposition: attachment; filename = $verofile");
header("Content-Transfer-Encoding: binary");
readfile($dl_dir[1]."/".$verofile);
}
}
else
{
redirect('javascript:window.close();', 1);
die("Il file da te richiesto non esiste");
}
}
else
{
unset($_SERVER["PHP_AUTH_USER"]);
unset($_SERVER["PHP_AUTH_PW"]);
redirect('javascript:window.close();', 1);
die("Non sei loghinato.");
}
}
else
{
redirect('javascript:window.close();', 1);
die("Errore. La cartella non esiste.");
}
?>
premetto che nel db.php c'è
codice:
$eps_dir = "down/MP3";
$eps_limit = 10;
$fakerize = base64_encode("togoooo").md5($eps_dir);
Inoltre giusto per farci capire nell cartella down ci sono i file get e list..all'interno di down c'è un altra cartella kiamata MP3
spero che risuciate ad aiutarmi.. grazie