Upload di un file all'interno di un modulo di registrazione

simonedig

Nuovo Utente
11 Mag 2012
12
0
0
Salve ho creato un modulo di registrazione formato da una tabella contenente una serie di Input di testo (tra cui un input di file) ed un pulsante submit finale che invia l'email di conferma, scrive i valori su database sql e dovrebbe caricare nella cartella uploads il file indicato come allegato ma quest ultima cosa non funziona...dunque ora posto il codice html e php:
HTML:
...<td width="25%" bgcolor="#FFFF99" align="right"><font color="#000080">Professione</font></td>
           <td width="51%" height="15" bgcolor="#F4F4F4" colspan="2"><input rows="1" name="professione" size="40"></td>
           </tr>
           <tr>
           <td width="25%" bgcolor="#FFFF99" align="right"><font color="#000080"><strong>Allega</strong></font></td>
           <td width="77%" height="15" bgcolor="#F4F4F4" colspan="3">
	   <input name="docAllegato" type="file" action="upload"/>[/PHP] 
           ...
PHP:
          mysql_query("INSERT INTO RegistrazioneSocio VALUES  ('$nome','$cognome','$data_americana_nascita','$natoa','$indirizzoResidenza','$citta','$cap','$provincia','$docRiconoscimento','$docNumero','$docRilasciatoDa','$data_americana_Rilascio','$codiceFiscale','$professione','$appartamento','$periodo','$telefono','$cellulare','$fax','$email','$data_americana_Scadenza','$note','$consenso','$docAllegato')") OR DIE($messaggio = mysql_error());

$uploads_dir = './uploads';

        $tmp_name = $_FILES["docAllegato"]["tmp_name"];
        $name = $_FILES["docAllegato"]["name"];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");

Come mai l'upload non funziona?
 

simonedig

Nuovo Utente
11 Mag 2012
12
0
0
Grazie mille ho risolto!!! era proprio quello il problema!! come uno sciocco mi sono sbattuto per una sciokkezza :)...ti ringrazio davvero per la tempestivita nella risposta ;)
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Grazie mille ho risolto!!! era proprio quello il problema!! come uno sciocco mi sono sbattuto per una sciokkezza :)...ti ringrazio davvero per la tempestivita nella risposta ;)
Di nulla, questo problema fece perdere ore anche a me da quella volta è la prima cosa che mi viene in mente quando sento dire upload :p
 

simonedig

Nuovo Utente
11 Mag 2012
12
0
0
Guarda ti giuro che è stato un vero massacro...è dalle 15 di oggi pomeriggio che cerco di capire quale fosse il problema :)...comunque meglio cosi...la prossima volta ci andrà meglio ad entrambi ;)...ma scusa se ti disturbo ancora per un minuto, adesso che sono finalmente riuscito a fare l'upload ho rilevato un altro tipo di problema...ovvero quando invio i dati se ci sono errori di digitazione oppure non sono stati compilati tutti i campi obbligatori vorrei che l'utente avesse la possibilita di completare l'inserimento dati ed eventualmente correggere gli errori...ho utilizzato questo script che tuttavia non funziona e non capisco il perchè...spero sia di nuovo una sciocchezza :)
PHP:
echo "<script language =\"Javascript\">\n";
echo "window.setTimeout(\"history.back();\", 500);\n";
echo "</script>\n";
echo '<script type="text/javascript">alert("Attenzione!!! Non sono stati compilati tutti i campi contrassegnati da asterisco. Tali campi sono obbligatori per confermare la registrazione");</script>';
il punto è che il messaggio compare quindi lo script funziona...ma allora perchè tutti i dati nelle textbox scopaiono?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Scompaiono tutti? Con history(-1); hai provato? Sennò potresti stampare le eventuali variabili post se esistenti

Codice:
<input type='text' name='lol' value="<? @echo $_POST['lol']; ?>">
 

simonedig

