ciao a tutti, ho un area di upload formata da 2 file:
il file upload.php con il quale si fa l'upload
Codice PHP:
<?
include("uploader.php"); // Don't put anything above this line or you'll get errors
?>
<p><strong><span style="background: #fff; color: #000"><? if($_REQUEST["message"] == "") echo "seleziona un file da caricare con il tasto sfoglia."; else echo $_REQUEST["message"]?></span></strong></p>
<form action="upload.php" enctype="multipart/form-data" id="upload" method="post">
<p><input id="userfile" name="userfile" size="45" type="file" /><input name="upload" type="submit" value="Upload File" /><br /></p>
<p>i file con le seguenti estensioni non sono accettati: <strong><?=$file_extensions_list?></strong> se hai la necessità di caricare file con una di queste estensioniinvia un email a webmaster@angeliperungiorno.it indicando l'estensione del file che vuoi caricare</p>
<p>dimensione massima file: <strong> (<?=round($maximum_file_size/1048576)?>MB)</strong></p>
</form>
<p><strong>file caricati</strong></p>
<table style="border: 2px dotted #000; width: 100%">
<? if($uploaded_files == "") echo " <tr>
<td colspan=\"2\" style=\"background: #fff; color: #000; text-align: center\"><br /><strong>non hai ancora caricato nessun file.</strong><br /><br /></td>
</tr>
"; else echo $uploaded_files ?>
</table>
e uploader.php che elabora
Codice PHP:
<?
// Begin options
$allow_file_deletion = true; // To allow visitors to delete files, leave this at true; otherwise, change it to false
$file_extensions = array(".doc", ".gif", ".htm", ".html", ".jpg", ".png", ".txt"); // Add or delete the file extensions you want to allow
$file_extensions_non_ammesse = array(".php", ".asp", ".cgi");
$file_extensions_list = ".php, .asp, .cgi, .exe"; // Type the same as above, without the quotes separating them
$max_length = 30; // The maximum character length for a file name
$maximum_file_size = "26214400"; // In bytes
$upload_log_file = "upload_log.txt"; // Change this to the log file you want to use
$folder_directory = "http://angelibrescia.altervista.org/upload/";
$message = "";
$set_chmod = 0;
$site_uri = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];
$upload_directory = "uploaded/";
$upload_uri = "http://angelibrescia.altervista.org/uploaded";
if($allow_file_deletion == true) $status = "enabled";
else $status = "disabled";
if($_REQUEST["delete"] && $allow_file_deletion) {
$resource = fopen($upload_log_file,"a");
fwrite($resource,date("F d, Y / h:i:sa")." - ".$_REQUEST["delete"]." deleted by ".$_SERVER["REMOTE_ADDR"]."\n");
fclose($resource);
if(strpos($_REQUEST["delete"],"/.") > 0);
elseif(strpos($_REQUEST["delete"],$upload_directory) === false);
//linea esclusa:
//elseif(substr($_REQUEST["delete"],0,6) == $upload_directory) {
else {
unlink($_REQUEST["delete"]);
$message = "File has been deleted.";
header("Location: $site_uri?message=$message");
}
}
elseif($_FILES["userfile"]) {
$resource = fopen($upload_log_file,"a");
fwrite($resource,date("F d, Y / h:i:sa")." - ".$_FILES["userfile"]["name"]." "
.$_FILES["userfile"]["type"]." uploaded by ".$_SERVER["REMOTE_ADDR"]."\n");
fclose($resource);
$file_type = $_FILES["userfile"]["type"];
$file_name = $_FILES["userfile"]["name"];
$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
@chmod($upload_uri."".$file_name, 0755);
if($_FILES["userfile"]["size"] > $maximum_file_size) {
$message = "ERROR: il file che stai cercando si caricare supera il limite di ".$maximum_file_size." bytes. carica un file più piccolo";
}
elseif($file_name == "") $message = "ERROR: devi selezionare un file da caricare.";
elseif(strlen($file_name > $max_length)) $message = "ERROR: il nome del file è troppo lungo il massimo è ".$max_length." caratteri. cambia il nome e prova a ricaricarlo";
elseif(!preg_match("/^[A-Z0-9_.\- ]+$/i",$file_name)) $message = "ERROR: il nome del tuo file contiene caratteri non ammessi.";
// elseif(!in_array($file_ext, $file_extensions)) $message = "ERROR: <ins>$file_ext</ins> questa estensione del file non è // permessa. manda un email a webmaster@angeliperungiorno.it indicando l'estensione del file // (<ins>$file_ext</ins>)";
elseif(in_array($file_ext, $file_extensions_non_ammesse)) $message = "ERROR: <ins>$file_ext</ins> questa estensione del file non è permessa. manda un email a webmaster@angeliperungiorno.it indicando l'estensione del file (<ins>$file_ext</ins>)";
else $message = upload_file($upload_directory, $upload_uri);
header("Location: $site_uri?message=$message");
}
elseif(!$_FILES["userfile"]);
else $message = "ERROR: file non valido.";
$open = opendir($upload_directory);
$uploaded_files = "";
while($file = readdir($open)) {
if(!is_dir($file) && !is_link($file)) {
$uploaded_files .= " <tr>
<td style=\"background: #fff; color: #000; text-align: left; width: 70%\">
<!--linea originale:
<a href=\"$upload_directory$file\" title=\"$file (".filesize($upload_directory.$file)." bytes)\">".$file."</a>
-->
<!-- file è la variabile del percorso del file da scaricare
download.php è il file .php che gestisce il download
-->
<a href=\"download.php?file=$upload_directory$file\" title=\"$file (".filesize($upload_directory.$file)." bytes)\">".$file."</a>
(".filesize($upload_directory.$file)." bytes)</td>";
if($allow_file_deletion)
$uploaded_files .= "
<td style=\"background: #fff; color: #000; text-align: right; width: 30%\"><a href=\"?delete=$upload_directory".urlencode($file)."\" title=\"Delete File\">Delete File</a></td>";
else
$uploaded_files .= "
<td style=\"background: #fff; color: #000; text-align: right; width: 30%\"><del><strong>Delete File</strong></del></td>";
$uploaded_files .= "
</tr>
<tr>
<td colspan=\"2\" style=\"background: #eee; color: #000; text-align: left; text-indent: 20px\">Uploaded <strong>".date("F d, Y / h:ia", filemtime($upload_directory.$file))."</strong></td>";
$uploaded_files .="
</tr>
";
}
}
function upload_file($upload_directory, $upload_uri) {
$file_name = $_FILES["userfile"]["name"];
$file_name = str_replace(" ","_",$file_name);
$file_path = $upload_directory.$file_name;
$temporary = $_FILES["userfile"]["tmp_name"];
$result = move_uploaded_file($temporary, $file_path);
if(!chmod($file_path,0777))
$message = "ERROR: A folder to place the files was not found, or the files need to be CHMODed to 777. si prega di inviare un email a webmaster@angeliperungiorno.it";
else $message = ($result)?"file caricato con successo." : "An error has occurred.";
return $message;
}
?>
come potete vedere nella pagina uploader.php c'è una linea di codice che salva l'ip e l'ora e il nome del file caricato in un file chiamato upload_log.txt
ho completato l'area di upload proteggendola con un area riservata in php (premetto che i file protetti non sono importantissimi con un area riservata formata da 3 file e 1 stringa:
pagina login.php:
Codice PHP:
<?
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Login</title>
</head>
<body>
<?
function check($user,$password){
include("utenti.php");
foreach($utenti as $user_ => $password_){
if (($user==$user_) AND ($password==$password_)) {
return true;
}
}
return false;
}
function form_login(){
?>
<form id="login" action="<?=$PHP_SELF?>" method="post">
<div style="text-align:center;margin-left:auto;margin-right:auto;">
Utente:<br>
<input type="text" name="utente" size="20" maxlength="255"><br>
Password:<br>
<input type="password" name="password" size="20" maxlength="255"><br><br>
<input type="submit" value=" OK ">
</div>
</form>
<? }
if(isset($_POST["utente"])){
if (check($_POST["utente"],$_POST["password"])){
$_SESSION["utente"] = $_POST["utente"];
$_SESSION["password"] = $_POST["password"];
header("Location: menu.php");
}else{
form_login();
}
}else{
form_login();
}
?>
</body>
</html>
il file utenti.php contenenti le credenziali
Codice PHP:
<?
/*
Per aggiungere un nuovo utente scrivere:
$utenti["nome_utente"] = "password";
Ad esempio, se si vuole aggiungere l'utente mario con password rossi, scrivere:
$utenti["mario"] = "rossi";
*/
$utenti["admin"] = "admin";
$utenti["user1"] = "password1";
?>
il file area-riservata.php
Codice PHP:
<?
session_start();
if(!isset($_SESSION["utente"])){
header("Location:login.php");
die();
}
$utente=$_SESSION['utente'];
$password=$_SESSION['password'];
$data=date("j/n/Y");
$ora=date("H:i:s");
$apri=fopen("log.html", "a");
$ip = getenv("REMOTE_ADDR");
fwrite($apri, "Utente: <b>$utente</b><br/>Data: <b>$data</b> Ora: <b>$ora</b><br/>Ip:<b>$ip</b><hr> ");
fclose($apri);
?>
la stringa da inserire nelle pagine da proteggere
Codice PHP:
<? include("area_riservata.php"); ?>
come potete vedere nel file area-riservata.php uno script salva i log degli utenti
QUELLO CHE VOLGIO FARE IO E' CHE NEL FILE upload_log.php venga salvato anche il nome utente di chi ha fatto l'upload oltre a gli altri dati.
GRAZIE 1000 A TUTTI PER IL VOSTRO AIUTO!!! SIETE FANTASTICI