$v) { if ($data == $v) return $data; } return null; } else { switch ($type) { case "char": $data = preg_replace("/[^A-Za-z0-9@._-]+/", "", $data); break; case "slug": $data = preg_replace("/[^\w\ก-๏\-]+/", "", $data); break; case "number": $data = preg_replace("/[^0-9]+/", "", $data); break; case "date": if (!preg_match("/^\d{4}[\-](0?[1-9]|1[012])[\-](0?[1-9]|[12][0-9]|3[01])$/", $data)) { $data = ''; } break; case "dateslash": $d = str_replace("/", "-", $data); if (preg_match("/^\d{4}[\-](0?[1-9]|1[012])[\-](0?[1-9]|[12][0-9]|3[01])$/", $d)) { $data = ''; } else { $data = str_replace("-", "/", $d); } break; case "datetime": if (strlen($data) > 16) { if (!preg_match("/^\d{4}[\-](0?[1-9]|1[012])[\-](0?[1-9]|[12][0-9]|3[01])[ *](\d{2}):(\d{2}):(\d{2})$/", $data)) { $data = ''; } } else { if (!preg_match("/^\d{4}[\-](0?[1-9]|1[012])[\-](0?[1-9]|[12][0-9]|3[01])[ *](\d{2}):(\d{2})$/", $data)) { $data = ''; } } break; case "lang": if (in_array($data, array("th", "en", "cn"))) { $data = $data; } else { $data = 'en'; } break; case "email": $data = preg_replace("/[^a-zA-Z0-9@._-]+/", "", $data); $data = strtolower($data); break; case "url": $data = preg_replace("/[^a-zA-Z0-9@._\-\:\/?]+/", "", $data); break; case "token": $data = preg_replace("/[^a-zA-Z0-9@._\-\:]+/", "", $data); break; case "string": $data = strip_tags($data); $data = htmlspecialchars($data, ENT_QUOTES); break; } } return $data; } public static function clean_string($sql) { // removes words that contain sql syntax $sql = preg_replace("/(select|update|insert|delete|where|drop table|drop|show tables|mgi|\*|--|\\\\)/", "", $sql); $sql = trim($sql); // strip whitespace //$sql = strip_tags($sql); // strip HTML and PHP tags $sql = addslashes($sql); // quote string with slashes return $sql; } public static function slug($title, $separator = '-') { $string = preg_replace('/[^a-z0-9ก-๙เแ]/i', $separator, $title); $string = preg_replace('/-+/', $separator, $string); $string = preg_replace('/-$|^-/', '', $string); return strtolower($string); } public static function NormalStr($string) { $string = html_entity_decode($string); $string = strip_tags($string); $string = str_replace("'", "'", $string); return $string; } public static function encrypt($text, $time = 0) { $plaintext = $text; if ($time != 0) { // $plaintext = $plaintext . '&' . (time() + $time); } $ivlen = openssl_cipher_iv_length($cipher = "AES-128-CBC"); $iv = openssl_random_pseudo_bytes($ivlen); $ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options = OPENSSL_RAW_DATA, $iv); $hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary = true); $ciphertext = base64_encode($iv . $hmac . $ciphertext_raw); return $ciphertext; } public static function decrypt($ciphertext) { $ciphertext = str_replace(" ", "+", $ciphertext); $c = base64_decode($ciphertext); $ivlen = openssl_cipher_iv_length($cipher = "AES-128-CBC"); $iv = substr($c, 0, $ivlen); $hmac = substr($c, $ivlen, $sha2len = 32); $ciphertext_raw = substr($c, $ivlen + $sha2len); $original_plaintext = openssl_decrypt($ciphertext_raw, $cipher, $key, $options = OPENSSL_RAW_DATA, $iv); $calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary = true); if (hash_equals($hmac, $calcmac)) // timing attack safe comparison { //$time = end(explode('&', $original_plaintext)); // if (intval($time) > 0) { // if ($time < time()) { // return "expire"; // } // } // $text = substr($original_plaintext, 0, (strlen($time) + 1) * -1); $text = $original_plaintext; return $text; } } }