Caricamento immagini

Cristian Valluzzi

Nuovo Utente
18 Mar 2015
12
0
0
Buonasera a tutti,
ho un problema con lo script qui sotto.
In pratica lo script mi carica sul DB il nome dell'immagine nel formato $ID_small.jpg, ma sul server non viene salvata l'immagine con il relativo nome.
Grazie a tutti per l'aiuto.

Lo script è questo:
PHP:
<?php
include('session.php');
include "../config/config.inc.php"; 

 	$Vedi_big="";
 	$Vedi_small="";
	
	$connessione = mysql_connect ("$db_host", "$db_login", "$db_pass");
	
	$db = mysql_select_db("$database", $connessione);

$id = $_GET['id'];
$Canale = addslashes($_POST['Canale']);
$Data = addslashes($_POST['Data']);
$Giorno = addslashes($_POST['Giorno']);
$Titolo = addslashes($_POST['Titolo']);
$Corpo = addslashes($_POST['Corpo']);
$Autore = addslashes($_POST['Autore']);
$Small = addslashes($_POST['Small']);
$Big = addslashes($_POST['Big']);

	$sql = "INSERT INTO notizie (Canale, Data, Giorno, Titolo, Corpo, Autore) VALUES ('$Canale', '$Data', '$Giorno', '$Titolo', '$Corpo', '$Autore')";
	
	$Azione = mysql_query($sql, $connessione);
	
	$sql ="select ID_Notizia from notizie order by ID_Notizia desc";
	
	$Opera = mysql_query($sql, $connessione);
	
	$riga = mysql_fetch_array($Opera);
	
	$Max=$riga['ID_Notizia'];
	
	$Nome_small=$Max."_Small.jpg";
	
	$Nome_big=$Max."_Big.jpg";
	$uploaddir = '../img_notizie/'; 

	if ($Small !="none") 
	{
		$sql1= "UPDATE notizie SET Immagine_small= '$Nome_small' WHERE ID_Notizia=$Max";			
		$aggiornamento = mysql_query($sql1, $connessione);
	
	move_uploaded_file($_FILES['Small']['tmp_name'], $uploaddir . $_FILES['Nome_Small']['name']);
	
	$Vedi_small=$Nome_small;
	
	}
	
		if ($Big !="none") {
		$sql1= "UPDATE notizie SET Immagine_big= '$Nome_big' WHERE ID_Notizia=$Max";			
		$aggiornamento = mysql_query($sql1, $connessione);
	move_uploaded_file($_FILES['Big']['tmp_name'], $uploaddir . $_FILES['Nome_Big']['name']);

	$Vedi_big=$Nome_big;

	}

?>
 
Ultima modifica di un moderatore:
ciao
così a naso c'è questo che non mi torna
...$_FILES['Small']['tmp_name'], $uploaddir . $_FILES['Nome_Small']['name']);
dovrebbero essere uguali
comunque passato ferragosto ci do un occhio meglio
 
ciao
per prima cosa nel form come ha chiamato il campo di input?
se l'hai chiamato Small devi mettere entrambi Smal, se Nome_Small Nome_Small su entrambi
poi metti dei var_dump che poi toglierai
PHP:
<?php
//......
echo "<pre>";
var_dump($_FILES['Small']['error']);//come detto il nome del campo di input
var_dump($_FILES['Small']['tmp_name']);
var_dump($_FILES['Small']['name']);
echo "</pre>";
move_uploaded_file($_FILES['Small']['tmp_name'], $uploaddir . $_FILES['Small']['name']);
//.....
?>
guarda ed eventualmente posta cosa riportano
eventualmente prova a sostituire move_uploaded_file() con rename()

p.s.
nel form hai messo enctype="multipart/form-data" ?
 
Innanzitutto grazie 1000 per l'interessamento!!!!!

Ho fatto le prove che mi hai detto....ma non funge.
In pratica spedisco tramite il form la variabile small che poi viene letta da pagina di memorizzazione e dopo esser cambiata di nome dovrebbe esser caricata

Il codice delle pagine è il seguente

Pagina con form:

Codice:
<?php
include('session.php');
?>
<?
	$oggi=date("Y");
	$oggi.="-".date("m");
	$oggi.="-".date("j");
?>

<html>
<head>
<title>Form Inserimento Notizia</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="/../css/base.css" type="text/css">
<style type="text/css">
<!--
-->
</style>
<link href="../css/base.css" rel="stylesheet" type="text/css">
<script src="../js/tinymce/tinymce.min.js" language="javascript" type="text/javascript">
</script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
 mode : "textareas"
});
</script>

</head>

