- Home
- Categorie
- Coding e Sistemistica
- PHP
- problema script invio curriculum
-
problema script invio curriculum
Salve a tutti,
avrei necessità del vostro preziosissimo aiuto.
Ho qualche problema con questo script per l'invio di un curriculum:- la mail arriva perfettamente ma tutti i file che allego vengono rinominati in "curriculum.doc";
- avrei necessità di allegare anche file.pdf;
- nella conferma dell'invio compare questo errore "Warning: fread() [function.fread]: Length parameter must be greater than 0. in /web/htdocs/xxx.xxxxxx.it/home/xx.php on line **101" **
(linea 101 indicata nel form di seguito).
Come posso risolvere?
Grazie a tutti[php]<html>
<head>
<title>Send mail with attach</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#D2D2D2" leftmargin="3" topmargin="3" marginwidth="0" marginheight="0" text="#000000">
<?
function validate_upload($thefile) {
global $thefile_type, $thefile_name, $thefile_size;
$my_max_file_size = "102400"; # in bytes
$registered_types = array(
"application/msword" => ".doc",
"application/octet-stream" => ".doc"
); # these are only a few examples, you can find many more!
$allowed_types = array("application/msword", "application/octet-stream");
$start_error = "\n";
if ($thefile == "none") { # do we even have a file?
$error .= "\n- Nessun documento allegato.<br>";
} else { # check if we are allowed to upload this file_type
if ($thefile_size>$my_max_file_size) $error .= "\n- Il file allegato supera la dimensione massima consentita.<br>";
if (!in_array($thefile_type, $allowed_types)) {
$error .= "\n- Il file che hai inserito non è del tipo richiesto:
<br>\n";
while ($type = current($allowed_types)) {
$error .= "\n" . $registered_types[$type] . " (" . $type . ")<br>";
next($allowed_types);
}
$error .= "\n";
}
if ($error) {
$error = $start_error . $error . "\n";
return $error;
} else {
return false;
}
}
} # END validate_upload
?>
<font face="Arial, Helvetica, sans-serif" size="2"><br>
<?
if ($op=="invio") {
$error=0;
$msg="";
if ($nome=="") {
$error=1;
$msg.="- Il campo nome è vuoto.<br>";
}
if ($cognome=="") {
$error=1;
$msg.="- Il campo cognome è vuoto.<br>";
}
if ($email=="") {
$error=1;
$msg.="- Il campo email è vuoto.<br>";
}
if ($email!="" && !eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email)) {
$error=1;
$msg.="- L'email inserita non è valida.<br>";
}
if ($commento=="") {
$error=1;
$msg.="- Il campo commento è vuoto.<br>";
}
$error_file="";
if (!$thefile || $thefile=="none" || $thefile=="") {
$error=1;
$msg.="- Non hai inserito il curriculum.<br>";
} else $error_file = validate_upload($thefile);
if ($error==1 || $error_file!="") {
echo"<br><br>Attenzione! Si sono verificati i seguenti errori:<br>$msg<br>$error_file<br><a href="javascript:history.back()">Clicca qui</a> per reinserire i dati.";
} else {
$emailto="miaemaildotemail.xx"; // INERIRE L'EMAIL QUI!!
$data=date("j/m/Y");
$ora=date("h:i:s");$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary="XX-1234DED00099A"\n";
$headers .= "Content-Transfer-Encoding: 7bit\n";
$headers .= "From: $email\n";$messaggio="--XX-1234DED00099A\n";
$messaggio.="Content-Type: text/plain; charset=iso-8859-1\n";
$messaggio.="Content-Transfer-Encoding: 7bit\n\r";
$messaggio.="Curriculum inviato il $data alle $ora\n\r\nDati inseriti\n";
$messaggio.="Nome: $nome\n\rCognome: $cognome\n";
if ($telefono!="") $messaggio.="Telefono: $telefono\n";
$messaggio.="Email: $email\nCommento:\n$commento\n";
$oggetto_send="Invio Curriculum";$messaggio.="--XX-1234DED00099A\n";
$messaggio.="Content-Type: application/octet-stream; name="curriculum.doc"\n";
$messaggio.="Content-Transfer-Encoding: base64\n";
$messaggio.="Content-Description: "Curriculum"\n";
$messaggio.="Content-Disposition: attachment\n\r";$fp=@fopen($thefile, "r");
if ($fp) {
$data = fread($fp, filesize($thefile)); //questa è la riga del warning
}
$curr = base64_encode($data);
$messaggio .= "$curr\n\r--XX-1234DED00099A--\n";
if (!mail($emailto, $oggetto_send, $messaggio, $headers)) {
echo"<br><b>Attenzione.</b><br>Si sono verificati degli errori durante l'invio della Email.<br>
Vi preghiamo di riprovare <a href="javascript: history.back()">cliccando qui.</a><br>
Se l'errore persiste Vi invitamo a riprovare più tardi. Grazie.";
}
else {
$messaggio_risposta="Grazie per averci contattato.\n\rIl vostro curriculum è stato inoltrato al responsabile del personale.\n\r\n\rDati inseriti\n";
$messaggio_risposta.="Nome: $nome\n\rCognome: $cognome\n\r";
if ($telefono!="") $messaggio_risposta.="Telefono: $telefono\n\r";
$messaggio_risposta.="Commento:\n\r$commento\n\r\n\r";
$messaggio_risposta.="Distinti saluti,\n\r";
$oggetto2="Curriculum inoltrato";
mail($email, $oggetto2, $messaggio_risposta,"From: Prova prova <$emailto>");
echo "<br><b>Email inviata correttamente.</b><br>
<br>I dati inseriti sono i seguenti:<br><br>";
echo"Nome:<b> $nome </b><br>
Cognome:<b> $cognome</b><br>";
if ($telefono!="") echo"Telefono: <b>$telefono</b><br>";
echo"Email: <b>$email</b><br>Commento:<b> ".nl2br($commento)."</b><br>
<br><br>Grazie per averci contattato.";
}
}} else {
?>
<br><br>Form per invio curriculum<br><br>
<form enctype="multipart/form-data" method="post" action="<?=$PHP_SELF?>" name="contatti">
<table width="550" border="0" cellspacing="3" cellpadding="0">
<tr>
<td>Nome *</td>
<td>
<input type="text" name="nome" size="30">
</td>
</tr>
<tr>
<td>Cognome *</td>
<td>
<input type="text" name="cognome" size="30">
</td>
</tr>
<tr>
<td>Telefono</td>
<td>
<input type="text" name="telefono" size="30">
</td>
</tr>
<tr>
<td>Email *</td>
<td>
<input type="text" name="email" size="30">
</td>
</tr>
<tr>
<td>Allega il tuo curriculum<br>(formato .doc - Max 100 Kb) *</td>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="102400">
<input name="thefile" type="file" SIZE="35">
</td>
</tr>
<tr>
<td>Commento *</td>
<td>
<textarea name="commento" wrap="VIRTUAL" cols="30" rows="5"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<div align="center">
<input type="hidden" name="op" value="invio">
<input type="submit" name="Submit" value="Invia">
<input type="reset" name="Submit2" value="Reimposta">
</div>
</td>
</tr>
</table>
</form>
<font size="1">I campi con l'asterisco sono obbligatori.<br>
<?
}
?>
</font></table>
</body>
</html>
[/php]
-
Ok, allora...
Problema errore nella conferma risolto, problema file.pdf risolto, me ne rimane soltanto uno
Il fatto che tutti i file vengano rinominati in "curriculum.doc" dipende da questa stringa:[PHP]
$messaggio.="Content-Type: application/octet-stream; name="curriculum.doc"\n"; //questa è la stringa incriminata
$messaggio.="Content-Transfer-Encoding: base64\n";
$messaggio.="Content-Description: "Curriculum"\n";
$messaggio.="Content-Disposition: attachment\n\r";
[/PHP]ma come posso risolvere?
Ho provato a fare un pò di modifiche ma non riesco.
Abbiate pazienza ma studio php da pochissimo.
Grazie a tutti
-
Ragazzi, nessuno può darmi una mano?
-
In pratica quando gestisci l'header del file allegato lo dichiari name="curriculum.doc"\n
Devi gestire dinamicamente questo file per poter aver un nome personalizzato per ogni curriculum.Spero di averti aiutato.
-
@daniele_tabacco said:
In pratica quando gestisci l'header del file allegato lo dichiari name="curriculum.doc"\n
Devi gestire dinamicamente questo file per poter aver un nome personalizzato per ogni curriculum.Spero di averti aiutato.
Grazie per la risposta.
Come posso gestire dinamicamente il file?
Se provo ad eliminare la specifica name="curriculum.doc"\n mi arriva l'email con un file senza estensione.
Come posso risolvere?
-
Infatti non devi eliminarla, ma semplicemente gestirla con del codice PHP.
-
@daniele_tabacco said:
Infatti non devi eliminarla, ma semplicemente gestirla con del codice PHP.
Si, questo l'ho capito anche io.
Forse mi esprimo male.
Chiedevo in che modo e con quale codice potevo risolvere il problema.
Grazie
-
per gestirlo dinamicamente dei ottenere in qualche modo il nome del file, per esempio puoi aggiungere un campo al form di invio (se è così che ottieni i dati) che sia
[html]
<input type="text" name="nome_file">
[/html]nel codice PHP poi inserisci questo
[php]
$messaggio.="Content-Type: application/octet-stream; name="".$_POST["nome_file"].".doc"\n";
[/php]Così ottieni direttamente dall'utente il nome del file da allegare.
Inoltre per gestire il file pdf, io ho scoperto una libreria, fpdf, open source e facilissa da usare, che ti permette di "stampare" direttamente da php file in formato pdf...
Spero di esserti stato utile...ciao
-
@Endorama said:
per gestirlo dinamicamente dei ottenere in qualche modo il nome del file, per esempio puoi aggiungere un campo al form di invio (se è così che ottieni i dati) che sia
[html]
<input type="text" name="nome_file">
[/html]nel codice PHP poi inserisci questo
[php]
$messaggio.="Content-Type: application/octet-stream; name="".$_POST["nome_file"].".doc"\n";
[/php]Così ottieni direttamente dall'utente il nome del file da allegare.
Inoltre per gestire il file pdf, io ho scoperto una libreria, fpdf, open source e facilissa da usare, che ti permette di "stampare" direttamente da php file in formato pdf...
Spero di esserti stato utile...ciao
Grazie mille, provo e ti faccio sapere.
-
Allora, ho risolto così:
[php]$messaggio.="Content-Type: application/octet-stream; name="".$_POST["cognome"].".doc"\n";[/php]Così l'allegato arriverà "cognome.doc"
Grazie a tutti ed in particolar modo Endorama per l'aiuto.
Posto tutto il codice per chi come me avesse la necessità di creare un modulo per un curriculum[php]<html>
<head>
<title>Compilare il seguente modulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="layout.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?
function validate_upload($thefile) {
global $thefile_type, $thefile_name, $thefile_size;
$my_max_file_size = "102400"; # in bytes
$registered_types = array(
"application/msword" => ".doc",
"application/octet-stream" => ".doc",
"application/pdf" => ".pdf"
); # these are only a few examples, you can find many more!
$allowed_types = array("application/msword", "application/octet-stream");
$start_error = "\n";
if ($thefile == "none") { # do we even have a file?
$error .= "\n- Nessun documento allegato.<br>";
} else { # check if we are allowed to upload this file_type
if ($thefile_size>$my_max_file_size) $error .= "\n- Il file allegato supera la dimensione massima consentita.<br>";
if (!in_array($thefile_type, $allowed_types)) {
$error .= "\n- Il file che hai inserito non è del tipo richiesto:
<br>\n";
while ($type = current($allowed_types)) {
$error .= "\n" . $registered_types[$type] . " (" . $type . ")<br>";
next($allowed_types);
}
$error .= "\n";
}
if ($error) {
$error = $start_error . $error . "\n";
return $error;
} else {
return false;
}
}
} # END validate_upload
?>
<font face="Arial, Helvetica, sans-serif" size="2"><br>
<?
if ($op=="invio") {
$error=0;
$msg="";
if ($nome=="") {
$error=1;
$msg.="- Il campo nome è vuoto.<br>";
}
if ($cognome=="") {
$error=1;
$msg.="- Il campo cognome è vuoto.<br>";
}
if ($email=="") {
$error=1;
$msg.="- Il campo email è vuoto.<br>";
}
if ($email!="" && !eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email)) {
$error=1;
$msg.="- L'email inserita non è valida.<br>";
}
if ($commento=="") {
$error=1;
$msg.="- Il campo commento è vuoto.<br>";
}
$error_file="";
if (!$thefile || $thefile=="none" || $thefile=="") {
$error=1;
$msg.="- Non hai inserito il curriculum.<br>";
} else $error_file = validate_upload($thefile);
if ($error==1 || $error_file!="") {
echo"<br><br>Attenzione! Si sono verificati i seguenti errori:<br>$msg<br>$error_file<br><a href="javascript:history.back()">Clicca qui</a> per reinserire i dati.";
} else {
[email protected]; // INERIRE L'EMAIL QUI!!
$data=date("j/m/Y");
$ora=date("h:i:s");$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary="XX-1234DED00099A"\n";
$headers .= "Content-Transfer-Encoding: 7bit\n";
$headers .= "From: $email\n";$messaggio="--XX-1234DED00099A\n";
$messaggio.="Content-Type: text/plain; charset=iso-8859-1\n";
$messaggio.="Content-Transfer-Encoding: 7bit\n\r";
$messaggio.="Curriculum inviato il $data alle $ora\n\r\nDati inseriti\n";
$messaggio.="Nome: $nome\n\rCognome: $cognome\n";
if ($telefono!="") $messaggio.="Telefono: $telefono\n";
$messaggio.="Email: $email\nCommento:\n$commento\n";
$oggetto_send="Invio Curriculum";$messaggio.="--XX-1234DED00099A\n";
$messaggio.="Content-Type: application/octet-stream; application/msword; name="".$_POST["cognome"].".doc"\n";
$messaggio.="Content-Transfer-Encoding: base64\n";
$messaggio.="Content-Description: "Curriculum"\n";
$messaggio.="Content-Disposition: attachment\n\r";$fp=@fopen($thefile, "r");
if ($fp) {
$data = fread($fp, filesize($thefile));
}
$curr = base64_encode($data);
$messaggio .= "$curr\n\r--XX-1234DED00099A--\n";
if (!mail($emailto, $oggetto_send, $messaggio, $headers)) {
echo"<br><b>Attenzione.</b><br>Si sono verificati degli errori durante l'invio della Email.<br>
Vi preghiamo di riprovare <a href="javascript: history.back()">cliccando qui.</a><br>
Se l'errore persiste Vi invitamo a riprovare più tardi. Grazie.";
}
else {
$messaggio_risposta="Grazie per averci contattato.\n\rIl vostro curriculum è stato inoltrato al responsabile del personale.\n\r\n\rDati inseriti\n";
$messaggio_risposta.="Nome: $nome\n\rCognome: $cognome\n\r";
if ($telefono!="") $messaggio_risposta.="Telefono: $telefono\n\r";
$messaggio_risposta.="Commento:\n\r$commento\n\r\n\r";
$messaggio_risposta.="Distinti saluti,\n\r";
$oggetto2="Curriculum inoltrato";
mail($email, $oggetto2, $messaggio_risposta,"From: Prova prova <$emailto>");
echo "<br><b>Email inviata correttamente.</b><br>
<br>I dati inseriti sono i seguenti:<br><br>";
echo"Nome:<b> $nome </b><br>
Cognome:<b> $cognome</b><br>";
if ($telefono!="") echo"Telefono: <b>$telefono</b><br>";
echo"Email: <b>$email</b><br>Commento:<b> ".nl2br($commento)."</b><br>
<br><br>Grazie per averci contattato.";
}
}} else {
?>
<br><br>Compila il mudulo per l´invio del curriculum<br><br>
<form enctype="multipart/form-data" method="post" action="<?=$PHP_SELF?>" name="contatti">
<table width="550" border="0" cellspacing="3" cellpadding="0">
<tr>
<td>Nome *</td>
<td>
<input type="text" name="nome" size="30">
</td>
</tr>
<tr>
<td>Cognome *</td>
<td>
<input type="text" name="cognome" size="30">
</td>
</tr>
<tr>
<td>Telefono</td>
<td>
<input type="text" name="telefono" size="30">
</td>
</tr>
<tr>
<td>E-mail *</td>
<td>
<input type="text" name="email" size="30">
</td>
</tr>
<tr>
<td>Allega il tuo curriculum<br>(formato .doc- Max 100 Kb) *</td>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="102400">
<input name="thefile" type="file" SIZE="35">
</td>
</tr>
<tr>
<td>Commento *</td>
<td>
<textarea name="commento" wrap="VIRTUAL" cols="30" rows="5"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<div align="center">
<input type="hidden" name="op" value="invio">
<input type="submit" name="Submit" value="Invia">
<input type="reset" name="Submit2" value="Reimposta">
</div>
</td>
</tr>
</table>
</form>
<font size="1">I campi con l'asterisco sono obbligatori.<br>
<?
}
?>
</font></table>
</body>
</html>
[/php]
-
Figurati...Mi fa piacere averti dato una mano!!!
Ciao!
-
@adwmaster said:
Posto tutto il codice per chi come me avesse la necessità di creare un modulo per un curriculum
[php]<html>
<head>
<title>Compilare il seguente modulo</title>
.............cut...............</table>
</body>
</html>
[/php]Salve, riprendo questo post per avere un aiuto...
ho preso questo codice, ho cambiato l'email ed ho messo la mia, l'ho caricata sul mio server (hostingvirtuale) ma dopo aver compilato tutti i campi clicco invia e non succede nulla... o meglio ritorna allo stato iniziale, cioè con i campi vuoticosa dovrei fare? grazie a tutti