Hallo,
deze email validation code werkt goed:



<?php
// define variables and set to empty values
$nameErr = $emailErr = $phoneErr = "";
$name = $email = $phone = $message =$success="";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
      $nameErr = "Only letters and white space allowed";
    }
  }
  
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    // check if e-mail address is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid email format";
    }
  }
    
  if (empty($_POST["phone"])) {
    $phoneErr = "phone is required";
  } else {
    $phone = test_input($_POST["phone"]);
    // check if phone only contains Invalid phone number
    if(preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/", $phone)) {      
      $phoneError = "Invalid phone number";

    }
  }
}
	
	function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

?>




ik heb het van w3schools gevonden en bestudeert.

maar wanneer ik deze synax toevoegen :



<?php

if ($name_error=='' and $email_error=='' and $phone_error=='') {
		$message_body='';
		unset($_POST['submit']);
		foreach($POST as $key => $value) {
			$message_body .= "$key:$value\n";
			
		}	
		$to='[email protected]'
		$subject='Contact For Submit'
		if ($mail($to,$subject,$message)) {			
			
			$success="Message Sent,thank you for contacting us!" ;
			$name=$email=$phone=$message=''
		}
	
	}
	
?>




ik krijg deze melding: Er heeft zich een kritieke fout voorgedaan op deze site.

ik heb alleen de eerste lijn van syntax geplakt

</php
if ($name_error=='' and $email_error=='' and $phone_error=='') {
		$message_body='';
		unset($_POST['submit']);
		foreach($POST as $key => $value) {
			$message_body .= "$key:$value\n";
			
		}
?>



en ik zie dat de fout ligt hier . wat het kan de fout zijn?

ik heb in mij html code:



<fieldset>
      <input placeholder="Your name" type="text" name="name" value="name" tabindex="1" autofocus=""></fieldset>
<fieldset>  <input placeholder="Your Email Address" type="text" name="email" value="$email" tabindex="2"></fieldset>
<fieldset>      <input placeholder="Your phone" type="text" name="phone" value="phone" tabindex="3"></fieldset>
<fieldset>
 <textarea placeholder="Type your Message Here...." type="text" name="message" value="message" tabindex="4"></textarea></fieldset>


ik heb al key value gezet boven in html.en ik ook 2 klassen gemaakt voor error en success.

ik ga deze syntax weghalen dan kunt u mij website zien.
url is : https://webdesignleren.com/contact/
hoe ik kan deze probleem oplossen of mischien iemand kan corrigeren voor mij deze code?
dank u wel
Ik heb het idee dat je nu PHP wilt leren, maar dan kan je beter niet in een WordPress omgeving werken.
Los van het feit dat dit niet op die manier hoort (wordpress werkt met plugins), geef ik ook grote kans dat Wordpress roet in het eten gooit.

Dus mijn dringende advies: Als je PHP wilt proberen, doe dit dan buiten een Wordpress omgeving.
geen probleem,
hartelijke bedankt iedere geval.
u hebt typo gezien in $_POST

[size=xsmall]Toevoeging op 04/07/2022 21:14:55:[/size]

ik dank iedereen iedere geval,
hartelijke bedankt
ik zoek morgen verder ik heb toch paar fouten gezien dank zij jullie.
bedankt
Johannes davidian op 04/07/2022 21:07:46

ik heb upload gedaan. daarna voor zekerheid url versuurd maar ik merk niks.
dank u wel

Wat is de URL? Als je die niet deelt, dan kunnen we vrij weinig.
Johannes davidian op 04/07/2022 21:33:01

ik heb de url meerdere malen laten zien
dat is :

https://webdesignleren.com/
https://webdesignleren.com/contact/

We hebben het over ene upload van je screenshot waarop die 'kritieke fout' stond.
Dat zijn de links naar je site.


ik wil alleen weten wat deze syntax precies bedoeld : unset($_POST['submit']);
ik weet dat unset betekent destroy maar wat wordt precies bedoeld met $_POST submit.
dank u wel


Ik weet zeker dat het misschien beter is om gewoon een tutorial erbij te pakken, en netjes bij het begin te beginnen totdat je bij het hoofdstuk, vermoedelijk deel 3, uitkomt waar GET en POST worden besproken.
Naam:
<?php
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}

?>
Dus een naam bevat de letters A tm Z (al dan niet in hoofdletters), een koppelteken en/of een spatie. Ook een apostrof is toegestaan.
Toegegeven, is al beter dan de A-Z die je vaak tegen komt, maar hoe zit het met mensen met een é of ö in de naam? of een ð danwel ç ?


telefoon:
<?php
if(preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/", $phone)) {
$phoneError = "Invalid phone number";

?>

een Nederlands telefoonnummer bevat 10 cijfers, of als je +31 er voor zet, zijn dat er 12
Dit zijn er 3+4+4 = 11 met op merkwaardige plaatsen een koppelteken


[size=xsmall]Toevoeging op 05/07/2022 09:37:57:[/size]

En die ð : dat werd een keer op een PHP congres aangedragen door een spreker uit IJsland die ook daadwerkelijk die letter in zijn naam had staan.
Eigenlijk moet je bij namen enkel valideren of de voornaam en achternaam ingevuld is.
Johannes davidian op 04/07/2022 20:44:21

ik denk het probleem ligt bij deze lijn :

<?php
if ($name_error=='' and $email_error=='' and $phone_error=='') {
		$message_body='';
		unset($_POST['submit']);
		foreach($_POST as $key => $value) {
			$message_body .= "$key:$value\n"; 
?>



Je doet:

<?php
unset($_POST['submit']);
?>

maar je submit button heeft als name attribuut "form_submit"

<button name="form_submit" type="submit" id="contact-submit" data-submit="...Sending">Submit</button>


Zelf geef ik een submit button nooit een name, bijna nooit nodig:

<button type="submit" id="contact-submit" data-submit="...Sending">Submit</button>

dan kun je dit weghalen uit jouw code:

<?php
unset($_POST['submit']);
?>

Als je de name van je submit button hetzelfde wilt blijven houden, dan kun je dit doen:

<?php
unset($_POST['form_submit']);
?>

dank u wel,
het komt omdat ik heb de code gewijzigd naar deze:

function form_capture()  {
	if(isset($_POST['form_submit']))
	{
		$name=sanitize_text_field ($_POST['name']);
		$email=sanitize_text-field ($_POST ['email']) ;
		$phone=sanitize_text-field ($_POST ['phone']);
		$message=sanitize_textarea-field ($_POST ['message']);
		$to='[email protected]';
		$subject='Test Form Submission';
		$message= '' .$name.'-' .$email. '-' .$phone. '-' .$message ;
		wp_mail($to,$subject,$message);
		}
		}
		add_action('wp_head','form_capture') ;


deze code doet wel maar het stuurt en ontvangt geen email. het kan zijn dat ik hotmail gebruikt.
ik moet morgen speciale plug in installeren voor deze probleem.
als zou het verkeer gaan ik zou beginnen vanaf begin coderen met mij eigen style.
ik wardeer de advies van Ivo P over en Nederlands telefoonnummer.
1- wat is de aanpasing code dan voor Nederland met 12 cijfers?

2-(Toegegeven, is al beter dan de A-Z die je vaak tegen komt, maar hoe zit het met mensen met een é of ö in de naam? of een ð danwel ç ?)
A- wat is de aanpasing code dan voor deze probleem?
dank u wel

Reageren