관리-도구
편집 파일: class-formval.php
<?php /************************************************************************* ********** Pinion Media :: Form Validation Class ************** ********** Updated 080301 | Version 1.3 ************** ********** ************** **************************************************************************/ include_once("constants.php"); //Only needed for the NOW date variable class formval { function validate($type,$required,$form_var,$cc_type='n/a'){ $form_var = trim($form_var); $check = false; if (($required =="no") && ($form_var =="")){ $check = true; } elseif ($type == "email"){ if ((strstr($form_var,'@') != "") && (strstr($form_var,'.') != "") && ($required == "no")){ $check = true; } if ((strstr($form_var,'@') != "") && (strstr($form_var,'.') != "") && ($required == "yes") && ($form_var != "")){ $check = true; } } elseif ($type == "text"){ if (($required == "yes") && ($form_var != "") && isset($form_var) && !is_null($form_var)){ $check = true; } if ($required == "no"){ $check = true; } } elseif ($type == "number"){ if (($required == "yes") && ($form_var != "") && isset($form_var) && !is_null($form_var) && is_numeric($form_var)){ $check = true; } if ($required == "no"){ $check = true; } } elseif ($type == "zipcode"){ if (($required == "yes") && ((preg_match("/^[0-9]{5}-[0-9]{4}$/",$form_var,$dummy) != "0") || (preg_match("/^[0-9]{5}$/",$form_var,$dummy) != "0"))){ $check = true; } if (($required == "no") && ((preg_match("/^[0-9]{5}-[0-9]{4}$/",$form_var,$dummy)) || (preg_match("/^[0-9]{5}$/",$form_var,$dummy)))){ $check = true; } } elseif ($type == "credit"){ if (($required == "yes") && ($this->CCVal($form_var, $cc_type))) { $check = true; } if (($required == "no") && ($this->CCVal($form_var, $cc_type))){ $check = true; } } elseif ($type == "ip"){ if (($required == "yes") && (preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/",$form_var,$dummy) != "0") && (strstr($form_var,'-') == "")){ $check = true; } if (($required == "no") && (preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/",$form_var,$dummy) != "0") && (strstr($form_var,'-') == "")){ $check = true; } } elseif ($type == "phone"){ $numbers = ereg_replace("[^[:digit:]]", "", $form_var); // Get rid of any non-digits if (($required == "yes") && (preg_match("/[0-9]{10,}/",$numbers,$dummy) != "0")){ $check = true; } if (($required == "no") && (preg_match("/[0-9]{10,}/",$numbers,$dummy) != "0")){ $check = true; } } elseif ($type == "not_email"){ if (strstr($form_var,'@') == ""){ $check = true; } } elseif ($type == "token_date"){ $token_info = unserialize(base64_decode($form_var)); if (($required == "yes") && (NOW <= $token_info['token_exp_date'])){ $check = true; } if ($required == "no"){ $check = true; } } return ($check); } function CCVal($Num, $Name = 'n/a') { $GoodCard = true; // Innocent until proven guilty $Num = ereg_replace("[^[:digit:]]", "", $Num); // Get rid of any non-digits // Perform card-specific checks, if applicable switch ($Name) { case "mcd" : $GoodCard = ereg("^5[1-5].{14}$", $Num); break; case "vis" : $GoodCard = ereg("^4.{15}$|^4.{12}$", $Num); break; case "amx" : $GoodCard = ereg("^3[47].{13}$", $Num); break; case "dsc" : $GoodCard = ereg("^6011.{12}$", $Num); break; case "dnc" : $GoodCard = ereg("^30[0-5].{11}$|^3[68].{12}$", $Num); break; case "jcb" : $GoodCard = ereg("^3.{15}$|^2131|1800.{11}$", $Num); break; } // The Luhn formula works right to left, so reverse the number. $Num = strrev($Num); $Total = 0; for ($x=0; $x<strlen($Num); $x++) { $digit = substr($Num,$x,1); // If it's an odd digit, double it if ($x/2 != floor($x/2)) { $digit *= 2; // If the result is two digits, add them if (strlen($digit) == 2) { $digit = substr($digit,0,1) + substr($digit,1,1); } } // Add the current digit, doubled and added if applicable, to the Total $Total += $digit; } // If it passed (or bypassed) the card-specific check and the Total is // evenly divisible by 10, it's cool! if ($GoodCard && $Total % 10 == 0) { return true; }else{ return false; } } function issue_token(){ // Create Token for Honey Pot (session) $token_strg = 'blAdeBla'; $token_rand = rand(0, 10000); $token_exp_date = NOW + 900; // add 15min (if they can't process the form in that time, the session will end anyway) // date('ymdH', NOW); $token_info = array( 'token_code' => $token_rand, 'token_strg' => $token_strg, 'token_exp_date' => $token_exp_date ); $form_token = base64_encode(serialize($token_info)); return $form_token; } } // End of Class ?>