Ik doe het doormiddel van een gedeelte lijke "gejate" van Formhandler. Daarnaast nog erg aangepast..
Voorbeeld:
<?php
include('../includes/validate.php');
include('../includes/database.php');
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$method = array();
$method[] = 'string';
$method[] = 'empty';
$errors = val::validate_field($_POST,$method);
if(!is_array($errors)){
$_POST['date'] = '';
$_POST['author'] = AUTHOR;
$out = db::insert_row(PREFIX.'weblog',$_POST,3,$rLink);
if($out > 0){
echo '<div class="succes"><p>De log is met succes geplaatst</p></div>';
}else{
echo '<div class="error"><p>Er is een fout op getreden tijdens het invoegen in de database</p></div>';
}
}else{
//geneer een echo en show form
}
?>
Class:
<?php
//class validate
class val{
/*Van Formhandler*/
/**
* val::IsString()
*
* Any string that doesn't have control characters (ASCII 0 - 31) but spaces are allowed
*
* @param string $value: The string to check
* @return bool
*/
function IsString($value)
{
return preg_match("/^[^\x-\x1F]+$/", $value);
}
/**
* val::_IsString()
*
* Public: same as IsString, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsString($value)
{
return StrLen($value) == 0 || val::IsString($value);
}
/**
* val::IsAlpha()
*
* Public: only letters a-z and A-Z
*
* @param string $value
* @return bool
*/
function IsAlpha($value)
{
return preg_match("/^[a-z]+$/i", $value);
}
/**
* val::_IsAlpha()
*
* Public: same as IsAlpha, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsAlpha($value)
{
return StrLen($value) == 0 || val::IsAlpha($value);
}
/**
* val::IsDigit()
*
* Public: only numbers 0-9
*
* @param string $value
* @return bool
*/
function IsDigit($value)
{
return (bool) preg_match("/^[0-9]+$/", $value);
}
/**
* val::_IsDigit()
*
* Public: same as IsDigit, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsDigit($value)
{
return StrLen($value) == 0 || val::IsDigit($value);
}
/**
* val::IsAlphaNum()
*
* Public: letters and numbers
*
* @param string $value
* @return bool
*/
function IsAlphaNum($value)
{
return preg_match("/^[a-z0-9]+$/i", $value);
}
/**
* val::_IsAlphaNum()
*
* Public: same as IsAlphaNum, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsAlphaNum($value)
{
return StrLen($value) == 0 || val::IsAlphaNum($value);
}
/**
* val::IsFloat()
*
* Public: only numbers 0-9 and an optional - (minus) sign (in the beginning only)
*
* @param string $value
* @return bool
*/
function IsFloat($value)
{
return (bool) preg_match("/^-?([0-9]*\.?,?[0-9]+)$/", $value);
}
/**
* val::_IsFloat()
*
* Public: same as IsFloat, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsFloat($value)
{
return StrLen($value) == 0 || val::IsFloat($value);
}
/**
* val::IsInteger()
*
* Public: only numbers 0-9 and an optional - (minus) sign (in the beginning only)
*
* @param string $value
* @return bool
*/
function IsInteger($value)
{
return (bool) preg_match("/^-?[0-9]+$/", $value);
}
/**
* val::_IsInteger()
*
* Public: same as IsInteger, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsInteger($value)
{
return StrLen($value) == 0 || val::IsInteger($value);
}
/**
* val::IsBool()
*
* Public: a boolean (case-insensitive "true"/"1" or "false"/"0")
*
* @param string $value
* @return bool
*/
function IsBool(&$value)
{
if(preg_match("/^true$|^1|^false|^0$/i", $value))
{
$value = true;
return true;
}
else
{
return false;
}
}
/**
* val::_IsBool()
*
* Public: same as IsBool, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsBool($value)
{
return StrLen($value) == 0 || val::IsBool($value);
}
// check for a valid url
// TODO: see
http://www.formhandler.net/index.php?pg=9&id=2979
function IsURL ( $value )
{
$regex = '/^((http|ftp|https):\/{2})?(([0-9a-zA-Z_-]+\.)+[a-zA-Z]+)((:[0-9]+)?)((\/([0-9a-zA-Z%\.\/_-]+)?(\?[0-9a-zA-Z%\/&=_-]+)?)?)$/';
$result = preg_match( $regex, $value, $match );
return $result;
}
function _IsURL($value)
{
return StrLen($value) == 0 || val::IsURL($value);
}
// a valid email address (only checks for valid format:
[email protected])
function IsEmail($value)
{
return preg_match("/^[a-z0-9_\.-]+@([a-z0-9]+([\-]+[a-z0-9]+)*\.)+[a-z]{2,7}$/i", $value);
}
function _IsEmail($value)
{
return StrLen($value) == 0 || val::IsEmail($value);
}
// like IsString, but newline characters and tabs are allowed
function IsText($value)
{
return 1; //preg_match("/^([^\x-\x1F]|[\r\n\t])+$/", $value);
}
function _IsText($value)
{
return StrLen($value) == 0 || val::IsText($value);
}
// check if the value is not empty
function notEmpty($value)
{
if(!is_array($value))
{
$value = trim($value);
return !empty($value);
}
else
{
return (bool) (count($value) > 0);
}
}
/*Eigen code*/
function validate_field($fields,$methods){
$valid = array();
$i = 0;
foreach($fields as $field => $value){
switch($methods[$i]){
case 'string':
$valid[$field] = val::IsString($value);
break;
case '_string':
$valid[$field] = val::_IsString($value);
break;
case 'alpha':
$valid[$field] = val::IsAlpha($value);
break;
case '_alpha':
$valid[$field] = val::_IsAlpha($value);
break;
case 'digit':
$valid[$field] = val::IsDigit($value);
break;
case '_digit':
$valid[$field] = val::_IsDigit($value);
break;
case 'AlphaNum':
$valid[$field] = val::IsAlphaNum($value);
break;
case '_AlphaNum':
$valid[$field] = val::_IsAlphaNum($value);
break;
case 'float':
$valid[$field] = val::IsFloat($value);
break;
case '_float':
$valid[$field] = val::_IsFloat($value);
break;
case 'int':
$valid[$field] = val::IsInteger($value);
break;
case '_int':
$valid[$field] = val::_IsInteger($value);
break;
case 'bool':
$valid[$field] = val::IsBool($value);
break;
case '_bool':
$valid[$field] = val::_IsBool($value);
break;
case 'url':
$valid[$field] = val::IsUrl($value);
break;
case '_url':
$valid[$field] = val::_IsUrl($value);
break;
case 'email':
$valid[$field] = val::IsEmail($value);
break;
case '_email':
$valid[$field] = val::_IsEmail($value);
break;
case 'text':
$valid[$field] = val::IsText($value);
break;
case '_text':
$valid[$field] = val::_IsText($value);
break;
case 'empty':
$valid[$field] = val::notEmpty($value);
break;
default:
$valid[$field] = true;
}
$i++;
}
$val = false;
foreach($valid as $var){
if($var == 0){
$val = true;
}
}
if($val == true){
return $valid;
}else{
return true;
}
}
}