Hallo PHP-ers,

Wie kan mij helpen ik heb dit script hieronder alleen er moet een email checker in weet iemand voor dit script de code? en de error velden moeten juist achter het veld staan wat niet is ingevuld nu zet hij het steeds boven neer.

<?php

if(function_exists('date_default_timezone_set')) { date_default_timezone_set('Europe/Amsterdam'); }
define('LF', "\n");

// Get a value from the $_POST array (case insensitive!!)
function getPost($key, $trim = false, $lowercase = false, $int = false)
{
if(isset($_POST[$key]))
{
$v = stripslashes($_POST[$key]);

if($trim)
{
$v = trim($v);
}

if($int)
{
$v = intval($v);
}
elseif($lowercase)
{
$v = strtolower($v);
}

return $v;
}

return '';
}
// Default values
$field_1 = '';
$field_2 = '';
$field_3 = '';

$sHtml = '';
$sFormError = '';

// Process form
if(empty($_POST['form']) == false)
{
$field_1 = getPost('field_1', true);
if(strlen($field_1) == 0) { $sFormError = 'Vul a.u.b. uw Naam in.'; }
$field_2 = getPost('field_2', true);
if(strlen($field_2) == 0) { $sFormError = 'Vul a.u.b. uw Emailadres in.'; }
$field_3 = getPost('field_3', true);
}

// Show form
if(empty($_POST['form']) || $sFormError)
{
$sHtml .= '<form action="" method="post">
<input name="form" type="hidden" value="form1">
' . $sFormError . '
<table border="0" cellpadding="3" cellspacing="0"><tr>
<td align="left" class="label" valign="top">* Naam</td>
<td align="left" class="input" valign="top"><input name="field_1" type="text" value="' . htmlentities($field_1) . '"></td>
</tr>
<tr>
<td align="left" class="label" valign="top">* Emailadres</td>
<td align="left" class="input" valign="top"><input name="field_2" type="text" value="' . htmlentities($field_2) . '"></td>
</tr>
<tr>
<td align="left" class="label" valign="top">Opmerking</td>
<td align="left" class="input" valign="top"><textarea name="field_3">' . htmlentities($field_3) . '</textarea></td>
</tr>
<tr>
<td align="left" class="text" valign="top">&nbsp;</td>
<td align="left" class="input" valign="top"><input type="submit" value="Verzenden"> <input type="reset" value="Wissen"></td>
</table>
</form>';
}
else // Send form
{
$mail_to = '[email protected]';
$mail_from = '[email protected]';
$mail_subject = 'Test formulier sterrengokkers.nl';
$mail_message = 'Sterrengokkers invulformulier: ' . LF . LF
. 'Naam: ' . $field_1 . LF
. 'Email: ' . $field_2 . LF
. 'Opmerking: ' . $field_3 . LF
. LF
. 'IP: ' . $_SERVER['REMOTE_ADDR'] . ', Datum: ' . date('d-m-Y') . ', Tijd: ' . date('H:i:s');

mail($mail_to, $mail_subject, $mail_message, 'From: ' . $mail_from);

$sHtml .= '<h1>Uw aanvraag is succesvol verzonden!</h1><p>Hartelijk dank voor uw aanvraag, wij nemen zo spoedig mogelijk contact met u op.</p>Met vriendelijke groet,<br>Sterrengokkers.nl';
}

echo $sHtml;

?>

alvast bedankt
Is het dan ook niet veel handiger om zelf een script te maken? Dan kom je die problemen niet tegen.
Ozzie PHP op 31/08/2012 15:46:40

Is het dan ook niet veel handiger om zelf een script te maken? Dan kom je die problemen niet tegen.


zo goed ben ik niet in php
Dan moet je er misschien ook niet aan beginnen, of eerst gaan leren, of het iemand anders laten doen.
Ik denk dat je met de phpfunctie filter_var al ver gaat komen.


<?php
filter_var($email, FILTER_VALIDATE_EMAIL)
?>


