-
Problema upload PHP
Salve a tutti.
Premetto che sono alle prime armi:
Ho messo sul mio portfolio un uploader per gli amici seguendo un tutorial.
Ora volevo personalizzarlo un po' ma non ci riesco. C'è anche un problema, cioè che mettendo il form (sfoglia, carica) dentro a un div esso non funziona più, cliccando su carica o sfoglia o sul campo di testo dove va il percorso del file non succede niente. In più volevo che nell'output restituito mi venisse fuori l'immagine appena caricata e che mi vengano fuori sotto codice il link da copiare per postare l'immagine sui forum. Altra cosa è che quando voglio selezionare il testo del link diretto che risulta nell'ouput non mi fa selezionare il testo.
questo il sito:
http://andread25.altervista.org/
questa la pagina con l'uploader:
http://andread25.altervista.org/hosting.html
e di seguito i codici della prima pagina e di quella dell'output:
Codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>ANDREA D - Mangacars Portfolio</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta name="description" content="My Mangacars Portfolio" />
<meta name="title" content="ANDREA D - Mangacars Portfolio" />
<meta name="keywords" content="Mangacar, Mangacars, Pixelcar, Pixelcars, Pixel art, MCI, auto, tuning" />
<link rel="StyleSheet" href="code.css" type="text/css" />
</head>
<body class="doublefade">
<div id="universal">
<div id="header_right"></div>
<div id="everything">
<div id="header_left"></div>
<div id="header">
<h2><a href="index.html" target="_blank">ANDREA D portfolio</a></h2>
</div>
<div id="main">
<div class>
<div id="main_wrapper">
<div id="nav">
<ul>
<li><a href="index.html">HOMEPAGE</a></li>
<li><a href="stock.html">STOCK</a></li>
<li><a href="tune.html">TUNE</a></li>
<li><a href="parts.html">PARTS</a></li>
<li><a href="team.html">TEAM</a></li>
<li class="on"><a a class="on" href="hosting.html">HOSTING</a></li>
</ul>
</div>
<div id="content">
<div id="content_wide">
<div id="mainheading">
<h1 class="smaller">ANDREA D - Hosting</h1>
</div>
<ul id="breadcrumbs">
<li>MANGACARS IMAGE HOSTER v 0.2</li>
</ul>
<center>
<br>
<form name="upload" method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="uploadfile">
<input type="submit" name="go" value="Carica"></form>
</center>
</div>
</div>
<div id="content_right"></div>
</div>
</div>
</div>
<center>
</center><br>
</div>
</div>
</div>
</body>
</html>
e pagina di output:
Codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>ANDREA D - Mangacars Portfolio</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta name="description" content="My Mangacars Portfolio" />
<meta name="title" content="ANDREA D - Mangacars Portfolio" />
<meta name="keywords" content="Mangacar, Mangacars, Pixelcar, Pixelcars, Pixel art, MCI, auto, tuning" />
<link rel="StyleSheet" href="code.css" type="text/css" />
</head>
<body class="doublefade">
<div id="universal">
<div id="header_right"></div>
<div id="everything">
<div id="header_left"></div>
<div id="header">
<h2><a href="index.html" target="_blank">ANDREA D portfolio</a></h2>
</div>
<div id="main">
<div class>
<div id="main_wrapper">
<div id="nav">
<ul>
<li><a href="index.html">HOMEPAGE</a></li>
<li><a href="stock.html">STOCK</a></li>
<li><a href="tune.html">TUNE</a></li>
<li><a href="parts.html">PARTS</a></li>
<li><a href="team.html">TEAM</a></li>
<li class="on"><a a class="on" href="hosting.html">HOSTING</a></li>
</ul>
</div>
<div id="content">
<div id="content_wide">
<div id="mainheading">
<h1 class="smaller">ANDREA D - Hosting</h1>
</div>
<ul id="breadcrumbs">
<li>MANGACARS IMAGE HOSTER v 0.2</li>
</ul>
<div id="home_content">
<div class="intro">
<center>
<br>
<?php
// controllo che non ci siano stati errori nell'upload (codice = 0)
if ($_FILES['uploadfile']['error'] == 0){
// upload ok
// controllo che il file sia in formato gif
if ($_FILES['uploadfile']['type'] != "image/png") die("Formato file non valido, è permesso solo il formato png");
// copio il file dalla cartella temporanea a quella di destinazione mantenendo il nome originale
copy($_FILES['uploadfile']['tmp_name'], "_altervista_ht/Hosting/".$_FILES['uploadfile']['name']) or die("Impossibile caricare il file");
// upload terminato, stampo alcune info sul file
echo "Upload terminato con successo:<br>";
echo "Nome file: ".$_FILES['uploadfile']['name']."<br><br>";
echo "Direct Link: http://andread25.altervista.org/_altervista_ht/Hosting/".$_FILES['uploadfile']['name']."<br>";
}
else{
// controllo il tipo di errore
if ($_FILES['uploadfile']['error'] == 2){
// errore, file troppo grande (> 1MB)
die("Errore, impossibile caricare il file.");
}
else{
// errore generico
die("Errore, impossibile caricare il file");
}
}
?>
</center>
</div>
<div id="text">
</div>
</div>
</div>
</div>
<div id="content_right"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
-
New Script
Potresti utlizzare, in alternativa, questo mio script:
Codice PHP:
<?
class Upload {
## Variabili editabili ##
public $upload_dir = '/files/'; // Nome della directory dove verranno salvati i file
public $deletable = false; // I file possono essere eliminati da tutti?
public $file_extensions = array('.zip','.jpg','jpeg','.png','.gif','.doc','.html','.txt','.htm','.rar','.exe','.mp3'); // Estensioni di file che possono essere caricati
public $max_size = 20000000; // Dimensione massima del file (in Byte)
## Non modificare altri parametri se non conosci il PHP ##
function index() {
if (isset($_REQUEST['delete'])) {
$this->delete($_REQUEST['delete']);
}
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'upload') {
$this->do_upload();
} else {
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<title>Upload di immagini dei progetti</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">body {margin: 0 auto;padding: 0;color: #3C475B;font-family: "segoe ui", tahoma, sans-serif;font-size: small;}a:link { color: #0a4e96; }a:visited { color: #0a4e96; }a:hover { color: #333; }a:active { color: #000; }#content { margin: 0 auto; padding: 1em 2em 1em 2em;}#content table { border:1px solid #ccc; min-width:600px; text-align:center;}#header h1 { margin: 0; padding: 25px 0 0 0;}#header p { font-weight: bold; margin: 0; padding: 0 0 80px 0;}#footer { border-top: 1px dashed #ccc; font-size: 11px; color: #999; align:center;}</style>
</head>
<body>
<div id="content">
<div id="header">
<h1>Modulo di upload</a></h1>
<p>Con il modulo sottostante potrete caricare le foto dei vostri progetti, che successivamente verranno postati sul sito</p>
<p>Io vi consiglio di comprimere un file rar o zip e inserirgli un file txt con una berve descrizione e la foto della realizzazione</p>
</div>';
$this->show_message();
$this->show_upload_form();
$this->show_files();
if(isset($_GET['message'])) {echo '<meta http-equiv="refresh" content="50; '.$_SERVER['PHP_SELF'].'"';}
echo '<p id="footer"></p></div></body></html>';
}
}
function do_upload() {
$site_name = $_SERVER['HTTP_HOST'];
$url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
$url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$upload_dir = $this->upload_dir;
$upload_url = $url_dir.$this->upload_dir;
$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];
$file_name = str_replace("\\","",$file_name);
$file_name = str_replace("'","",$file_name);
$file_path = $this->upload_dir.$file_name;
$file_ext = strtolower(substr($file_name,strrpos($file_name,".")));
$file_type = $_FILES['userfile']['type'];
if ( $file_name == "") {
$message = "Nome del file non valido";
header("Location: ".$url_this.'?message='.$message);
}
elseif ($_FILES['userfile']['size'] > $this->max_size) {
$message = "Il file è più pesante di 20MB.";
header("Location: ".$url_this.'?message='.$message);
}
elseif (!in_array($file_ext, $this->file_extensions)) {
$message = "Scusate, $file_name($file_type) non è stato uplodato.";
header("Location: ".$url_this.'?message='.$message);
}
else {
$result = move_uploaded_file($temp_name, $file_path);
if (!chmod($file_path,0777)) $message = "Controllare il codice php."; else $message = ($result)?"$file_name é stato caricato sul sito correttamente." : "Qualcosa è andato storto durante l'upload del file";
header("Location: ".$url_this.'?message='.$message);
}
}
function show_message() {
if(isset($_REQUEST['message'])) {
echo $_REQUEST['message'];
}
}
function show_upload_form() {
echo '<form action="'.$_SERVER['PHP_SELF'].'?action=upload" name="upload" id="upload" enctype="multipart/form-data" method="post">
Upload File <input type="file" id="userfile" name="userfile" />
<input type="submit" name="upload" value="Upload" />
</form>';
}
function show_files() {
$handle=opendir($this->upload_dir);
$url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
$upload_url = $url_dir."/".$this->upload_dir;
$filelist = "<h3>Files caricati</h3>";
$filelist .= '<table class="table"><tr><th>Nome file</th><th>Aggiunto in data</th><th>Azioni</th></tr>';
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= '<tr><td>'.$file.'</td>';
$filelist .= '<td>'.date("d-m-Y H:i", filemtime($this->upload_dir.$file))."</td>"."";
$filelist .= '<td><a style="text-decoration:none; font-weight:bold" href="'.$upload_url.$file.'" target="_blank">Visualizza</a> ';
if ($this->deletable) {
$filelist .= "<a style='text-decoration:none; font-weight:bold' href='?delete=$this->upload_dir".urlencode($file)."' title='delete'>Elimina</a></td></tr>";
} else {
echo '</td>';
}
}
}
$filelist .= '</table>';
echo $filelist;
}
function delete($todelete) {
if (strpos($todelete,"/.")>0);
else if (strpos($todelete,$this->upload_dir) === 0) {
if(unlink($todelete)) {
$message = 'File eliminato con successo!';
header('Location: '.$_SERVER['PHP_SELF'].'?message='.$message);
}
}
}
}
$upload = new Upload();
$upload->index();
?>
Ciao e spero di esserti stato di aiuto! :wink:
-
problema script
Ciao flashproducts,
io sono alle prime armi con php. Ho letto la conversazione e ho pensato che il tuo script poteva essere utile anche a me. Ho provato a farlo funzionare ma non mi carica i files e mi scrive 'controllare il codice php'. Non riesco a capire perchè e non so se sia colpa delle mie impostazioni, perchè ho provato con altri script a caricare files ma non ci riescono. Tu sai da cosa può derivare quell'errore?