我想用我的php脚本发送表单数据和上传的文件。当我尝试发送邮件时,收到错误消息“上传文件”。我创建的消息是用来查看用户是否上传了一个文件。php上传的文件不会发送
代码:
$error_fnamn = '';
$error_artistlink = '';
$error_email = '';
$error_enamn = '';
$error_downloadlinks = '';
$artistlink = '';
$downloadlinks = '';
$email = '';
$enamn = '';
$fnamn = '';
$data = '';
$formfield_data = '';
$streamlink = '';
$releasedate = '';
$error_data = '';
$formfield_steamlink = '';
##############################################################
// FELMEDDELANDEN PHP
// visar felmeddelanden när du testar dina script
ini_set('display_errors', 1);
// visar alla felmeddelanden men INTE "E_NOTICE" (standardvärdet i php.ini)
// error_reporting(E_ALL^E_NOTICE);
// visar alla felmeddelanden
// error_reporting(E_ALL);
//stäng av eventuella felrapporter
//error_reporting(0);
##############################################################
// CSS-formatering av formulärfält om inget felmeddelande visas
$formfield_fnamn = 'formfield';
$formfield_enamn = 'formfield';
$formfield_email = 'formfield';
$formfield_artistlink = 'formfield';
$formfield_streamlink = 'formfield';
$formfield_downloadlinks = 'formfield';
$formfield_releasedate = 'formfield';
// om submitknappen använts
if(isset($_POST['submit'])){
// kontrollerar om magic_quotes_gpc är aktiverat
if(get_magic_quotes_gpc()){
$email = stripslashes(trim($_POST["email"]));
$fnamn = stripslashes(trim($_POST["artist"]));
$enamn = stripslashes(trim($_POST["trackname"]));
$artistlink = stripslashes(trim($_POST["artistlink"]));
$streamlink = stripslashes(trim($_POST["streamlink"]));
$downloadlinks = stripslashes(trim($_POST["downloadlinks"]));
$releasedate = stripslashes(trim($_POST["releasedate"]));
}
else{
$email = $_POST["email"];
$fnamn = $_POST["artist"];
$enamn = $_POST["trackname"];
$artistlink = $_POST['artistlink'];
$streamlink = $_POST['streamlink'];
$downloadlinks = $_POST['downloadlinks'];
$releasedate = $_POST['releasedate'];
}
########################################################################
// FELMEDDELANDEN - kontrollerar om formulärfält i ifyllda
// anger en variabel som lagrar felmeddelanden
$errors = array();
// kontrollera om ett Förnamn angivits
if (empty($fnamn)) {
// felmeddelandet (array)
$errors[] = 'Ange ditt <strong>förnamn</strong>.';
// formulärfältet
$error_fnamn = '<span class="error_text">*</span>';
$formfield_fnamn = 'error_formfield';
}
// kontrollera om ett Efternamn angivits
if (empty($enamn)) {
// felmeddelandet (array)
$errors[] = 'Ange ditt <strong>efternamn</strong>.';
// formulärfältet
$error_enamn = '<span class="error_text">*</span>';
$formfield_enamn = 'error_formfield';
}
// kontrollera om en E-postadress angivits
if (empty($email)) {
// felmeddelandet (array)
$errors[] = 'Ange din <strong>e-postadress</strong>.';
// formulärfältet
$error_email = '<span class="error_text">*</span>';
$formfield_email = 'error_formfield';
}
if (empty($artistlink)) {
// felmeddelandet (array)
$errors[] = 'Ange din <strong>artistlink</strong>.';
// formulärfältet
$error_artistlink = '<span class="error_text">*</span>';
$formfield_artistlink = 'error_formfield';
}
if (empty($downloadlinks)) {
// felmeddelandet (array)
$errors[] = 'Ange din <strong>downloadlinks</strong>.';
// formulärfältet
$error_downloadlinks = '<span class="error_text">*</span>';
$formfield_downloadlinks = 'error_formfield';
}
if (empty($data)) {
// felmeddelandet (array)
$errors[] = 'Upload your file.';
// formulärfältet
$error_data = '<span class="error_text">*</span>';
$formfield_data = 'error_formfield';
}
// kontrollera om E-postadress är korrekt
$emailcheck = trim($_POST["email"]);
if(!preg_match("/^[a-z0-9\å\ä\ö._-][email protected][a-z0-9\å\ä\ö.-]+\.[a-z]{2,6}$/i", $emailcheck)) {
// felmeddelandet (array)
$errors[] = 'Du har angivit en felaktig <strong>e-postadress</strong>!';
// formulärfältet
$error_email = '<span class="error_text">*</span>';
$formfield_email = 'error_formfield';
}
// kontrollerar den (extra) maximala filstorleken
foreach($_FILES as $userfile){
// sparar filinformation om temporärt filnamn, filtyp, filnamn och filstorlek
$size = $userfile['size'];
if ($size > $max_file_size) {
// felmeddelandet (array)
$errors[] = '<strong>Filstorleken</strong> på en bifogad fil ('.$size.' byte) är större än tillåten storlek ('.$max_file_size.' byte). Välj en fil med mindre storlek!';
}
}
########################################################################
// om felaktig information angivits visas felmeddelandet (array)
if (count($errors)>0){
echo '
<div id="error">';
foreach($errors as $fel)
echo $fel.'<br />';
echo '</div>
';
}
// formmail-scriptet anropas om inga felmeddelanden visas
else {
// hämtar datum, IP och tid
$ip = $_SERVER["REMOTE_ADDR"];
$datum = date("Y-m-d");
$time_local = date('H:i');
########################################################################
// meddelandets innehåll
$mailmessage = "".
"
------------------------------------------------
avsändare: ".$fnamn." ".$enamn."
e-post: ".$email."
artist links: ".$artistlink."
stream links: ".$streamlink."
download or purchase links: ".$downloadlinks."
release date: ".$releasedate."
datum: ".$datum."
tid: ".$time_local."
IP: ".$ip."
";
########################################################################
// lagrar informationen i HEADERS
$multipart_info = "This is a multi-part message in MIME format.\nIf you are reading this, consider upgrading your e-mail client to a MIME-compatible client.\n";
$boundary = md5(uniqid(time()));
$headers = "From: $email \r\n";
$headers .= 'MIME-Version: 1.0' ."\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$boundary .'"' . "\n\n";
$headers .= $multipart_info . "\n";
// Infogar en gräns (boundary)
$headers .= '--'.$boundary."\n";
// Kodning för textinnehåll
$headers .= 'Content-Type: text/plain; charset=ISO-8859-1' ."\n";
$headers .= 'Content-Transfer-Encoding: 7bit'. "\n\n";
// Infogar meddelandets textinnehåll
$headers .= $mailmessage . "\n";
// START slinga för att bifoga flera filer
foreach($_FILES as $userfile){
// sparar filinformation om temporärt filnamn, filtyp, filnamn och filstorlek
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
// kontrollerar att filen laddats upp
if (file_exists($tmp_name)){
// kontrollerar att det är den uppladdade filen som lagrats i variabeln $tmp_name
if(is_uploaded_file($tmp_name)){
// öppnar filen för att läsas binärt
$file = fopen($tmp_name,'rb');
// hämtar filinnehållet till en variabel
$data = fread($file, filesize($tmp_name));
// stänger filen
fclose($file);
// chunk_split — delar en sträng i mindre bitar för att sedan konvertaras till base64_encode
// base64_encode - kodar innehållet med 7 bitars kod stället för 8 bitars kod
// Används för att transportera data genom olika system där alla inte använder 8 bitars kod som tex olika mailklienter
$data = chunk_split(base64_encode($data));
}
// Infogar en gräns (boundary)
$headers .= '--'.$boundary."\n";
$headers .= 'Content-Type: '.$type.'; name="'.$name.'"' ."\n";
// Anger kodning för den bifogade filen
$headers .= 'Content-Transfer-Encoding: base64'. "\n";
// Anger att en bifogad fil finns
$headers .= 'Content-Disposition: attachment; filename="'.$name.'"' ."\n\n";
// Infogar filen uppdelad i mindre bitar med chunk_split och base64_encode
$headers .= $data. "\n\n";
}
} // SLUT slinga för att bifoga flera filer
// Infogar en gräns (boundary)
//$headers .= '--'.$boundary."\n";
########################################################################
// om meddelandefältet för avsändarens e-post inte är tomt skickas meddelandet
if (!empty($_POST["email"])) {
// Mailfunktionen som skickar meddelandet
$send = mail($to, $subject, '', $headers);
if ($send) {
echo '
<div id="confirmation">
<h1>Tack '.$fnamn.'!</h1>
<p>Ditt meddelande enligt nedan har skickats till oss. </p>';
// Om en fil bifogats visas namn och storlek på filen
foreach($_FILES as $userfile){
if(!empty($userfile['name'])) {
echo 'Bifogad fil: '.$userfile['name'].' ('.$userfile['size'].' byte)';
echo '<br />';
}
}
echo '</div>';
}
else {
echo "Det gick inte att skicka ditt meddelande. <br />
Gå tillbaka och prova igen!";
}
}
}
}
ob_end_flush();
if(!isset($_POST['submit']) || (count($errors)>0)){
// FORMULÄR START
echo '
<form action="" method="post" enctype="multipart/form-data" name="kontaktform" id="kontaktform">
<fieldset style="width: 500px;">
<legend>Submit your track!</legend><br />
<label for="artist">'.$error_fnamn.'Artist Name:</label><br />
<input name="artist" type="text" class="'.$formfield_fnamn.'" id="artist" size="30" value="'.$fnamn.'" /><br />
<label for="trackname">'.$error_enamn.'Track Name:</label><br />
<input name="trackname" type="text" class="'.$formfield_enamn.'" id="trackname" size="40" value="'.$enamn.'" /><br />
<label for="email">'.$error_email.'E-mail:</label><br />
<input name="email" type="text" class="'.$formfield_email.'" id="artistlink" size="40" value="'.$email.'" /><br />
<label for="artistlink">'.$error_artistlink.'Artist Link:</label><br />
<input name="artistlink" type="text" class="'.$formfield_artistlink.'" id="artistlink" size="40" value="'.$artistlink.'" /><br />
<label for="streamlink">Stream Link (if applicable):</label><br />
<input name="streamlink" type="text" class="'.$formfield_streamlink.'" id="streamlink" size="40" value="'.$streamlink.'" /><br />
<label for="releasaedate">Release Date (if applicable):</label><br />
<input name="releasedate" type="text" class="'.$formfield_releasedate.'" id="releasedate" size="40" value="'.$releasedate.'" /><br />
<label for="downloadlinks">'.$error_downloadlinks.'Purchase or Download Links:</label><br />
<textarea name="downloadlinks" id="downloadlinks" style="width: 450px; height: 50px; padding: 5px;"
class="'.$formfield_downloadlinks.'" ">'.$downloadlinks.'</textarea><br />
<br />
<label for="filenamn">'.$error_data.'Bild eller fil som ska bifogas meddelandet:</label><br />
<input type="file" name="filename1"'.$formfield_data.'" id="filename1" size="60"'.$data.'" /><br />
做任何你有任何想法可能是什么问题呢?
问候, 亚当
谢谢!它的工作:) –
不客气:)请不要忘记接受答案,以帮助未来的游客 – Pascamel