<body text="#000000">
<form name="form1" method="post" action="amministrazione.php?Sezione=notizia_add_mem.php" enctype="multipart/form-data">
  <table width="530" border="0" cellspacing="0" cellpadding="0" class="distanza">
    <tr> 
      <td width="16">&nbsp;</td>
      <td width="121">&nbsp;</td>
      <td width="13">&nbsp;</td>
      <td width="380">&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="data">Canale</td>
      <td align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top"> 
        <select name="Canale" class="bordi">
			<option value=''>--- Seleziona un Canale ---</option>
			<option value='HOME'>Home Page</option>
			<option value='NEWS'>News</option>
		</select>
      </td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="per_pedice">&nbsp;</td>
      <td align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top">&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="data">Data</td>
      <td class="Box" align="left" valign="top">&nbsp;</td>
      <td class="Box" align="left" valign="top"> 
        <input type="text" name="Data" class="bordi" value="<? echo $oggi ?>">
      </td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td class="Box" align="left" valign="top">&nbsp;</td>
      <td class="Box" align="left" valign="top">&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="data">Data Evento</td>
      <td class="Box" align="left" valign="top">&nbsp;</td>
      <td class="Box" align="left" valign="top"> 
        <input type="date" name="Giorno" class="bordi" value="<? echo $Giorno ?>">
      </td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td class="Box" align="left" valign="top">&nbsp;</td>
      <td class="Box" align="left" valign="top">&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="data">Titolo</td>
      <td align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top"> 
        <input type="text" name="Titolo" class="bordi" size="60">
      </td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="per_pedice">&nbsp;</td>
      <td align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top">&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td align="left"  valign="top" class="data">Testo</td>
      <td align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top"> 
        <textarea name="Corpo" class="bordi" cols="50" rows="10"></textarea>
      </td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td align="left"  valign="top" class="per_pedice">&nbsp;</td>
      <td align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top">&nbsp;</td>
    </tr>
<tr> 
      <td>&nbsp;</td>
      <td align="left" valign="top" class="data" >Autore</td>
      <td>&nbsp;</td>
      <td>
        <input type="text" name="Autore" class="bordi" size="60">
      </td>
    </tr>
<tr>
  <td>&nbsp;</td>
  <td align="left" valign="top" class="per_pedice" >&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
    <tr> 
      <td>&nbsp;</td>
      <td align="left" valign="top" class="data" >Img Home Page</td>
      <td>&nbsp;</td>
      <td> 
        <input type="file" name="Small" class="bordi" value="Nessuna">
        <br><span class="Titolino">L'immagine deve avere dimensioni 570px*285px</span></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td align="left" valign="top" class="per_pedice" >&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td align="left" valign="top" class="data" >Img Big</td>
      <td>&nbsp;</td>
      <td> 
        <input type="file" name="Big" class="bordi" value="Nessuna">
      </td>
    </tr>
    <tr> 
      <td class="mini">&nbsp;</td>
      <td align="left" valign="top" class="mini">&nbsp;</td>
      <td class="mini">&nbsp;</td>
      <td class="mini">&nbsp;</td>
    </tr>
    <tr valign="middle" align="center"> 
      <td height="7" colspan="4">
        <input type="submit" name="Submit" value="Archivia Notizia" class="bordi">
        <input type="reset" name="Submit2" value="Cancella" class="bordi">
      </td>
    </tr>
  </table>
</form>
</body>
</html>

Pagina di memorizzazione:

Codice:
<?php
include('session.php');
include "../config/config.inc.php"; 

 	$Vedi_big="";
 	$Vedi_small="";
	
	$connessione = mysql_connect ("$db_host", "$db_login", "$db_pass");
	
	$db = mysql_select_db("$database", $connessione);

