Het is lang gelden maar zoals ik van jullie de tip heb gekregen ben ik begonnen aan de hand van deze video een formulier te bouwen lekker om te beginnen het gaat om deze video: https://www.youtube.com/watch?v=g_r4a-DXA7c

en dit is mijn code:


<?php

function validate ($name, $email, $subject, $message)
{
	$error = '';
	
	if($name ==  '')
		$error = 'U hebt geen naam opgegeven';
	
	if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
		$error = 'U hebt geen emailadres opgegeven opgegeven';
	
		if ($subject ==  '')
		$error = 'U hebt geen onderwerp opgegeven opgegeven';
	
		if ($message ==  '')
		$error = 'U hebt geen bericht ingevoerd opgegeven';
	
	
	return $error;
}

$name = '';
$email = '';
$subject = '';
$message = '';

if($_SERVER['REQUEST_METHOD'] == 'POST' )
{
	//FORMULIER IS VERZONDEN
	

	$name = $_POST['name'];
	$email = $_POST['email'];
	$subject = $_POST['subject'];
	$message = $_POST['message'];
	
	$error = validate($name, $email, $subject, $message);
	
	if(error != '')
		echo $error;
	
}

?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title> Contact </title>
<style>
textarea, div, label, input[type=text] {
	font-family:Arial, Helvetica, sans-sarif;
	font-size:18px;
	width:300px;
}
textarea
input[type=text] {
	font-size 14px;
}
textarea {
	height:200px;
}
</style>
</head>

<body>
<div>
<h1>Contact </h1>
<form action="" method ="post">
<label for= "name">Naam:</label><input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<label for= "email">Email:</label><input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<label for= "subject">Onderwerp:</label><input type="text" id="subject" name="subject" value="<?php echo $subject; ?>" />
<label for="message">Bericht:</label> <textarea id="message" name="message"><?php echo $message; ?></textarea>
<input type="submit" value ="verzenden" />
</form>
</div>
</body>
</html>


Ik krijg deze foutmelding: Notice: Use of undefined constant error - assumed 'error' in on line 40 als ik de foutmelding wil testen maar volgens mij is het goed wie is er bereid mij van een klein beetje uitleg te voorzien?
Simple as pie:

$mail->AddAttachment("documents/pdf_order_576575.pdf");
Dank zover was ik gisteren ook gekomen. (ja met jullie hulp gaat het er nog eens van komen dat ik dingen zelf uit vind.

Ik heb nu de code zoals ik denk dat hij moet.

HTML


<input type ="file" name="upload">


PHP


<?php

require 'PHPMailerAutoload.php';

function sendemail($name, $email, $subject, $upload, $phone, $message)
{
	

	$mail = new PHPMailer;
	

	$mail->From ='van adres';
	
	$mail->addAddress ('adres naar');               // Name is optional
	$mail->addReplyTo($email, $name);
	$mail->addCC($email);

	
	$name->name    = $name;
	$mail->Subject = $subject;
	$mail->AddAttachment = $upload;
	$mail->Body = $message; 
	$mail->Body.= $phone;

	

	if($mail->send()) {
		return true;
		// ga dan naar thankyou.html
	}
	else
	{
		echo 'Message could not be sent.';
		echo 'Mailer Error: ' . $mail->ErrorInfo;
		return false;
	}
}

function validate ($name, $email, $subject, $phone, $message)
{
	$error = '';
	
	if($name ==  '')
		$error = 'U hebt geen naam opgegeven';
	
	if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
		 $error = '<font color="red"> U hebt geen emailadres  opgegeven </font>';
	
		if ($subject ==  '')
		 $error = '<font color="red"> U hebt geen onderwerp opgegeven </font>';
	
		if ($phone == '')
		$error = '<font color="red"> U hebt geen telefoonnummer ingevoerd </font> ';
	
		if ($message ==  '')
		$error ='<font color="red"> U hebt geen bericht ingevoerd opgegeven </font> ';
	
	
	return $error;
}

$name = '';
$email = '';
$subject = '';
$upload = '';
$phone = '';
$message = '';

if($_SERVER['REQUEST_METHOD'] == 'POST' )
{
	//FORMULIER IS VERZONDEN
	

	$name = $_POST['name'];
	$email = $_POST['email'];
	$subject = $_POST['subject'];
	$uload = $_POST['upload'];
	$phone = $_POST['phone'];
	$message = $_POST['message'];
	
	$error = validate($name, $email, $subject, $phone, $message);
	
	if($error != '')
		echo $error;
	else
		if(sendemail($name, $email, $subject, $upload, $phone, $message) == true)
			header ('location: thankyou.html');
	
}

?>



Alleen wordt nu de bijlage nog niet meegezonden. De mail wordt verder zonder fouten verzonden. Ik heb volgens mij de finish in zicht.
Bevat je formuliertag het attribuut/de eigenschap enctype="multipart/form-data"? Anders wordt er uberhaupt niets ge-upload.
Oh, je uploads zitten ook in $_FILES he, niet in $_POST.

Daarnaast worden je uploads tijdelijk (voor de duur van het script) in een directory gezet. Als je dit bestand als attachment wilt meesturen zul je deze uit deze tijdelijke folder moeten vissen via $_FILES['upload']['tmp_name']. Als het script klaar is met uitvoering wordt dit bestand verwijderd van deze tijdelijke locatie, voor die tijd zul je hier dus iets mee moeten doen. Ofwel meesturen als attachment, ofwel verplaatsen naar een meer permanente bestemming.

Dit soort bestanden zul je wel voorzichtig moeten behandelen, want deze kunnen virussen/trojans bevatten. Het is een goede gewoonte om nooit "user input" te vertrouwen.
Regel 19 mag weg, die slaat nergens op. Er is geen class die je met $name instantieert.
Mag ik zeggen dat ik echt geen snars van snap! Moet ik een map aanmaken op de server waar ik ze tijdelijk inzet?

Kan je een stukje van de sluier oplichten met een deel van het script?

Bestanden uploaden met PHP is niet echt geheel eenvoudig, tenzij je het behoorlijk goed doorhebt, en wat de valkuilen zijn die Thomas in zijn laatste alinea aanhaalt.

Standaard parkeert PHP de uploads in een aparte /tmp directory waar je meestal geen toegang tot hebt. Daarna kan je deze in je eigen directory schrijven met [php]move_uploaded_files[/php]. Let dan heel goed op de extenties en mimetypes, en controleer in het geval van afbeeldingen of deze met [php]getimagesize[/php] of deze geen FALSE retourneert.

Een kwaad exe-bestand met een trojan is anders snel genoeg geuploadt als iemand misbruik van je formulier maakt. Helaas gebeurt het nog te vaak dat dergelijke beheerderstools onbeveiligd en onbeschermd zijn en misbruikt worden.

Okee, net als PHPmailer heb je ook speciale classes die uplaoden vergemakkelijker, zoals de uploadclass op http://www.verot.net. Deze kan ook meteen op diverse wijze afbeeldingen resizen, croppen, watermerken etc...
Leuk voor beginners, maar ik raad wel aan om je alsnog eens te verdiepen in de werking van uploads via PHP (zie de Table of Contents).
We gaan ons er eens in verdiepen want aan onveilige formulieren hebben we niets dank voor zover
ik kom met een veel gemakkelijkere vraag het is me al uitgelegd maar op de 1 of andere manier wil het niet lukken.

Ik heb de volgende code:



if ($phone == '') \n  // telefoonnummer 
		$error = '<font color="red"> U hebt geen telefoonnummer ingevoerd </font> <br>' ;
	
		if ($message ==  '') \n //bericht
		$error ='<font color="red"> U hebt geen bericht ingevoerd opgegeven </font>'  



(ik weet dat de font de oude manier is maar dat pas ik nog aan! )

De mail kan nu worden verzonden alleen worden het telefoonnummer en het bericht aan elkaar geplakt in de mail die ik ontvang dit wil ik natuurlijk onder elkaar. wat doe ik verkeerd?

Reageren