Hallo PHP-ers,

wie kan mij helpen ik heb bij mijn telefoonnummer dit staan
if (empty($_POST['telefoonnummer']))

en een stukje verder dit elseif (!empty($telefoonnummer))
echo '<p>Uw Telefoonnummer is niet of verkeerd ingevuld.</p>';
maar er moeten alleen cijfers in worden gevuld nu heb ik dit geprobeerd en veranderd naar if (ctype_digit($_POST['telefoonnummer'] == FALSE))
en een stukje daaronder de tekst echo '<p>Uw E-mailadres is niet juist.</p>';
elseif (ctype_digit($_POST['telefoonnummer'] == FALSE))
maar ik kan hem nog steeds versturen met letters wie weet wat ik fout doe


<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!

// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!

// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// websitenaam controle
if (empty($_POST['websitenaam']))
$websitenaam_fout = 1;
// websiteurl controle
if (empty($_POST['websiteurl']))
$websiteurl_fout = 1;
// telefoonnummer controle
if (empty($_POST['telefoonnummer']))
$telefoonnummer_fout = 1;
// mobielnummer controle
if (empty($_POST['mobielnummer']))
$mobielnummer_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}

// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['websitenaam']) || !empty($websitenaam_fout) || empty($_POST['websiteurl']) || !empty($websiteurl_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['telefoonnummer']) || !empty($telefoonnummer_fout) || empty($_POST['mobielnummer']) || !empty($mobielnummer_fout))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw Naam is niet ingevuld.</p>';
elseif (!empty($websitenaam_fout))
echo '<p>Uw Websitenaam is niet ingevuld.</p>';
elseif (!empty($websiteurl_fout))
echo '<p>Uw Website URL is niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw E-mailadres is niet juist.</p>';
elseif (!empty($telefoonnummer))
echo '<p>Uw Telefoonnummer is niet of verkeerd ingevuld.</p>';
elseif (!empty($mobielnummer))
echo '<p>Uw Mobielnummer is niet of verkkerd ingevuld.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts &eacute;&eacute;n bericht per ' . $seconde . ' seconde versturen.</p>';
}

// HTML e-mail formlier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<label for="naam">* Naam:</label> <input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />

<label for="websitenaam">* Websitenaam:</label> <input type="text" id="websitenaam" name="websitenaam" value="' . (isset($_POST['websitenaam']) ? htmlspecialchars($_POST['websitenaam']) : '') . '" /><br />

<label for="websiteurl">* Website URL:</label> <input type="text" id="websiteurl" name="websiteurl" value="' . (isset($_POST['websiteurl']) ? htmlspecialchars($_POST['websiteurl']) : '') . '" /><br />

<label for="mail">* E-mailadres:</label> <input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />

<label for="adres">Adres:</label> <input type="text" id="adres" name="adres" value="' . (isset($_POST['adres']) ? htmlspecialchars($_POST['adres']) : '') . '" /><br />

<label for="postcode">Postcode:</label> <input type="text" id="postcode" name="postcode" value="' . (isset($_POST['postcode']) ? htmlspecialchars($_POST['postcode']) : '') . '" /><br />

<label for="woonplaats">Woonplaats:</label> <input type="text" id="woonplaats" name="woonplaats" value="' . (isset($_POST['woonplaats']) ? htmlspecialchars($_POST['woonplaats']) : '') . '" /><br />

<label for="telefoonnummer">* Telefoonnummer:</label> <input type="text" id="telefoonnummer" name="telefoonnummer" value="' . (isset($_POST['telefoonnummer']) ? htmlspecialchars($_POST['telefoonnummer']) : '') . '" /><br />

<label for="mobielnummer">* Mobielnummer:</label> <input type="text" id="mobielnummer" name="mobielnummer" value="' . (isset($_POST['mobielnummer']) ? htmlspecialchars($_POST['mobielnummer']) : '') . '" /><br />

<label for="bericht">Aanvullende informatie:</label> <textarea id="bericht" name="bericht" rows="4" style="width: 250px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br />

<input type="submit" name="submit" value=" Versturen " />
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');

$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Aanvraag promotie op Sterrengokkers.nl " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";

