Form non parte l'allegato....

MAX1972

Nuovo Utente
5 Mag 2012
17
0
1
Ciao a tutti...Di seguito (più avanti) metterò i codici x un form che ho fatto in html e poi le proprietà PHP per il funzionamento di quel form...Funziona tutto regolarmente tranne il fatto che l'allegato che voglio far partire non arriva indicandomi un errore....questo:
Warning: move_uploaded_file(attachments/FATT.MAX.doc) [function.move-uploaded-file]: failed to open stream: Permission denied in D:\Inetpub\webs\miositocom\invia.php on line 10

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\PHP\upload\php6A37.tmp' to 'attachments/FATT. MAX.doc' in D:\Inetpub\webs\miositocom\invia.php on line 10
Email inoltrata correttamente

NB= la riga 10 la potete vedere benissimo nella sorgente della proprietà PHP la quale non capisco dove stia l'anomalia ecco perche' sto chiedendo aiuto.

Volendo però, avrei trovato la soluzione proprio qui sul vostro sito in un tutorial che spiegava come fare un form con allegato però con alcune limitazioni che per la mia utilità mi penalizza per ciui io ho cercato di fondere le 2 cose facendo solo un gran casino...In poche parole dal fom proposto da voi QUI il form e soprattutto l'allegato mi arriva senza problemi solo che questo non ha la convalida degli spazi di compilazione cosa che a me servono...Poi ho porvato ad aggiungere altri campi che (nel vostro) form non sono stati messi ma non ricevo la risposta nella mail che mi arriva nonostante io cerchi di impostare le properieta' nel modo piu' corretto che riesco visto che non sono esperto di linguaggi di programmazione per cui ho applicato fino ad ora solo pillole prese in qua e in la....Per cui la mia domanda e' questa:

Qualcuno potrebbe aiutarmi a fare in modo che il mio form abbia le caratteristiche per quanto riguarda l'invio del allegato (che nel caso del vostro form mi arriva tranquillamente)? oppure fare in modo che il Form preso dal vostro sito abbia le caratteristiche di quello fatto da me con le voci name, phone, request, email, e la spunta per la privacy con la possibilita' di rendere i campi obbligatori?

Qui metto la rorgente html del mio form:

Codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script language="javascript">
function verifica(){
name="";
phone="";
email="";
request="";
spunta="";
if(document.TheForm.email.value==""){
email="Enter your e-mail\n";
document.TheForm.email.focus();
}else if(document.TheForm.email.value.lastIndexOf("@")==-1 || document.TheForm.email.value.lastIndexOf(".")==-1){
email="Insert valid e-mail\n";
document.TheForm.email.focus();
}
if(document.TheForm.request.value==""){
request="Insert request\n";
document.TheForm.request.focus();
}
if(document.TheForm.name.value==""){
name="Enter your name\n";
document.TheForm.name.focus();
}
if(document.TheForm.phone.value==""){
phone="Insert phone\n";
document.TheForm.phone.focus();
}
if(document.TheForm.spunta.checked==false){
spunta="Check for continue\n";
}
error="ERROR MISSING DATA\n";
if((spunta!="")||(email!="")||(name!="")||(phone!="")||(request!="")){
alert(error+name+phone+email+request+spunta)
return false;
}
}
</script>
</head>
<html>
<body>
<td width="123">&nbsp;</td>
  </tr>
  <tr> 
    <td height="114"></td>
    <td></td>
  </tr>
</table>
<table width="289" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr> 
    <td width="289" height="464" valign="top"> <form method="post" enctype="multipart/form-data" action="invia.php" name="TheForm" id="TheForm" onSubmit="return verifica();">
        <p>name and surname<br>
          <input name="name" type="text" id="name">
          <br>
          phone <br>
          <input name="phone" type="text" id="phone">
          <br>
          e-mail<br>
          <input name="email" type="text" id="email">
          <br>
          request<br>
          <textarea name="request" rows="3" id="request"></textarea>
          <br>
          <br>
          attachments<br>
          <input type="file" name="attachment">
          <br>
          <br>
          privacy <br>
          <textarea name="privacy" id="privacy">privacy.........................</textarea>
          <br>
          <br>
          <input name="spunta" type="checkbox" id="spunta" value="tuodato">
          I agree </p>
        <p> 
          <input type="submit" name="Submit" value="send">
        </p>
    </form></td>
  </tr>
</table>
</body>
</html>

Mentre qui metto la proprietà PHP:
PHP:
<?php
//Percorso dove raccoglieremo gli allegati
$path = "attachments/";
//Nome e Cognome
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$message = $_POST['message'];
//Upload dell'allegato
move_uploaded_file($_FILES['attachment']['tmp_name'], $path.$_FILES['attachment']['name']);
//Messaggio
$subject = "Questa Email contiene un allegato";
$bodymail = "Name: ".$name." <br />
			  Phone: ".$phone." <br />
			  Email: ".$email." <br />
			  Message: <br /> ".$request." <br />";
