foto uploaden bij contactformulier

Status
Niet open voor verdere reacties.

rob1970

Gebruiker
Lid geworden
14 jan 2012
Berichten
296
Je kan ook gewoon hier zeggen wat je momenteel hebt, wat je geprobeerd hebt, en wat momenteel gebeurt, en wat er niet lukt.
Het zou zonde zijn als je misschien op 99% bent en je kapt het af... ;)
 
Ok,

Ik ben nu bezig om deze te proberen: https://html.form.guide/email-form/php-email-form-attachment/

Hier staat als formulier het volgende aangegeven:
HTML:
https://html.form.guide/email-form/php-email-form-attachment/

Nu staat daar dit in: action="php-form-action.php"

Nu moest ik een zip bestand downloaden waar alleen de volgende elementen inzaten (zie screenshot)
Hier zat geen "php-form-action.php" bestand in.
Wel een "send-email-form.php"

Dus dacht ik dan moet ik bij action "send-email-form.php" invullen

Dit is dat betreffende php bestand
PHP:
<?php 
// Pear library includes
// You should have the pear lib installed
include_once('Mail.php');
include_once('Mail_Mime/mime.php');

//Settings 
$max_allowed_file_size = 100; // size in KB 
$allowed_extensions = array("jpg", "jpeg", "gif", "bmp");
$upload_folder = './uploads/'; //<-- this folder must be writeable by the script
$your_email = 'robarnoe@live.nl';//<<--  update this to your email address

$errors ='';