$id = $_GET['id'];
$Canale = addslashes($_POST['Canale']);
$Data = addslashes($_POST['Data']);
$Giorno = addslashes($_POST['Giorno']);
$Titolo = addslashes($_POST['Titolo']);
$Corpo = addslashes($_POST['Corpo']);
$Autore = addslashes($_POST['Autore']);
$Small = addslashes($_POST['Small']);
$Big = addslashes($_POST['Big']);

	$sql = "INSERT INTO notizie (Canale, Data, Giorno, Titolo, Corpo, Autore) VALUES ('$Canale', '$Data', '$Giorno', '$Titolo', '$Corpo', '$Autore')";
	
	$Azione = mysql_query($sql, $connessione);
	
	$sql ="select ID_Notizia from notizie order by ID_Notizia desc";
	
	$Opera = mysql_query($sql, $connessione);
	
	$riga = mysql_fetch_array($Opera);
	
	$Max=$riga['ID_Notizia'];
	
	$Nome_small=$Max."_Small.jpg";
	
	$Nome_big=$Max."_Big.jpg";
	$uploaddir = '../img_notizie/'; 

	if ($Small !="none") 
	{
		$sql1= "UPDATE notizie SET Immagine_small= '$Nome_small' WHERE ID_Notizia=$Max";			
		$aggiornamento = mysql_query($sql1, $connessione);
echo "<pre>"; 
var_dump($_FILES['Nome_small']['error']);//come detto il nome del campo di input 
var_dump($_FILES['Nome_small']['tmp_name']); 
var_dump($_FILES['Nome_small']['name']); 
echo "</pre>"; 
move_uploaded_file($_FILES['Nome_small']['tmp_name'], $uploaddir . $_FILES['Nome_small']['name']); 

	

		
	$Vedi_small=$Nome_small;
	
	}
	
		if ($Big !="none") {
		$sql1= "UPDATE notizie SET Immagine_big= '$Nome_big' WHERE ID_Notizia=$Max";			
		$aggiornamento = mysql_query($sql1, $connessione);
		move_uploaded_file($Nome_big, $uploaddir . $Nome_big);
		$Vedi_big=$Nome_big;
	}

?>

<html>
<head>
<title>Form Memorizzazione Notizia</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="/_Styles/base.css" type="text/css">
<style type="text/css">
<!--
-->
</style>
<link href="../base.css" rel="stylesheet" type="text/css">
<link href="../css/base.css" rel="stylesheet" type="text/css">
</head>

<body text="#000000">
  <table width="530" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td width="16">&nbsp;</td>
      <td width="121">&nbsp;</td>
      <td width="13">&nbsp;</td>
      
    <td width="380">&nbsp; </td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      
    <td  align="left" valign="top" class="data">ID Notizia</td>
      <td align="left" valign="top">&nbsp;</td>
      
    <td align="left" valign="top" class="Testo_Standard">
      <? echo $Max?>
    </td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="data">Canale Princiale</td>
      <td align="left" valign="top">&nbsp;</td>
      
    <td align="left" valign="top" class="Testo_Standard">
      <? echo $Canale ?>
    </td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="data">Data inserimento</td>
      <td class="Box" align="left" valign="top">&nbsp;</td>
      <td class="Testo_Standard" align="left" valign="top"> 
        <? echo $Data?>
      </td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="data">Data evento</td>
      <td align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top" class="Testo_Standard" >        <? echo $Giorno?>
</td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td  align="left" valign="top" class="data">Titolo Notizia</td>
      <td align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top" class="Testo_Standard" > 
        <? echo $Titolo?>
      </td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td align="left"  valign="top" class="data">Corpo Notizia</td>
      <td align="left" valign="top">&nbsp;</td>
      <td align="left" valign="top"> 
        
      <div align="justify" class="Testo_Standard" > 
        <? echo $Corpo?>
      </div>
      </td>
    </tr>
<tr> 
      <td>&nbsp;</td>
      <td align="left" valign="top" class="data" >Autore</td>
    <td>&nbsp;</td>
      <td align="left" class="Testo_Standard">
        <? echo $Autore?>
      </td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td align="left" valign="top" class="data" >Immagine Small </td>
      <td>&nbsp;</td>
      
    <td align="left" class="Testo_Standard" >
      <? echo $Vedi_small ?>
    </td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td align="left" valign="top" class="data" >Immagine Big</td>
      <td>&nbsp;</td>
      
    <td align="left" class="Testo_Standard" >
      <? echo $Vedi_big ?>
    </td>
    </tr>
    <tr> 
      <td class="mini">&nbsp;</td>
      <td align="left" valign="top" class="mini">&nbsp;</td>
      <td class="mini">&nbsp;</td>
      <td class="mini">&nbsp;</td>
    </tr>
    <tr valign="middle" align="center"> 
      <td height="7" colspan="4">&nbsp; </td>
    </tr>
</table>
</body>
</html>
 
ciao
hai messo i var_dump? cosa ti riportano?
con quelli si riesce a capire se e cosa viene trasmesso
poi una cosa vedo nell'action che trasmetti una querystringa col nome di una pagina php, non so cosa ci fai
action="amministrazione.php?Sezione=notizia_add_mem.php"
ma non è bene trasmettere in chiaro i nomi delle pagine
spero, col valore trasmesso, che tu non ci faccia un include o require
 
ciao
notato adesso
PHP:
<? echo $Data?>
1: non usare lo shorttag <? ma <?php
2: le istruzioni php vanno terminate col ;
quindi
PHP:
<?php echo $Data;?>
 
