Ho un semplice form per news che l'utente compila inserendo anche un'immagine poi i dati passano alla pagina
save.php che provvede a salvare il nome del file in una tabella MySql.
Tutto perfetto in locale ma sul server nel database non viene salvato il nome del file $_FILES['immagine']['name']
ma il nome temporaneo $_FILES['immagine']['tmp_name']
All'inizio dello script assegno
$_SESSION['immagine'] = $_FILES['immagine']['name'];
è questa variabile di sessione che poi infilo nel db
ho provato a chiamarla con un echo a fine script
e risulta corretta (nome dell'immagine) ma nel db
continua a essere inserito il nome del file temporaneo
Allego il codice.....
qualche suggerimento!!
Codice PHP:
<?php
session_start();
include_once("../config.php");
include_once("../auth_lib.php");
// verificare se l'utente è gia loggato
list($status, $user) = auth_get_status();
//caso positivo
if($status == AUTH_LOGGED){
//assegnazione variabili di sessione
$_SESSION['titolo'] = $_POST['titolo'];
$_SESSION['testo'] = $_POST['testo'];
$_SESSION['ante'] = $_POST['ante'];
$_SESSION['immagine'] = $_FILES['immagine']['name'];
$_SESSION['giorno'] = $_POST['giorno'];
$_SESSION['mese'] = $_POST['mese'];
$_SESSION['anno'] = $_POST['anno'];
include ("news_lib.php");
include ("../layout/layout.php");
include_once("../coldx.php");
doctype();
head();
body(news);
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
?>
<?php
// controllo varibili provenienti dal form negativo
if (trim($_SESSION['titolo']) == "" OR trim($_SESSION['testo']) == "" OR trim($_SESSION['ante']) == "" OR trim($_SESSION['giorno']) == "" OR trim($_SESSION['mese']) == ""OR trim($_SESSION['anno']) == ""){
echo
"<h1 class=\"allert\">ATTENZIONE !!</h1>\n".
"
Titolo, data, testo, argomento e categoria dell'articolo sono tutti campi obbligatori!</p>\n".
"
Torna <a title=\"torna indietro\" href=\"javascript:history.back();\"> indietro </a></p>\n ";
//ritogliamo le slashes dalle variabili
$_SESSION['titolo'] = resumetext($_SESSION['titolo']);
$_SESSION['testo'] = resumetext($_SESSION['testo']);
$_SESSION['ante'] = resumetext($_SESSION['ante']);
$_SESSION['immagine'] = resumetext($_SESSION['immagine']);
$_SESSION['mese'] = resumetext($_SESSION['mese']);
$_SESSION['giorno'] = resumetext($_SESSION['giorno']);
$_SESSION['anno'] = resumetext($_SESSION['anno']);
}
//controllo variabili superato
else{
// prepara le singole variabili per l'inserimento nel database
$_SESSION['titolo'] = preparetext($_SESSION['titolo']);
$_SESSION['giorno'] = preparetext($_SESSION['giorno']);
$_SESSION['mese'] = preparetext($_SESSION['mese']);
$_SESSION['anno'] = preparetext($_SESSION['anno']);
$_SESSION['ante'] = preparetext($_SESSION['ante']);
$_SESSION['testo'] = preparetext($_SESSION['testo']);
$_SESSION['immagine'] = preparetext($_SESSION['immagine']);
// conversione della data in un solo record con mktime
$data = mktime("0", "0", "0", $_SESSION['mese'], $_SESSION['giorno'], $_SESSION['anno']);
$db = mysql_connect($_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass']);
if ($db == FALSE)
die ("Impossibile connettersi al server database: Verificare i parametri nel file config.php");
mysql_select_db($_CONFIG['dbname'], $db)
or die ("Impossibile trovare il database. Verificare i parametri nel file config.php");
//In caso l'utente tenti di ricaricare la pagina evitiamo la duplicazione del record appena inserito
$query = "SELECT * FROM articoli WHERE titolo = '$_SESSION[titolo]' AND testo = '$_SESSION[testo]' AND ante = '$_SESSION[ante]' AND giorno = '$_SESSION[giorno]' AND mese = '$_SESSION[mese]' AND anno = '$_SESSION[anno]'";
$result = mysql_query($query, $db);
$num = mysql_num_rows($result);
if ($num >0){
$_SESSION['titolo'] = "";
$_SESSION['testo'] = "";
$_SESSION['ante'] = "";
$_SESSION['giorno'] = "";
$_SESSION['mese'] = "";
$_SESSION['anno'] = "";
echo
"<h1>l'articolo é giá stato inserito </h1>\n".
"
Ritorna al <a title\"torna al pannello di controllo\" href=\"abin.php?$year==0&$month==0\">pannello</a> di amministazione</p>\n".
"
";
}
else{
if ( $_SESSION['immagine'] !== "" ) { # controlla innanzitutto le dimensioni del file
$immagine = $_FILES['immagine']['tmp_name'];
$immagine_name = $_FILES['immagine']['name'];
$immagine_size = $_FILES['immagine']['size'];
echo $_FILES['immagine']['name'];
if ($immagine_size < 900000 ) { # se meno di 9 KB
if (copy($immagine,"/home/web/myservername/website/news.01/immagini/$immagine_name")){ # lo copia in una nuova posizione POSIZIONE REMOTA
echo "<h1>Upload del file riuscito !</h1>";
unlink($immagine); # cancella il file temporaneo
//---------------------------------------------------------------------------------------------------
// inizia la procedura di creazione della thumb
//---------------------------------------------------------------------------------------------------
$thumb=new thumbnail("/home/web/myservername/website/news.01/immagini/$immagine_name"); // Gennera l'immagine e setta il nome
$thumb->size_width(300); // setta la larghezza massima dell'immagine, oppure
//$thumb->size_height(300); // setta l'altezza massima dell'immagine, oppure
//$thumb->size_auto(100); // setta l'atezza o la larghezza massima in modo automatico
$thumb->jpeg_quality(100); // [OPZIONALE] setta la qualita per le immagini jpeg (0 - 100) (massima - minima), default = 75
//$thumb->show(); // mostra la thumbnail
$thumb->save("/home/web/myservername/website/news.01/immagini/$immagine_name"); // salva la thumbnail in un file
}
else {
echo "<h1>Upload del file fallito !</h1>
Verificare i permessi della directory \"foto\": i permessi di scrittura devono essere a chmod 777. Se il problema persiste contattare il webmaster.</p>
";
exit;
}
}
else {
echo "<h1>Spiacente, il file da inviare non deve superare le dimensioni di 9 MB</h1>
";
}
}
else {
$_SESSION['immagine'] = "view.png" ;
}
//procediamo con l'iserimento del nuovo record nel database
$query = "INSERT INTO articoli (data, titolo, testo, ante, immage, giorno, mese, anno) VALUES ('$data', '$_SESSION[titolo]', '$_SESSION[testo]', '$_SESSION[ante]', '$_SESSION[immagine]', '$_SESSION[giorno]', '$_SESSION[mese]', '$_SESSION[anno]')";
//query riuscita, azzeriamo le variabili di sessione
if (mysql_query($query, $db)){
$_SESSION['titolo'] = "";
$_SESSION['testo'] = "";
$_SESSION['ante'] = "";
$_SESSION['immagine'] = "";
$_SESSION['giorno'] = ""
$_SESSION['mese'] = "";
$_SESSION['anno'] = "";
echo
"<h1>Il nuovo articolo é stato inserito correttamente</h1>\n".
"
Ritorna al <a title\"torna al pannello di controllo\" href=\"index.php?$year==0&$month==0\">pannello</a> di amministazione</p>\n".
"
";
}
else {
// query fallita messaggio d'errore
echo
"<h1 class=\"allert\">ATTENZIONE !!</h1>
\n".
"
Impossibile inserire l'articolo nel database contattare l'amministratore e verificare il file confing.php</p>\n".
"
\n".
"
Ritorna al <a title\"ritorna alla pagina principale\" href=\"/abin/abin.php?$year==0&$month==0\">pannello</a> di amministazione</p> ";
}
}
}
?>