Nuovo Utente
11 Mag 2012
12
0
0
Si purtroppo ho provato ma non riesco...scompaiono comunque tutti i campi...ho letto un po in giro che una soluzione potrebbe essere l'utilizzo dell'array $_SESSION anche se per il momento non sto riuscendo ad avere risultati...forse sbaglio io il modo di programmarlo...non riesco a capire perchè con history non vengono memorizzati i valori...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti faccio un piccolo esmpio di come usare le sessioni per "ricordarsi" i valori inseriti
PHP:
<?php
session_start();//questa DEVE essere la prima istuzione
if(isset($_POST['Submit']){
	$_SESSION['nome']=$_POST['nome'];
	//eccetera tutto quello che ci vuole
	//se poi quando tutto è OK unsetti la sessione con unset($_SESSION);
}

if(isset($_SESSION['nome']){
	$nome=$_SESSION['nome'];
}else{
	$nome="";
}
?>

<form name="form1" method="post" action="">
  <p>
    <input name="nome" type="text" id="nome" value="<?php echo $nome;?>">
  </p>
  <p>
    <input type="submit" name="Submit" value="Invia">
  </p>
</form>
poi alcune osservazioni:
i controlli lato client con js sono scenografici, ma facilmente bypassabili, visto che devi inserire i dati nel db e sorattutto uplodare dei file dovresti fare i controlli lato client con php.
 

simonedig

Nuovo Utente
11 Mag 2012
12
0
0
ciao
ti faccio un piccolo esmpio di come usare le sessioni per "ricordarsi" i valori inseriti
PHP:
<?php
session_start();//questa DEVE essere la prima istuzione
if(isset($_POST['Submit']){
	$_SESSION['nome']=$_POST['nome'];
	//eccetera tutto quello che ci vuole
	//se poi quando tutto è OK unsetti la sessione con unset($_SESSION);
}

if(isset($_SESSION['nome']){
	$nome=$_SESSION['nome'];
}else{
	$nome="";
}
?>

<form name="form1" method="post" action="">
  <p>
    <input name="nome" type="text" id="nome" value="<?php echo $nome;?>">
  </p>
  <p>
    <input type="submit" name="Submit" value="Invia">
  </p>
</form>
poi alcune osservazioni:
i controlli lato client con js sono scenografici, ma facilmente bypassabili, visto che devi inserire i dati nel db e sorattutto uplodare dei file dovresti fare i controlli lato client con php.
Ok grazie mille ora funziona perfettamente...comunque potresti spiegarti meglio??? scusami ma non sono molto pratico dato che sono pochi giorni che mi interfaccio con il php...cosa intendi per bypassare?? comunque se ho capito bene il tuo consiglio ho eliminato un paio di script come ad esempio
Codice:
<script language="Javascript">
	window.open("utentenonattivato.php");
	alert('<?php echo $messaggio?>');
</script>
ed ho inserito questo codice php trovato sul web:
PHP:
$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'utentenonattivato.php';
header("Location: http://$host$uri/$extra");
purtroppo ora non mi fa più andare sulla pagina "utentenonattivato.php" ma mi stampa a video questo errore:
Warning: Cannot modify header information - headers already sent by (output started at /web/htdocs/www.amiciresidencetarvisio.com/home/form.php:60) in /web/htdocs/www.amiciresidencetarvisio.com/home/form.php on line 330
da cosa può dipendere??
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
l'errore è dato dalla header che deve venire PRIMA di qualsiasi output html, anche uno spazio è considerato output
es.
PHP:
 <!--qui metto uno spazio-->
<?php
$host  = $_SERVER['HTTP_HOST']; 
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$extra = 'utentenonattivato.php'; 
header("Location: http://$host$uri/$extra");//ti da l'errore Warning: Cannot modify header information....
//....
?>
altro es un echo " " è un out, quindi bisogna stare attenti a dove si usa, se serve si può modificare il flusso, ma questo eventualmente lo vediamo poi.

per spiegarti lo script
l'istruzione session_start(); genera le sessioni, DEVE essere messa in tutte le pagine in cui si usano le sessioni
verifico che sia stato premuto il pulsante di submit e se si passo in sessione il valore proveniente dal form ($_POST['nome'])
in pratica valorizzo una sessione chiamata 'nome', le sessioni rimangono attive (si ricordano) sino a che non esco dal bw
nel form verifico prima che la sessione esista e se si valorizzo una variabile che metterò nel value dell'input.
è evidente che la prima volta che accedo al form la session['nome'] non esiste e quindi value="", se invece avevo scritto un nome sbagliato e ritorno al form la casella dell'input mostreà il nome sbagliato che (volendo) posso correggere.
quando tutto è ok elimino le sessioni perche, come detto rimangono nel bw sino a che non si esce, per cui il form rimarrebbe sempre riempito con i vecchi valori.

poi non ho detto che devi eliminare i js (servono comunque come avviso o altro) ma i controlli devono essere fatti ANCHE lato server che non sono (almeno molto difficilmente) aggirabili.
(es. se disattivo js dal bw i controlli js non hanno più effetto)
i controlli ti servono per evitare che qualcuno ti invii es. un file distruggi_tutto.exe o che per esempio come nome ti invi qualche porcheria, capisci l'importanza dei controlli?
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Modifica file upload in ASP Classic ASP 2
S Upload file senza doverlo selezionare PHP 2
G Upload file error Apache 0
R Modifica codice per l'upload di più file PHP 1
S [PHP] Upload stesso file PHP 14
G [PHP] upload file in server: percorso cartella PHP 2
M Upload 4 file php PHP 11
M [ASP] Upload file da form controllo Classic ASP 5
M [PHP] Nome file, upload e rinominare PHP 2
M [PHP] upload di un file esistente overwrite PHP 1
N [PHP] Test per l'upload di file attraverso un bot Telegram PHP 2
C [PHP] Problema upload file (multiplo) PHP 1
S [PHP] Upload file... PHP 6
P Barra upload file jQuery 1
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
V [PHP] upload di file in cartella e sua sicurezza PHP 137
T [ASP] upload file Classic ASP 3
V File upload.php della guida, ma ha un errore PHP 8
M Fare upload di file scegliendo la cartella di destinazione PHP 78
M rinominare file in upload PHP 3
Y script per upload file PHP 9
Devil-94 rimuovere i spazi del file in upload... PHP 1
R Problema upload file PHP 1
S Indicare una directory di destinazione per l'upload di un file PHP 1
M Errore nell'Upload di un file PHP 0
Nik Implementare script "upload file" nel proprio sito web... tramite google drive Javascript 1
francesco7 [Problema] esecuzione script Upload file in php PHP 0
I upload file php / javascript / mysql PHP 0
D Upload file in cartella con progress bar PHP 6
R upload file php PHP 5
P upload e rename file PHP 2
xone Form con campi input text e upload file PHP 4
A Upload in App Android (sfoglia file) Sviluppo app per Android 1
F Errore filezilla upload file Hosting 1
R upload multiplo di file PHP 7
F upload file PHP 1
M Upload di n solo file in due cartelle diverse PHP 4
C ridurre dimensione file immagine prima dell'upload Javascript 0
F Problema con upload di file PHP 1
P Upload file html speciale HTML e CSS 3
M Adattare script di "form mail con upload file" al mio form mail HTML! PHP 7
G UPLOAD con controllo esistenza file Classic ASP 0
M upload file con progress bar PHP 10
F pagina bianca upload file Joomla 0
A upload file PHP 14
E upload file in un web server, da un'altro web server PHP 2
I upload di piu file contemporaneamente PHP 1
F upload file da iphone,ipadragazzi... PHP 3
M Upload file progress bar Javascript 10
S Upload file con IIS7? Web Server 0

Discussioni simili