Daarnaast zou je nog checkdnsrr of getmxrr kunnen gebruiken.
Remco, dan raad ik je aan eerst PHP te leren. Als je niet goed in huizen bent ga je ook niet zelf een huis verbouwen, als je niet goed in PHP bent ga je ook niet zelf een script ombouwen.

En daarnaast, checken of de email goed is is een van de zinlooste zaken ter wereld. Stel je eens voor:
[email protected]

Is een goed emailadres toch? Alleen jammer dat het emailadres niet bestaat... Je kan genoeg valid emailadressen opnoemen die toch niet gaan werken...

Tevens kun je met HTML5 een check uitvoeren:
<input type=email ...>


En als je het echt wilt doen, doe het dan meteen goed: http://www.phphulp.nl/php/forum/topic/email-regex/77554/ ;-)
Ik heb ooit eens een scriptje gevonden om e-mail te controleren en misschien niet het beste maar het doet tot nu toe nog altijd goed.
function check_mail($email = NULL) {
	$isValid = true;
	$atIndex = strrpos($email, "@");
	if (is_bool($atIndex) && !$atIndex) {
		$isValid = false;
	} else {
		$domain = substr($email, $atIndex+1);
		$local = substr($email, 0, $atIndex);
		$localLen = strlen($local);
		$domainLen = strlen($domain);
		if ($localLen < 1 || $localLen > 64) {
			// local part length exceeded
			$isValid = false;
		} elseif ($domainLen < 1 || $domainLen > 255) {
			// domain part length exceeded
			$isValid = false;
		} elseif ($local[0] == '.' || $local[$localLen-1] == '.') {
			// local part starts or ends with '.'
			$isValid = false;
		} elseif (preg_match('/\\.\\./', $local)) {
			// local part has two consecutive dots
			$isValid = false;
		} elseif (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
			// character not valid in domain part
			$isValid = false;
		} elseif (preg_match('/\\.\\./', $domain)) {
			// domain part has two consecutive dots
			$isValid = false;
		} elseif (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local))) {
			// character not valid in local part unless
			// local part is quoted
			if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local))) {
				$isValid = false;
			}
		}
		if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) {
			// domain not found in DNS
			$isValid = false;
		}
	}
	return $isValid;
}
Ik ben ook eerder tegen het filteren van e-mailadresen. Je kan er heel ver in gaan, denk bijvoorbeeld aan even na te kijken of het domein wel bestaat etc. Alleen is de vraag, als een gebruiker echt geen zin heeft om mails van jou te krijgen... dan neemt hij toch een spambox?

Zelf registreer ik me bijvoorbeeld niet gemakkelijk. Waarom zou ik in godsnaam mijn e-mail willen opgeven, de kans op spam hebben om misschien 1 keer dat forum te bezoeken? Dan vul ik toch gewoon een 10minutemail account in, ik activeer het en ben er weer van verlost :-)
Sowieso de vraag waarom je per se een emailadres wilt hebben.

Om gebruikers te mailen? Doe je toch niet, want je wilt niets spammen.
En wie wilt er nu een nieuwsbrief via de mail (en niet via Twitter / RSS oid?)?
Wat doe je nou echt met dat emailadres? Mailen bij problemen? Krijg je dan geen antwoord (dwz: bounche-back) is gewoon account deleten/blocken.



Zelfde als al die wachtwoord-controles van minimaal 8 tekens en minimaal 1 ander teken.
Als ik '123456' als wachtwoord wil om mijn gegevens te beveiligen, is dat toch prima?

We verwachten allerlei persoonlijke data (sommige webshops vragen zelfs mijn geboortedatum.... of ik nou 18 ben of 80: boeiend?).
Vraag echt alleen wat je nodig hebt.
Ipv een gebruikersnaam kan je wel een emaildres gebruiken. Leuk om te verificeren, maar dat kan dus ook met zo'n tijdelijk account.
@eddy,

wachtwoord vergeten stuur je via mail een linkje ( niet iedereen heeft een sms dienst daarvoor )

sommige houden gebruikers graag op de hoogte via mail ( facebook, phphulp,... )

Reageren