if(isset($_POST['submit']))
{
	//Get the uploaded file information
	$name_of_uploaded_file =  basename($_FILES['uploaded_file']['name']);
	
	//get the file extension of the file
	$type_of_uploaded_file = substr($name_of_uploaded_file, 
							strrpos($name_of_uploaded_file, '.') + 1);
	
	$size_of_uploaded_file = $_FILES["uploaded_file"]["size"]/1024;
	
	///------------Do Validations-------------
	if(empty($_POST['name'])||empty($_POST['email']))
	{
		$errors .= "\n Name and Email are required fields. ";	
	}
	if(IsInjected($visitor_email))
	{
		$errors .= "\n Bad email value!";
	}
	
	if($size_of_uploaded_file > $max_allowed_file_size ) 
	{
		$errors .= "\n Size of file should be less than $max_allowed_file_size";
	}
	
	//------ Validate the file extension -----
	$allowed_ext = false;
	for($i=0; $i<sizeof($allowed_extensions); $i++) 
	{ 
		if(strcasecmp($allowed_extensions[$i],$type_of_uploaded_file) == 0)
		{
			$allowed_ext = true;		
		}
	}
	
	if(!$allowed_ext)
	{
		$errors .= "\n The uploaded file is not supported file type. ".
		" Only the following file types are supported: ".implode(',',$allowed_extensions);
	}
	
	//send the email 
	if(empty($errors))
	{
		//copy the temp. uploaded file to uploads folder
		$path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
		$tmp_path = $_FILES["uploaded_file"]["tmp_name"];
		
		if(is_uploaded_file($tmp_path))
		{
		    if(!copy($tmp_path,$path_of_uploaded_file))
		    {
		    	$errors .= '\n error while copying the uploaded file';
		    }
		}
		
		//send the email
		$name = $_POST['name'];
		$visitor_email = $_POST['email'];
		$user_message = $_POST['message'];
		$to = $your_email;
		$subject="New form submission";
		$from = $your_email;
		$text = "A user  $name has sent you this message:\n $user_message";
		
		$message = new Mail_mime(); 
		$message->setTXTBody($text); 
		$message->addAttachment($path_of_uploaded_file);
		$body = $message->get();
		$extraheaders = array("From"=>$from, "Subject"=>$subject,"Reply-To"=>$visitor_email);
		$headers = $message->headers($extraheaders);
		$mail = Mail::factory("mail");
		$mail->send($to, $headers, $body);
		//redirect to 'thank-you page
		header('Location: thank-you.html');
	}
}
///////////////////////////Functions/////////////////
// Function to validate against any email injection attempts
function IsInjected($str)
{
  $injections = array('(\n+)',
              '(\r+)',
              '(\t+)',
              '(%0A+)',
              '(%0D+)',
              '(%08+)',
              '(%09+)'
              );
  $inject = join('|', $injections);
  $inject = "/$inject/i";
  if(preg_match($inject,$str))
    {
    return true;
  }
  else
    {
    return false;
  }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html>
<head>
	<title>File upload form</title>
<!-- define some style elements-->
<style>
label,a, body 
{
	font-family : Arial, Helvetica, sans-serif;
	font-size : 12px; 
}

</style>	
<!-- a helper script for vaidating the form-->
<script language="JavaScript" src="scripts/gen_validatorv31.js" type="text/javascript"></script>	
</head>

<body>
<?php
if(!empty($errors))
{
	echo nl2br($errors);
}
?>
<form method="POST" name="email_form_with_php" 
action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data"> 
<p>
<label for='name'>Name: </label><br>
<input type="text" name="name" >
</p>
<p>
<label for='email'>Email: </label><br>
<input type="text" name="email" >
</p>
<p>
<label for='message'>Message:</label> <br>
<textarea name="message"></textarea>
</p>
<p>
<label for='uploaded_file'>Select A File To Upload:</label> <br>
<input type="file" name="uploaded_file">
</p>
<input type="submit" value="Submit" name='submit'>
</form>
<script language="JavaScript">
// Code for validating the form
// Visit http://www.javascript-coder.com/html-form/javascript-form-validation.phtml
// for details
var frmvalidator  = new Validator("email_form_with_php");
frmvalidator.addValidation("name","req","Please provide your name"); 
frmvalidator.addValidation("email","req","Please provide your email"); 
frmvalidator.addValidation("email","email","Please enter a valid email address"); 
</script>
<noscript>
<small><a href='http://www.html-form-guide.com/email-form/php-email-form-attachment.html'
>How to attach file to email in PHP</a> article page.</small>
</noscript>

</body>
</html>


Hier staat de pagina met het html contactformulier: https://met-rob.com/klusklub/contact2.html

Als ik die invul en op submit klik krijg ik de volgende meldingen:
Warning: include_once(Mail.php): failed to open stream: No such file or directory in /home/robarnoe/domains/met-rob.com/public_html/klusklub/send-email-form.php on line 4

Warning: include_once(): Failed opening 'Mail.php' for inclusion (include_path='.:/usr/local/php56/lib/php') in /home/robarnoe/domains/met-rob.com/public_html/klusklub/send-email-form.php on line 4

Warning: include_once(Mail_Mime/mime.php): failed to open stream: No such file or directory in /home/robarnoe/domains/met-rob.com/public_html/klusklub/send-email-form.php on line 5

Warning: include_once(): Failed opening 'Mail_Mime/mime.php' for inclusion (include_path='.:/usr/local/php56/lib/php') in /home/robarnoe/domains/met-rob.com/public_html/klusklub/send-email-form.php on line 5

Warning: copy(./uploads/Australische-black-angus-foto.jpg): failed to open stream: No such file or directory in /home/robarnoe/domains/met-rob.com/public_html/klusklub/send-email-form.php on line 66

Fatal error: Class 'Mail_mime' not found in /home/robarnoe/domains/met-rob.com/public_html/klusklub/send-email-form.php on line 81
 
Dan mis je die bestanden.
Maar je gebruikt toch PhpMailer? Die heeft ook een attachment-functie.
 
Ik gebruik geen PHP mailer. Daar moet ik nog een keer induiken maar nog geen tijd voor gehad.
 
Nog even een andere vraag. Als ik dit werkend krijg, krijgt mijn klant dan de ge-uploade foto meteen in zijn mailbox met het ingezonden bericht?

Of komt de foto ergens op een server te staan en moetojn klant die dan zelf daar af halen?

Mijn klant kan nl zelf nog maar net een e-mail versturen met de computer.
 
Ligt aan de implementatie, maar hoe kom je erbij dat de klant het moet ophalen? Het is een attachment oftewel een bijlage.
 
Dan zal ik eerst PHP mailer onder de knie moeten krijgen denk ik.
 
Het valt reuze mee als je logisch kijkt.
Ik heb net een link gezet naar een een voorbeeld (mail.phps).
Als de paden kloppen, en variabelen goed zijn ingevuld moet het werken.

Hier de installatieuitleg":
https://github.com/PHPMailer/PHPMailer

Het composer-verhaal mag je overslaan, als je niet weet hoe dat werkt.
 
Laatst bewerkt:
Oke, hoop dat het lukt, anders horen we het wel.
 
In de bijlage vind je een PHPMailer tester. Het bestand 'config.php' invullen en aanpassen tot het werkt.
Het is geen volledig contactformulier maar wel een hulpmiddel om snel een werkende mailer te krijgen.

Met de linkjes die php4u gaf kan je de html en php voor de 'addAttachment' toevoegen.
 

Bijlagen

  • mailtest.zip
    56,1 KB · Weergaven: 14
Laatst bewerkt:
Laatst bewerkt:
Ik heb even de site bekeken .

Het is juist dat je files niet hebt .
Nu ter verduidelijking u mist de file
https://pear.php.net/package/Mail/download
dan 1.4.1 (indien de nr hoger wordt download altijd de laaste versie)
dit moet je dan onder je path plaatsen en dan zou de werking beter moeten zijn.
Bij de volgend moet je dus mime hebben(er staan er meer dus even opletten dat je de juiste hebt)
dit zou de juist moeten zijn:
https://pear.php.net/package/Mail_Mime/download
Bij het downloaden en uitpakken zal je merken dat het path niet juist is en dus zal moeten hernoemen.
(Je kan dus zoals de persoon die het voorbeeld maakte het in de betreffend directory plaatsen)
Mail_Mime-1.10.10\Mail\
uw path zal alsvolgd noemen
Mail_Mime/
en hier komt het bestand mime.php (mimePart.php plaats je er ook in mogelijk zal die gebruikt worden)

Laat vooral weten in welke script je verder gaat ... plaats de bestanden ook in bijlage aan je topic indien andere willen testen.

*REACTIES voorbehouden aan topicstarter.

ps ik kijk niet elke dag op dit forum daar ik een site heb met vandaag nu al meer of 36000 pageviews
 
Ik ben benieuwd of het Rob inmiddels gelukt is via phpMailer.....

Ik ben er nog niet aan toegekomen.

Heb het op dit moment erg druk met koeriers werk. Maar ga er binnenkort zeker naar kijken.
 
Laatst bewerkt:
Is goed, houd ons op de hoogte... :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan