Hallo,
Ik heb deze php code samengesteld nadat veel zoeken:


<?php

// define variables and set to empty values
$nameErr = $emailErr = $phoneErr = $contentErr = "";
$name_sender = $email_sender= $phone = $content =$succes= "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
	// post
	$name_sender = strip_tags($_POST['name_sender']);
	$email_sender = strip_tags($_POST['email_sender']);
	$phone = strip_tags($_POST['phone']);
	$content = strip_tags($_POST['content']);
	
	// validate name
	if (empty($name_sender)) {
		$nameErr = "Name is required";
	} else {
		// check if name only contains letters and whitespace
		if (!preg_match("/^[a-zA-Z-' ]*$/", $name_sender)) {
			$nameErr = "Only letters and white space allowed";
		}
	}

	// validate email
	if (empty($email_sender)) {
		$emailErr = "Email is required";
	} else {
		// check if email address is well-formed
		if (!filter_var($email_sender, FILTER_VALIDATE_EMAIL)) {
			$emailErr = "Invalid email format";
		}
	}

	// validate phone
	if (empty($phone)) {
		$phoneErr = "Phone is required";
	} else {
		// check if phone is well-formed
		if(!preg_match("/^[0-9\s\-]+$/", $phone)) {
			$phoneErr = "Invalid phone number";
		}
	}

	// validate content
	if (empty($content)) {
		$contentErr = "Content is required";
	} 

	// send
	if ( empty($nameErr) && empty($emailErr) && empty($phoneErr) && empty($contentErr) ) {
		// Variables
		$to = '[email protected]';
		$subject = 'Contact form';
		$success = 'Thank you! You will receive a response as soon as possible.';
           
		
		// Message content
	

		
		// Message content
		$content = "Contact form\n"; 
		$content .= "Name: " .$name_sender. "\n"; 
		$content .= "Email: " .$email_sender. "\n";
		$content .= "Phone: " .$phone. "\n";
		
		
			



	

		// Headers
		$headers	 = 'From: ' .$name_sender. ' <' .$email_sender. '>' . PHP_EOL;
		$headers	.= 'Reply-To: <' .$email_sender. '>' . PHP_EOL;
		$headers	.= 'Content-Transfer-Encoding: 8bit' . PHP_EOL;
		$headers	.= 'Content-Type: text/plain; charset=UTF-8' . PHP_EOL;

		// Send email
		mail($to, $subject,$content, $headers); 
		echo $success;
	}
	
}


// form


?>





de html code is :



<html>

<div class="container">
<form id="contact" method="post">
<h3>Quick Contact</h3>
<h4>Contact us today, and get reply with in 24 hours!</h4>
<fieldset>
<input placeholder="Your name" type="text" name="name_sender" value="<?php echo $name_sender;?>">
<span class="error">* <?php echo $nameErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your Email Address" type="text" name="email_sender" value="<?php echo $email_sender;?>">
<span class="error">* <?php echo $emailErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your phone number" type="text" name="phone" value="<?php echo $phone;?>">
<span class="error">* <?php echo $phoneErr; ?></span>
</fieldset>
<fieldset>
<textarea placeholder="Type your message here.." type="text" name="content"><?php echo $content;?></textarea>
<span class="error">* <?php echo $contentErr; ?></span>
</fieldset>
<fieldset>
<button name="submit" type="submit" id="contact-submit">Submit</button></fieldset>
</form></div>
</html>


nu mij probleem is :

1- wanneer ik gegevens vullen in contact-form en klikt op submit button ik krijg dezelfde gegevens in het velden van de contact-form .

voor duidelijkheid u kunt zelf zien in url : https://webdesignleren.com/contact/

deze code lijn wordt op zelfde wijze gegeven in de tekst veld van contact-form nadat submit button geklikt:


<?php
// Message content
		$content = "Contact form\n"; 
		$content .= "Name: " .$name_sender. "\n"; 
		$content .= "Email: " .$email_sender. "\n";
		$content .= "Phone: " .$phone. "\n";
                $content .= "". "\n\n"; 


?>


2- de text inhoud of de body van de message wordt niet gegeven in mij email box , alleen de naam van sender, email adres en telefoon nummer .

maar wanneer ik deze codes lijn weghalt :

</php

                $content = "Contact form\n"; 
		$content .= "Name: " .$name_sender. "\n"; 
		$content .= "Email: " .$email_sender. "\n";
		$content .= "Phone: " .$phone. "\n";


?>





en allen deze lijn houdt ( $content .= "". "\n\n";) dan wordt wel de ingevulde tekst of body weergegeven in de email box van mij provider.

ik heb heleboel gezocht in google maar ik kunde niet de juiste antwoord vinden.

hoe ik kan deze 2 problemen oplossen?
dank u wel
In regel 12 krijgt $content de waarde van $_POST['content']

$content = strip_tags($_POST['content']);

In regel 62 krijgt $content de waarde "Contact form\n";

$content = "Contact form\n";

$content met de POST waarde wordt dus overschreven.

En dat de input velden met die waarden worden getoond, komt omdat je een echo doet van die waarden.

dank u wel,
wat ik moet doen precis?
1-moet ik deze lijn $content="Contact form\n" helemaal weg doen of andere naam gebruiken voor content in regel 62?
2-moet ik echo helemaal weg doen of er is andere oplossing?
Probeer het eens. Daar leer je van.

Verder raad ik ook aan om te mailen via SMTP en niet via mail(). Deze functie is lastig tot niet te debuggen.

Ikzelf gebruik PHPmailer. Het is zeker de moeite om daar naar te kijken
dank u wel,
ik ga proberen.
ik ga in google informatie zoeken over SMTP en phpmailer.
Oke, succes!
ik heb deze code in regel 62 boven:

</php
// Message content
		$content = "Contact form\n"; 
		$content .= "Name: " .$name_sender. "\n"; 
		$content .= "Email: " .$email_sender. "\n";
		$content .= "Phone: " .$phone. "\n";
		$content .= $content. "\n\n"; 
?>


veranderd naar:

// Message content
	  
		$content .= "". "\n\n"; 



1=ik krijg nu de inhoud van email ook voordat verandering ik krijgte niet inhoud van email.
deze probleem is opgelost.

2- als ik echo name ,email etc wegdoen in html dan zou als iemand een veld vergeten om in te vullenn dan hij of zij moet van begin beginnen om alles nog een keer in te vullen. dus de echo functie helpt om ingevulde velden niet nog een keer invullen.


<html>
<fieldset>

<input placeholder="Your name" type="text" name="name_sender" value="<?php echo $name_sender;?>">

<span class="error">* <?php echo $nameErr; ?></span>
</fieldset>

<fieldset>

input placeholder="Your Email Address" type="text" name="email_sender" value="<?php echo $email_sender;?>">
 
<span class="error">* <?php echo $emailErr; ?></span>
</fieldset>

<fieldset>
<input placeholder="Your phone number" type="text" name="phone" value="<?php echo $phone;?>">

<span class="error">* <?php echo $phoneErr; ?></span>
</fieldset>

<fieldset>
<textarea placeholder="Type your message here.." type="text" name="content"><?php echo $content;?></textarea>
<span class="error">* <?php echo $contentErr; ?></span>

</html>



dus de echo functie kan niet uit doen .

ik moet na klikken van submit button alle velden leeg laten maken met javascript event listener code .
of met php ?
ik weet niet of dat is ook mogelijk met php?
3- ik zie dat alle in gevulde namen adresen etc blijft in de velden als auto aanvulling .
deze moet ook leeg gemaakt worden nadat iemand heeft verlaten contact-form.
ik weet niet of als ik gebruiken event listener na de submit button zou ook deze auto aanvulling leeg gemaakt worden
iedere idea is welkom
dank u wel



[size=xsmall]Toevoeging op 18/07/2022 19:29:24:[/size]

ik herhaal nog een keer .
alles is nu werkt goed tuurlijk na de form werkt perfect dan ik moet voor beveiliging denken.
de probleem is nu na submit button geklikt is en email is verzonden met succes dan moet alle velden schoon gemaakt worden.
ik zie dat deze kan waar maken met event listener js code.
2-ik zie ook in mij contact form de ingevulde velden met namen emailen etc blijven in de velden als auto aanvulling.
die moet ook schoon gemaakt worden .ik weet niet mischien nadat ik heb met js event listener code nadat op button geklikt is alle velden schoon maken mischien wordt deze probleem ook opgelost

ik wil weten nu moet ik met eventlistener nadat geklikt is on submit button de gevulde velden schoon maken of het kan ook met php ?
Na het versturen van je formulier lijkt het mij interessanter om een melding te tonen waarin staat dat het formulier correct verstuurd is. Of een bericht als het mislukt is vanwege een technisch probleem, zoals een fout in de mailfunctie.
dank u wel ,
dat komt later ik moet eerst deze probleem oplossen.
ik zie dat kan met JS event listener.
ik weet niet of dat is ook mogelijk met php?
Gewoon in PHP controleren of er een POST-request heeft plaatsgevonden. Dan voer je de validatie uit, en als de validatie met succes gepasseerd is geef je een net bericht.

Reageren