Form Controleren.
Ik ben eigenlijk bezig aan een zeer uitgebreid leden registratie script met ongeveer een 30 tal te controleren velden.Ik wou op een eenvoudige manier later velden kunnen toevoegen aan het formulier en deze adhv een aantal voorwaarden controleren op geldigheid tot nu toe word er al gecontroleerd of alle verplichte velden ingevuld zijn, een email adres geldig is en of je ouder bent dan een bepaalde ouderdom berekend adhv een geboortedatum.. Ik heb er een JavaScript bijgemaakt (daar ben ik echt een noob in dus dat gedeelte zal waarschijnlijk wel veel eenvoudiger kunnen) om automatisch het veld leeg te maken indien onfocus en indien het veld niet werd ingevuld automatisch de tekst "verplicht veld" er weer in te zetten onblur. De leeftijd word berekend adhv een functie en je kan zo eenvoudig een minimumleeftijd instellen. Enkel indien alle velden geldig werden ingevuld zal er een resultaat worden weergegeven en daar kan je dan je data gaan verwerken. De Classe voor het weergeven van het paginabegin en het paginaeinde heb ik er maar bij laten staan deze gebruik ik voor al mijn paginas met een simpele hoofding. Het email adres wordt ook echt gecontroleerd of de host wel degelijk bestaat! Vond dat ik een aantal kleine eenvoudige maar toch leuke en gemakkelijke functies in gebruikt had en vandaar deze post. download script: [url=]http://www.jb-web.org/downloads/scripts/php/form_check.zip Veel plezeir ermee.
index.php
********
[code]
<?php
if(file_exists("./includes/config.inc.php")) {
include_once("./includes/config.inc.php");
} else {
die("HET BESTAND \"config.inc.php\" KON NIET GEVONDEN WORDEN!!!");
}
$pagina = new Sjabloon;
$pagina->titel_Instellen("Leden registratie pagina");
$pagina->toon_Begin();
if(count($_POST)) {
if(verplichte_Velden()) {
if(check_Email($email)) {
if($wachtwoord == $wachtwoordverificatie) {
if(check_leeftijd()) {
echo "<p>Je bent <span class=\"nadruk\">" . $leeftijd . "</span> jaar jong en je bent een <span class=\"nadruk\">" . $geslacht . "</span>.</p>";
echo "Hier kan je dan de ingegeven data verder verwerken en bijvoorbeeld wegschrijven naar een database";
}
} else {
echo "Je wachtwoorden komen niet overeen!!!";
}
} else {
echo "<p>Je hebt een foutief <span class=\"nadruk\">E-mail adres</span> ingevuld!!!</p>";
}
}
}
?>
<h1>Vul onderstaand formulier in:</h1>
<form action="<? $_SERVER['PHP_SELF'] ?>" method="post">
<table style=\"border-top-style: ridge" style="border-left-style: ridge" style="border-top-style: outset" style="border-top-style: outset" width="430" bgcolor="#006666" border="3" bordercolor="#FFFF99">
<tr>
<td>Gebruikersnaam:</td>
<td align="center"><input id="gebrnaam" name="gebruikersnaam" type="text" value="<? echo $gebruikersnaam ?>" maxlength="15"></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td align="center"><input id="wachtwoord" name="wachtwoord" type="password" value="<? echo $wachtwoord ?>" maxlength="25"></td>
</tr>
<tr>
<td>Verifiëer Wachtwoord:</td>
<td align="center"><input id="wachtwoordverificatie" name="wachtwoordverificatie" type="password" value="<? echo $wachtwoordverificatie ?>" maxlength="25"></td>
</tr>
<tr>
<td>Voornaam:</td>
<td align="center"><input id="voornaam" name="voornaam" type="text" value="<? echo $voornaam ?>" maxlength="50"></td>
</tr>
<tr>
<td>Familienaam:</td>
<td align="center"><input id="familienaam" name="familienaam" type="text" value="<? echo $familienaam ?>" maxlength="50"></td>
</tr>
<tr>
<td>Geslacht:</td>
<td align="center">
<input class="radio" type="radio" name="geslacht" value="M">Man
<input class="radio" type="radio" name="geslacht" checked="checked" value="V">Vrouw
</td>
</tr>
<tr>
<td>Geboortedatum:</td>
<td align="center">
<? dropdownbox_Datum();?>
</td>
</tr>
<td>E-Mail Adres:</td>
<td align="center"><input id="email" name="email" type="text" value="<? echo $email ?>" maxlength="150"></td>
</tr>
<tr>
<td></td>
<td align="right"><input class="button" name="submit" type="submit" value="Doorsturen"></td>
</tr>
</table>
</form><br>
<?
$pagina->toon_Einde();
?>
[/code]
functies.inc.php
*************
[code]
<?
class Sjabloon {
var $paginatitel;
var $begin_weergegeven;
function __construct() {
$this->paginatitel = (string) "";
$this->begin_weergegeven = FALSE;
}
function titel_Instellen($string) {
$string = trim($string);
if (strlen($string) > 0) {
$this->paginatitel = $string;
return TRUE;
} else {
return FALSE;
}
}
function toon_Begin() {
global $stylesheet;
if ($this->begin_weergegeven) {
exit("<br /><b>Fout:</b> het paginabegin is al weergegeven.<br />");
} elseif (strlen($this->paginatitel) < 1) {
exit("<br /><b>Fout:</b> deze webpagina heeft geen titel.<br />");
} else {
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n";
echo "<html>\n";
echo "<head>\n";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n";
echo "<title>". $this->paginatitel . "</title>\n";
echo "<link href=\"" . $stylesheet . "\" rel=\"stylesheet\" type=\"text/css\">\n";
echo "</head>\n";
echo "<body>\n";
$this->begin_weergegeven = TRUE;
}
}
function toon_Einde() {
if ($this->begin_weergegeven) {
echo "<address>Copyright © ";
echo date("Y");
echo " JB-Services<br />";
echo "Alle rechten voorbehouden.</address>\n";
echo "</body>\n";
echo "</html>\n";
} else {
exit("<br /><b>Fout:</b> het paginabegin is nog niet weergegeven.<br />");
}
}
}
/************************************************
* Functie: toon_Melding() *
* Parameters: $melding -- Eigen Foutmelding *
* Doel: Melding weergeven met opmaak *
* Aanroep: toon_Melding($melding); *
************************************************/
function toon_Melding($melding)
{
echo "<span class=\"melding\">" . $melding . "</span><br>";
pagina_Terug();
}
/****************************************************************************
* Functie: pagina_Terug() *
* Parameters: *
* Doel: Link weergeven met Opmaak om terug te keren naar de vorige pagina *
* Aanroep: pagina_Terug(); *
****************************************************************************/
function pagina_Terug()
{
echo "<p align=\"center\">";
echo "<span class=\"pagina_terug\">Klik <a href=\"javascript:history.back(-1)\">hier</a> om terug te gaan</span>";
echo "</p>";
}
/********************************************************
* Functie: check_Email() *
* Parameters: $email -- te controleren mail adres *
* Doel: Nagaan of een email adres geldig is of niet *
* Aanroep: check_Email($email); *
********************************************************/
function check_Email($email) {
if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) {
$host = explode('@', $email); if(checkdnsrr($host[1].'.', 'MX') )
return true; if(checkdnsrr($host[1].'.', 'A') )
return true; if(checkdnsrr($host[1].'.', 'CNAME') )
return true;
}
return false;
}
/****************************************************************
* Functie: bereken_Leeftijd() *
* Parameters: $geb_dag -- geboorte dag *
* $geb_maand -- geboorte maand *
* $geb_jaar -- geboorte jaar *
* Doel: Leeftijd berekenen adhv een geboortedatum *
* Aanroep: bereken_Leeftijd($geb_dag, $geb_maand, $geb_jaar); *
****************************************************************/
function bereken_Leeftijd($geb_dag, $geb_maand, $geb_jaar)
{
$dag = date("j");
$maand = date("m");
$jaar = date("Y");
$geb_maand = 0 . $geb_maand;
$leeftijd = ($jaar - $geb_jaar - 1);
if($geb_maand < $maand) {
$leeftijd += 1;
} elseif($geb_maand == $maand && $geb_dag <= $dag) {
$leeftijd += 1;
}
return $leeftijd;
}
/****************************************************
* Functie: instellen_Geslacht() *
* Parameters: $geslacht -- ingave van geslacht *
* Doel: geslacht teruggeven als "Vrouw" of "Man" *
* Aanroep: instellen_Geslacht($geslacht); *
****************************************************/
function instellen_Geslacht($geslacht)
{
$geslacht = strtolower($geslacht);
if($geslacht == "v" || $geslacht =="vrouw" || $geslacht =="vr" ) {
$geslacht = "Vrouw";
} elseif(($geslacht == "m" || $geslacht =="man")) {
$geslacht = "Man";
}
return $geslacht;
}
/************************************************
* Functie: dropdownbox_Datum() *
* Parameters: *
* Doel: Drop_Down_Box met dag, maand en jaar *
* Aanroep: dropdownbox_Datum(); *
************************************************/
function dropdownbox_Datum()
{
global $maanden;
$dag=(isset($_POST['dag']))?$_POST['dag']:date('d');
$maand=(isset($_POST['maand']))?$_POST['maand']:date('m');
$jaar=(isset($_POST['jaar']))?$_POST['jaar']:date('Y');
echo "<select name=\"dag\">";
for($a=1;$a<=31;$a++){
echo '<option value="'.$a.'"';
echo ($a==$dag)?' selected': $dag;
echo '>'.$a.'</option>'."\n";
}
echo "</select>";
echo "<select name=\"maand\">";
for($a=1;$a<=12;$a++){
echo '<option value="' . $a . '"';
echo ($a==$maand)?' selected':'';
echo '>'.$maanden[$a].'</option>'."\n";
}
echo "</select>";
echo "<select name=\"jaar\">";
for($a=1900;$a<=date('Y');$a++){
echo '<option value="'.$a.'"';
echo ($a==$jaar)?' selected':'';
echo '>'.$a.'</option>'."\n";
}
echo "</select>";
}
/********************************************
* Functie: instellen_Veld() *
* Parameters: $veld -- in te stellen veld *
* Doel: instellen van een verplicht veld *
* Aanroep: instellen_Veld($veld); *
********************************************/
function instellen_Veld($veld)
{
$veld = trim($veld);
$veld = (isset($veld) && !empty($veld))?$veld:"verplicht veld";
return $veld;
}
function verplichte_Velden()
{
$controle = FALSE;
$namen_velden = array_keys($_POST);
$lege_velden = 0;
$niet_ingevuld = 0;
$tel = 0;
foreach($_POST as $waarde) {
$waarde = trim($waarde);
if(empty($waarde)) {
echo "Het veld <span class=\"nadruk\">" . $namen_velden[$tel] . "</span> mag niet blanco zijn!!!<br>";
$lege_velden++;
} elseif($waarde == "verplicht veld") {
echo "Het is verplicht om een <span class=\"nadruk\">" . $namen_velden[$tel] . "</span> in te vullen!!!<br>";
$niet_ingevuld++;
}
$tel++;
}
if($niet_ingevuld == 0 && $lege_velden == 0) {
$controle = TRUE;
}
return $controle;
}
function check_Leeftijd() {
global $min_leeftijd;
$controle = FALSE;
if($_POST['dag'] != date('d') || $_POST['maand'] != date('m') || $_POST['jaar'] != date('Y')){
$leeftijd = bereken_Leeftijd($_POST['dag'], $_POST['maand'], $_POST['jaar']);
$geslacht = instellen_Geslacht($_POST['geslacht']);
if($leeftijd < $min_leeftijd) {
echo "<p>Je mag niet jonger zijn dan <span class=\"nadruk\">" . $min_leeftijd . "</span> jaar!!!</p>";
} else {
$controle = TRUE;
}
} else {
echo "<p>Je hebt nog geen <span class=\"nadruk\">Geboortedatum</span> ingegeven!!!</p>";
}
return $controle;
}
?>
[/code]
style.css
*******
/* CSS Document */
body {
background-color: #000000;
color: #FFFFFF;
}
input
{
width : 230px;
text-align: right;
font-weight: bold;
color: #000033;
background: #CCCCCC;
border: 1px solid #CC9900;
}
.button
{
width: 100px;
text-align: center;
color: #000033;
background: #CCCCCC;
border: 2px outset #CC9900;
}
.radio
{
width: 25px;
color: #000033;
background: #CCCCCC;
border: 2px outset #CC9900;
}
.nadruk {
color: #FF0000;
text-decoration: underline overline;
font-weight: bold;
}
blankfields.js
***********
[code]
// JavaScript Document
// met dank aan Peter Paul Koch - http://www.quirksmode.org
function getObj (name)
{
if (document.getElementById) {
this.obj = document.getElementById(name);
this.style = document.getElementById(name).style;
}
else if (document.all) {
this.obj = document.all[name];
this.style = document.all[name].style;
}
else if (document.layers) {
this.obj = document.layers[name];
this.style = document.layers[name];
}
}
var _gebrnaam;
var _voornaam;
var _familienaam;
var _wachtwoord;
var _wachtwoordverificatie;
var _email;
function init () {
_gebrnaam = new getObj ('gebrnaam');
_gebrnaam.obj.onfocus = handle_gebrnaam_focus;
_gebrnaam.obj.onblur = handle_veld_blur;
_voornaam = new getObj ('voornaam');
_voornaam.obj.onfocus = handle_voornaam_focus;
_voornaam.obj.onblur = handle_veld_blur;
_familienaam = new getObj ('familienaam');
_familienaam.obj.onfocus = handle_familienaam_focus;
_familienaam.obj.onblur = handle_veld_blur;
_wachtwoord = new getObj ('wachtwoord');
_wachtwoord.obj.onfocus = handle_wachtwoord_focus;
_wachtwoord.obj.onblur = handle_veld_blur;
_wachtwoordverificatie = new getObj ('wachtwoordverificatie');
_wachtwoordverificatie.obj.onfocus = handle_wachtwoordverificatie_focus;
_wachtwoordverificatie.obj.onblur = handle_veld_blur;
_email = new getObj ('email');
_email.obj.onfocus = handle_email_focus;
_email.obj.onblur = handle_veld_blur;
}
function handle_gebrnaam_focus () {
if (_gebrnaam.obj.value == 'verplicht veld') {
_gebrnaam.obj.value = '';
}
}
function handle_voornaam_focus () {
if (_voornaam.obj.value == 'verplicht veld') {
_voornaam.obj.value = '';
}
}
function handle_familienaam_focus () {
if (_familienaam.obj.value == 'verplicht veld') {
_familienaam.obj.value = '';
}
}
function handle_wachtwoord_focus () {
if (_wachtwoord.obj.value == 'verplicht veld') {
_wachtwoord.obj.value = '';
}
}
function handle_wachtwoordverificatie_focus () {
if (_wachtwoordverificatie.obj.value == 'verplicht veld') {
_wachtwoordverificatie.obj.value = '';
}
}
function handle_email_focus () {
if (_email.obj.value == 'verplicht veld') {
_email.obj.value = '';
}
}
function handle_veld_blur () {
if (_gebrnaam.obj.value == '') {
_gebrnaam.obj.value = 'verplicht veld';
}
if (_voornaam.obj.value == '') {
_voornaam.obj.value = 'verplicht veld';
}
if (_familienaam.obj.value == '') {
_familienaam.obj.value = 'verplicht veld';
}
if (_wachtwoord.obj.value == '') {
_wachtwoord.obj.value = 'verplicht veld';
}
if (_wachtwoordverificatie.obj.value == '') {
_wachtwoordverificatie.obj.value = 'verplicht veld';
}
if (_email.obj.value == '') {
_email.obj.value = 'verplicht veld';
}
}
window.onload = init;
[/code]
Reacties
0