//Inclusione della libreria
require_once("phpmailer/class.phpmailer.php");
//Creiamo un oggetto PHPMailer e ne settiamo le variabili
$mail = new PHPMailer();
$mail->From = $email;
$mail->FromName = $name." ".$surname;
$mail->AddAddress("[email protected]");
$mail->IsHTML(true); 
$mail->Subject = $subject;
$mail->Body = $bodymail;
if($mail->AddAttachment($path.$_FILES['attachment']['name'])){
	//Inviamo l'email
	if($mail->Send()){
		echo "Email inoltrata correttamente";		
	}else{
		echo "Errore invio mail";
	}
}else{
	echo "Errore allegato";
}
?>

Spero di essere stato chiaro e soprattutto spero nel aiuto di qualcuno per risolvere questa cosa che ormai mi porto dietro da un po' di tempo e la cosa inizia ad essere frustrante soprattuto per il fatto che praticamente sono arrivato ad un passo dalla soluzione ma non so come fare questo passo....Premetto che non sono esperto per cui chiedo cortesemente di avere pazienza rendendo eventuali risposte comprensibili....Per i piu' navigati ogni risposta risulta banale ma per chi come me che ha nozioni veramente superficiali tutto diventa un ostacolo....Grazie ancora per l'attenzione.

Saluti
 
Ciao a tutti...Dopo qualche giorno nessuno mi ha saputo purtroppo aiutare in questo problema....forse ho sposto qualcosa di troppo complesso, all'apparenza, inserendo una marea di codici e facendo fuggire chi apriva la pagina del post (eheheheheh)....o probabilmente mi sono spiegato male creando un po' di incomprensioni...O forse perche', e' anche normale, (nessuno e' obbligato a rispondere per cui ne sono consapevole)....comunque voglio credere al fatto che ho fatto un po di confusione per cui cerco di riformulare la richiesta di aiuto cercando di renderla piu' comprensibile e cambiandone l'impostazione...Facciamo che lascio perdere il form da me creato nel primo post e mi concentro su quello postato sul vostro sito per cui fatto da uno di voi ed e' quello che trovate QUI
L'aiuto consiste nel indicarmi se possibile:

1- come fare a rendere i campi obbligatori il quale esce un messaggio di errore in stile pop-up
2-come aggiungo altri campi per poter scrivere altre informazioni? (premetto che so come fare ad aggiungere i campi nel file html) ma non so come integrare le proprieta' nel file php per cui se volessi aggiungere il campo NAME & USERNAME per esempio come dovrei impostarlo nel file php?

Probabilmente mi sto perdendo in un bicchiere d'acqua ma sono settimane che mi scarico file sorgenti di form in giro per il web ma con risultati limitativi....L'unico col quale ricevo gli allegati correttamente e' questo sul vostro sito ma ha limitazioni per quanto riguarda l'uso che ne devo fare io...grazie...:byebye:
 
ciao
per inviare allegati mi sono fatto la seguente funzione

PHP:
<?php
function file_da_allegare($file_nome, $file_tmp){//$_FILES['foto_1']['name'], $_FILES['foto_1']['tmp_name']
	//ricavo il nome del file e del temp cone gli eventuali percorsi
	$nome_file=pathinfo($file_nome, PATHINFO_BASENAME);
	$nome_file_temp=$file_tmp;
	//rivavo il percorso temporaneo con + slash finale
	$cartella_temp=pathinfo($nome_file_temp, PATHINFO_DIRNAME);
	//aggoungo lo slash in funzione del so
	if (strpos($cartella_temp, '/') !== false){
		$cartella_temp.= "/";
	}else{
		$cartella_temp.= "\\";
	}
	//e ricavo il nome del file da allegare con il suo percorso
	$da_allegare=$cartella_temp.$nome_file;
	//uploado e verifico
	if(move_uploaded_file($nome_file_temp, $da_allegare)){
		return $da_allegare;//file caricato in cartella temporanea e nome da indicare a PHPmailler
	}else{
		return FALSE;//c'è stato un errore
	}
}//fine function file da allegare
//........ tutto quello che serve
if($_FILES['foto_1']['name']!=""){//c'è un allegato
			$mail->AddAttachment($allegare);
		}
//... e l'invio.....

?>
comunque per inviare/inviarti allegati DEVI fare altri controlli, non credo che sia piacevole che ti inviino un file del tipo elimina_tutto.exe

p.s.
poi per le altre domande: un argomento un post
 
Grazie ma con questa risposta mi stai dando la tua soluzione per risolvere il problema al primo post che ho fatto giusto?
 
Allora io ho fatto delle prove ancora sul mio perche' mi accorgo che sto facedno veramente casino...Se metto il form con relativi file php sul mio server per cui lo appoggio ad aruba nel mio caso...e vado a compilare il form gli aggiungo un allegato che vado a pescare nella cartella documenti questo non arriva mentre se vado a pescare l'allegato nella cartella attachments mi arriva l'allegato....Ora qui mi sto scervellando perche' non en capisco il nesso....io dal mio computer potrei prendere un file da allegare in qualunque cartella mentre seguendo il ragionamento del file PHP devo andare a prendere un file solo se e' dentro alla cartella attachments....ma che senso ha...un utente al 5000% non avra' mai una cartella nel suo pc col nome attachment dove prendere i file da allegare solo per farmi un favore...mi spiego nel mio concetto?come posso fare in modo che una persona prenda un file da allegare da dove gli pare sul suo pc?...mi faccio capire oppure sono fuori di testa?ehehehehe...
 

Discussioni simili