We hebben de laatste tijd last van spookklanten, maar de voeren in het telefoon nummer veld vaak letters in.
Nu heb ik gekeken dat het alleen mogelijk in om cijfers in te voeren, maar ik krijg dit niet werkend in het script.

ps. de tabbellen(zie onderstaande script) worden uit een ander script gehaald d.m.v include("reg_form.php");

Het script staat wel geplaatst in een soort variable (dat verklaart ook de "\ "\ in de tabellen).

$reg_form = "
/////code(tabel)/////
";


onderstaand het stukje code van de telefoon nummers


	if (!isset($telefoon)) $telefoon = "";
	if (!isset($mobiel)) $mobiel = "";


			  <tr>
				<td width=\"23\">&nbsp;</td>
				<td width=\"150\">Telefoon</td>
				<td>      <input name=\"telefoon\" type=\"text\" class=\"textfield\" value=\"$telefoon\"  size=\"40\" /></td>
				</tr>
			  <tr>
				<td width=\"23\">&nbsp;</td>
				<td width=\"150\">Mobiel</td>
				<td>      <input name=\"mobiel\" type=\"text\" class=\"textfield\" value=\"$mobiel\"  size=\"40\" /></td>
				</tr>
			  <tr>

Ja klopt, maar hoe kan ik die in mijn script implenteren, op een of andere manier kan ik geen if statement maken die werkt in mijn registratie script.
want moet daarna ook een foutmelding genereren.

ik had het onderstaande ook geprobeerd

if ($mobiel && strlen($mobiel) < 10) 
{
$error_mobiel = "error test;
}

Op de onderstaande manier zou je een formulier kunnen controleren. Dit is de basis, hiermee garandeer ik geen veiligheid(zeker niet als je gegevens opslaat in een database!)


// Eerst controleren of er uberhaupt iets gepost is naar de pagina
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
    // $e is de variabele(array) waar we de errors in aangeven
    $e = null;

    // Velden controleren
    if (empty($_POST['telefoon'])) 
    {
        // veld is leeg, doe iets
        $e[] = 'Het telefoon nummer was niet ingevuld!'; 
    }
    if (is_numeric($_POST['telefoon']) && strlen($_POST['telefoon']) == 10) 
    {
        // veld is invalid, doe iets
        $e[] = 'Het telefoon nummer was niet juist ingevuld!'; 
    }

    // Alle velden zijn gecontroleerd, nu controleren of er fouten waren
    if(is_null($e))
    {
        // Er zijn geen fouten gevonden!
    }
    else
    {
        // Er zijn wel fouten gevonden
    }

}


PS: Op lijn 3 ben je een double quote(") vergeten.
ohja ik zie het, maar als ik mezelf aanmeld dan krijg ik geen error te zien...
maar kan ik gewoon aanmelden.
Deze code doet nog niets met de error, maar deze doet ook niets met een valide post.
Als je HTML 5 wilt gebruiken, kun je ook doen

<input type="number" maxlength="10">


Maar niet elke browser ondersteunt (volledig) HTML 5, dus..


<?php
if(isset($_POST['submit'])){
if(is_numeric($_POST['tel']) && strlen($_POST['tel']) == 10){
echo 'Telefoonnummer';
}else{
echo 'Geen telefoonnummer :(';
}
}
?>
@stijn: Zelfs als elke browser HTML5 zou ondersteunen zou ik deze feature niet vertrouwen. Iedere (kwaadwillende) gebruiker zou dit aan kunnen passen. Daarbuiten is het wel een mooie feature om te zorgen dat de 'gewone' gebruiker alleen nummers in zal voeren.
Hoe kan je er dan voor zorgen dat dit niet mogelijk is?


Toevoeging op 26/07/2013 14:35:32:

Ook het onderstaande heeft geen effect op dat er alleen nummers ingevoerd kunnen worden? de maxlength van 10 werkt wel.


			  <tr>
				<td width=\"23\">&nbsp;</td>
				<td width=\"150\">Telefoon</td>
				<td>      <input name=\"telefoon\" type=\"number\" class=\"textfield\" value=\"$telefoon\"  size=\"40\" maxlength=\"10\" /></td>
				</tr>
			  <tr>
				<td width=\"23\">&nbsp;</td>
				<td width=\"150\">Mobiell</td>
				<td>      <input name=\"mobiel\" type=\"number\" class=\"textfield\" value=\"$mobiel\"  size=\"40\" maxlength=\"10\"/></td>
				</tr>
			  <tr>



Toevoeging op 26/07/2013 15:31:04:

enig idee nog?
Mensen kunnen gewoon nog steeds cijfers gebruiken, zonder dat dit een fout geeft.


	if (is_numeric($_POST['mobiel']) && strlen($_POST['mobiel']) == 10)
    {
        // veld is invalid, doe iets
        $message[] = 'Het telefoon nummer was niet juist ingevuld!';
    }


<?php
if(isset($_POST['telefoontestje'])) {
    if($_POST['mobiel'] == "") { $message = "Er is geen telefoon nummer ingevuld"; }
    if(strlen($_POST['mobiel']) < 9) { $message = "Dit telefoon nummer is onjuist"; }
    
    if(!is_numeric($_POST['mobiel'])) {
        $message = "Het telefoon nummer was niet juist ingevuld!";
    }
    elseif(!strlen($_POST['mobiel'])) {
        $message = "Het telefoon nummer was niet juist ingevuld!";
    }
    elseif(is_numeric($_POST['mobiel']) && strlen($_POST['mobiel']) == 10){
        $message = "Hiep hiep hoera, het telefoon nummer was juist ingevuld";
    }
}
if(isset($message)) {
    echo $message;
}
?>
<!DOCTYPE HTML>
<html>
    <head>
    </head>
    <body>
        <form method="post" action="">
            Telefoon Nummer: <input type="text" name="mobiel" maxlength="10" />
            <input type="submit" name="telefoontestje" />
        </form>
    </body>
</html>

Even snel getest op mijn locale webserver, als het goed is moet het werken, zo niet laat het maar even weten ;)

Reageren