$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "Websitenaam: " . htmlspecialchars($_POST['websitenaam']) . "\n";
$inhoud_mail .= "Website URL: " . htmlspecialchars($_POST['websiteurl']) . "\n";
$inhoud_mail .= "E-mailadres: " . htmlspecialchars($_POST['mail']) . "\n";
$inhoud_mail .= "Adres: " . htmlspecialchars($_POST['adres']) . "\n";
$inhoud_mail .= "Postcode: " . htmlspecialchars($_POST['postcode']) . "\n";
$inhoud_mail .= "Woonplaats: " . htmlspecialchars($_POST['woonplaats']) . "\n";
$inhoud_mail .= "Telefoonnummer: " . htmlspecialchars($_POST['telefoonnummer']) . "\n";
$inhoud_mail .= "Mobielnummer: " . htmlspecialchars($_POST['mobielnummer']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";

$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";

$inhoud_mail .= "===================================================\n\n";

// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------

$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';

$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes

if (mail($mail_ontv, $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();

echo '<h1>Het contactformulier is verzonden</h1>

<p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
else
{
echo '<h1>Het contactformulier is niet verzonden</h1>

<p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
}
}
?>
Remco de Geus op 04/09/2012 19:04:45

wie kan mij helpen ik heb bij mijn telefoonnummer dit staan
if (empty($_POST['telefoonnummer']))

Dit controleert alleen of er 'iets' is ingevuld.

Remco de Geus op 04/09/2012 19:04:45

en een stukje verder dit elseif (!empty($telefoonnummer))
echo '<p>Uw Telefoonnummer is niet of verkeerd ingevuld.</p>';
maar er moeten alleen cijfers in worden gevuld nu heb ik dit geprobeerd en veranderd naar if (ctype_digit($_POST['telefoonnummer'] == FALSE))
en een stukje daaronder de tekst echo '<p>Uw E-mailadres is niet juist.</p>';
elseif (ctype_digit($_POST['telefoonnummer'] == FALSE))

Geen idee wat je hier precies aan het doen bent. Je echoot onjuist mailadres bij een foutief telefoonnummer? ;-)
Je hebt een if en een elseif met dezelfde formulering? Wat wil je daarmee bereiken?

En wat als iemand 013-1234567 wil invullen? Of +31-131234567 of (013)1234567? Dat mag dus niet?

Verder komt de controle op mij wat omslachtig over.
Je controleert eerst op empty en daarna controleer je nogmaals op empty _en_ of er een foutmelding is aangemaakt om daarna 1 of meer foutmeldingen te tonen. Kan naar mijn idee veel efficiƫnter.
Obelix en Idefix op 04/09/2012 19:45:32

[quote="Remco de Geus op 04/09/2012 19:04:45"]
wie kan mij helpen ik heb bij mijn telefoonnummer dit staan
if (empty($_POST['telefoonnummer']))

Dit controleert alleen of er 'iets' is ingevuld.

Remco de Geus op 04/09/2012 19:04:45

en een stukje verder dit elseif (!empty($telefoonnummer))
echo '<p>Uw Telefoonnummer is niet of verkeerd ingevuld.</p>';
maar er moeten alleen cijfers in worden gevuld nu heb ik dit geprobeerd en veranderd naar if (ctype_digit($_POST['telefoonnummer'] == FALSE))
en een stukje daaronder de tekst echo '<p>Uw E-mailadres is niet juist.</p>';
elseif (ctype_digit($_POST['telefoonnummer'] == FALSE))

Geen idee wat je hier precies aan het doen bent. Je echoot onjuist mailadres bij een foutief telefoonnummer? ;-)
Je hebt een if en een elseif met dezelfde formulering? Wat wil je daarmee bereiken?

En wat als iemand 013-1234567 wil invullen? Of +31-131234567 of (013)1234567? Dat mag dus niet?

Verder komt de controle op mij wat omslachtig over.
Je controleert eerst op empty en daarna controleer je nogmaals op empty _en_ of er een foutmelding is aangemaakt om daarna 1 of meer foutmeldingen te tonen. Kan naar mijn idee veel efficiƫnter.

[/quote]

Dat mag wel Die (010) +31 003-334343432 maar geen letters mogen er komen te staan.
Waarom complete teksten quoten? Zeker als het er direct bovenstaat heeft het geen toegevoegde waarde ;-)

Onderstaande functie is afkomstig uit het PHP Kookboek:
<?php
/**
* is_telefoonnummer()
*
* @author Ward van der Put
* @license http://creativecommons.org/licenses/by/3.0/deed.nl
* @version 2
*/
function is_telefoonnummer($str)
{
// Witruimte verwijderen aan het begin en het einde van de string
$str = trim($str);
// Een telefoonnummer moet minimaal 10 cijfers bevatten
if (strlen($str) < 10) {
return FALSE;
}

// Telefoonnummer samenstellen uit cijfers
$sTelefoonnummer = (string) NULL;
for ($iPositie = 0; $iPositie < strlen($str); $iPositie++) {
$sKarakter = substr($str, $iPositie, 1);
if (is_numeric($sKarakter)) {
$sTelefoonnummer .= $sKarakter;
}
}
/**
* Validatieregels
*
* Een Nederlands telefoonnummer moet 10 cijfers bevatten
* en het eerste cijfer moet een 0 zijn.
*/
if (strlen($sTelefoonnummer) === 10 and substr($sTelefoonnummer, 0, 1) === '0') {
return TRUE;
} else {
return FALSE;
}
}
?>
En waarom geen Regex?
<?php

// FUNCTIE
function checkPhone($telefoonnummer){
	if ($telefoonnummer){
		if (preg_replace('~[^[a-zA-Z]+~', '', $telefoonnummer)){ return false; } else { return true; }
	} else { return false; }
}

// TELEFOONNUMMER
$phonenumber = '';

// CONTROLEER TELEFOONNUMMER
if (checkPhone($phonenumber) === true){
	print 'Een geldig telefoonnummer';
} else {
	print 'Geen geldig telefoonnummer';
}

?>

Reageren