webForumDet fria alternativet

Bifoga filer i formulär!!?

PHP

4 svar · 490 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Någon som vet en enkel "klass" eller ett script som kan hantera bifogade filer (alla typer) via ett formulär?

Tacksam för snabbt svar!

Medlem sedan dec. 1999286 inlägg
#2

Vad vill du göra med de uppladdade filerna?

Medlem sedan juli 20041 271 inlägg
#3

henke skrev:

Vad vill du göra med de uppladdade filerna?

Sorry.. glömde visst skriva det. :r
Denna funktion ska endast tillåta alla besökare att bifoga en fil i ett kontaktformulär som sedan skall skickas till min e-postadress.

Medlem sedan juni 20006 031 inlägg
#4

Gjorde det för längesen, så jag fick leta ett tag innan jag hittade det.
Koden innehåller lite sql och sånt som du får rensa bort själv. Jag kopierade bara rakt av.

if (isset($_POST['utskick'])) {
	
	// Tag bort eventuella blanksteg i början eller slutet
	foreach($_POST as $key => $val){
		$_POST[$key] = trim($val);
	}
	//Kolla efter tomma fält
	if (empty($_POST['amne'])) {
		$reg_error[] = 0; 
	}
	if (empty($_POST['meddelande'])) {
		$reg_error[] = 1; 
	}

	// errorlista 
	$error_list[0] = "Du glömde fylla i ett ämne.";
	$error_list[1] = "Du glömde fylla i meddelandet.";
	
	if (isset($reg_error)){ 
	  // Någon uppgift är fel, skriv ut felmeddelande...
	  echo "Något blev fel:<br>\n"; 
	  echo "<ul>\n"; 
	  for ($i=0; $i<sizeof($reg_error); $i++) { 
		echo "<li>{$error_list[$reg_error[$i]]}</li>\n"; 
	  } 
	  echo "</ul>\n"; 
	  echo "<br><a href=\"javascript:history.back()\">Tillbaka</a>\n";
	  exit;
	}
	
	if ($_POST['vilka'] == 'betalat') {
		$where = " WHERE BETALT >= '".date("Y-m-d")."'";
		if ($_POST['status'] != 'Alla') {
			$and = " AND status = '".$_POST['status']."'";
		} else {
			$and = "";
		}
	}
	if ($_POST['vilka'] == 'ejbetalat') {
		$where = " WHERE BETALT < '".date("Y-m-d")."'";
		if ($_POST['status'] != 'Alla') {
			$and = " AND status = '".$_POST['status']."'";
		} else {
			$and = "";
		}
	}
	if ($_POST['vilka'] == 'Alla') {
		$where = "";
		if ($_POST['status'] != 'Alla') {
			$and = " WHERE status = '".$_POST['status']."'";
		} else {
			$and = "";
		}
	}
	$from    = "".$inst['epost']."";
	$subject = $_POST['amne'];
	$message = $_POST['meddelande'];
	 
	$fileatt      = $_FILES['attachment']['tmp_name'];
	$fileatt_type = $_FILES['attachment']['type'];
	$fileatt_name = $_FILES['attachment']['name'];
	 
	$headers = "From: $from";
	
	if (is_uploaded_file($fileatt)) {
		// Läs in filen som ska bifogas ('rb' = read binary)
		$file = fopen($fileatt,'rb');
		$data = fread($file,filesize($fileatt));
		fclose($file);
			 
		// Generera en boundary string
		$semi_rand = md5(time());
		$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
			 
		// Lägg till headers för filen som bifogas
		$headers .= "\nMIME-Version: 1.0\n" .
					  "Content-Type: multipart/mixed;\n" .
					  " boundary=\"{$mime_boundary}\"";
			 
		// Lägg till multipart boundary över meddelandet
		$message2 = "This is a multi-part message in MIME format.\n\n" .
					 "--{$mime_boundary}\n" .
					 "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
					 "Content-Transfer-Encoding: 7bit\n\n" .
					 $message . "\n\n"; 
			 
		// Base64 encode fildata
		$data = chunk_split(base64_encode($data));

		// Lägg till file attachment till meddelandet
		$message2 .= "--{$mime_boundary}\n" .
					  "Content-Type: {$fileatt_type};\n" .
					  " name=\"{$fileatt_name}\"\n" .
					  "Content-Disposition: attachment;\n" .
					  " filename=\"{$fileatt_name}\"\n" .
					  "Content-Transfer-Encoding: base64\n\n" .
					  $data . "\n\n" .
					  "--{$mime_boundary}--\n";
	}
		
	$getadress = mysql_query("SELECT epost FROM ".$mysql_prefix."medlemmar".$where . $and."") or die(mysql_error());
	while ($rad = mysql_fetch_array($getadress)) {
		$to = $rad['epost'];

		// skicka meddelandet
		mail($to, $subject, "$message $message2", $headers);
	}

	header("Location: kontrollpanel.php?info=mailutskick");
	exit;
}
Medlem sedan juli 20041 271 inlägg
#5

Tyvärr har jag ingen riktig koll på VAD som ska plockas bort från koden ovan. :(
Hade därför uppskattat ifall någon kunde hjälpa mig med detta!!?

Just nu kör jag följande kod (utan bilaga).

<?php 
if (isset($_POST['Submit'])) { 

   $error = "<br><b>OBS! Du m&aring;ste fylla i alla f&auml;lt markerade med <font color=red><sup>1)</sup></font> för att ditt e-postmeddelande ska skickas!</b>"; 

   if($_POST['org_forening'] == "" || $_POST['namn'] == "" || $_POST['email'] == ""){ 

      echo $error; 

   } else { 

      $yourwebsite = "www.mindomain.nu";
      $recipientname = "Min sida"; 
      $subject = "Medlemskap";
      $recipient = "info@mindomain.nu";
      
      $org_forening = stripslashes($_POST['org_forening']);
	  $namn = stripslashes($_POST['namn']);
	  $adress = stripslashes($_POST['adress']);
	  $postadress = stripslashes($_POST['postadress']);
	  $telefon = stripslashes($_POST['telefon']);
      $email = stripslashes($_POST['email']);
	  $verksamhet = stripslashes($_POST['verksamhet']);
	  $syfte = stripslashes($_POST['syfte']);
	  $annat_satt = stripslashes($_POST['annat_satt']);
	  $hemsida = stripslashes($_POST['hemsida']);
	  $medl_info = stripslashes($_POST['medl_info']);
 
      $header = "From: $namn <$email>\r\n";
      $header .= "Reply-to: $namn\r\n";
      $header .= "Return-path: $namn\r\n";
 
 
      $content = "$namn har skickat ett e-postmeddelande till dig från $yourwebsite.\n
	  Förening/Företag : $org_forening
	  Kontaktperson : $namn
	  Adress : $adress
	  Postadress : $postadress
	  Telefon : $telefon\n
	  Verksamhet :
	  $verksamhet\n
	  Syfte med medlemskap : $syfte
	  *Annat :
	  $annat_satt\n
	  Hemsida : $hemsida
	  Information via epost : $medl_info
	  
	  \nDu kan kontakta $namn på e-postadressen: $email.
	  ";
 
      mail($recipient, $subject, $content, $header);
	  //mail($recipient, $subject, $content, $header, "-f$email");
 
      echo "<br><b>Tack $namn! Ditt e-postmeddelande har skickats. Vi kommer kontakta dig så snart som möjligt.</b>";
   }
}
?>

Tack på förhand!

286 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
155 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)