ciao
notato adesso
PHP:
<? echo $Data?>
1: non usare lo shorttag <? ma <?php
2: le istruzioni php vanno terminate col ;
quindi
PHP:
<?php echo $Data;?>
Fatto!..
...ma il problema rimane.
Lo script non mi da nessun errore e la pagina di memorizzazione mi da conferma caricamento.
Purtroppo sul server non vengono memorizzate le immagini (server aruba con permessi settati a 755)
 
ciao
strano, anche io ho siti su aruba e non uso is_uploaded_file.
comunque è una sicurezza in più. però se le immagini non le carichi tu, ma anche altri diventa essenziale controllare il tipo di file che si vuole caricare.
non credo che ti farebbe piacere che qualcuno ti caricasse es cancella_tutto.exe.
io mi sono fatto una funzioncina
PHP:
<?php
function verifica($file){
	$ammessi=array('jpg','gif','png');//e/o altre estenzioni che ti servono
	$estenzione=strtolower(pathinfo($file, PATHINFO_EXTENSION)); 
	if(in_array($estensione,$ammessi)){
		return TRUE;//l'estensione è consentita
	}else{
		return FALSE;//file con estensione non consentita
	}
}
//poi prima di inserire sia nel db e caricare
if(verifica($_FILES["Small"]["name"]) && verifica($_FILES["Big"]["name"])){
	//qui tutta la parte di registrazione nel db e il caricamento dei due file
}else{
	echo "uno dei due file ha estenzione non consentita";
	//e un ritorno automatico a dove vuoi
}
?>
 
ciao
hai messo i var_dump? cosa ti riportano?
con quelli si riesce a capire se e cosa viene trasmesso
poi una cosa vedo nell'action che trasmetti una querystringa col nome di una pagina php, non so cosa ci fai
action="amministrazione.php?Sezione=notizia_add_mem.php"
ma non è bene trasmettere in chiaro i nomi delle pagine
spero, col valore trasmesso, che tu non ci faccia un include o require

Mi daresti una dritta su come nascondere l'url?
 
ciao
fammi sapere eventualmente cosa ne fai di quella stringa, è proprio necessario trasmettere il nome della pagina?
non potresti tramettere un valore e in base a quello nella pagina ricevente usare tale velore per ricavare la pagina?
poi se proprio è necessario usarla nasconderlo come penso che tu voglia non è semplice, anche perchè se uno guarda col bw il sorgente lo vede, essendo html è visibile.
ti faccio un paio di esempi di come potresti risolvere (però come detto tutto dipende dall'uso che ne fai)
1:
nella pagina in cui trametti
HTML:
<!-- ...... -->
<form name="form1" method="post" action="amministrazione.php?Sezione=987" enctype="multipart/form-data">
<!-- ...... -->
nella pagina in cui ricevi
PHP:
<?php
//...
if(isset($_GET['Sezione']) && (int)$_GET['Sezione']===987){
	 require_once "notizia_add_mem.php";
}
//....ecc
?>
2: oppure codificare e decodificare in modo da confondere
nella pagina che trasmetti
PHP:
<?php
$stringa=str_rot13("notizia_add_mem.php");//risulta: abgvmvn_nqq_zrz.cuc
?>
<form name="form1" method="post" action="amministrazione.php?Sezione=<?php echo $stringa; ?>" enctype="multipart/form-data">
<!-- nel tag form vedi ...   action="amministrazione.php?Sezione=abgvmvn_nqq_zrz.cuc"...-->
<!-- ...... -->
nella pagina in cui ricevi
PHP:
<?php
if(isset($_GET['Sezione'])){
	$stringa=str_rot13($_GET['Sezione']);
	require_once $stringa;
}
?>

prova questo miniscript e ti rendi conto che vedi la stringa codificata in trasmissione e decodificata alla ricezione
PHP:
<?php
if(isset($_GET['Sezione'])){
	$stringa=str_rot13($_GET['Sezione']);
	echo "$stringa<br>";
}
$stringa=str_rot13("notizia_add_mem.php");
echo "$stringa<br>";
//$stringa=convert_uudecode($stringa);
?>
<a href="?Sezione=<?php echo $stringa;?>">vai</a>
 
Ciao Borgo, innanzitutto grazie mille per la tua disponibilità!!!!!!
Il nome della stringa mi serve per caricare all'interno della pagina principale (index) le pagine di gestione dei contenuti (aggiungere/modificare/eliminare le news o gestire canali e foto).
stasera o domani provo a fare le modifiche come da te suggerito.
Ti tengo aggiornato!
 

Discussioni simili