<?php /** * Leitet den Browser an die übergebene URL weiter und hält das Script an. */ function redirect($to) { header("Location: " . $to, true, 302); raw_output(""); } /** * Echoes given output and dies. * * @param String $output */ function raw_output($output) { echo $output; die(); } /** * Checks if given request item (name) can be parsed to a date. * If not parsable, given error message is put into msg() and null is returned. * * @param string $input * String to be parsed into a date. * @param string $error_message * the error message displayed if $input is not parsable * @param boolean $null_allowed * is a null value allowed? * @return ValidationResult containing the parsed date */ function check_request_date($name, $error_message = null, $null_allowed = false) { if (! isset($_REQUEST[$name])) { return new ValidationResult($null_allowed, null); } return check_date($_REQUEST[$name], $error_message, $null_allowed); } /** * Checks if given string can be parsed to a date. * If not parsable, given error message is put into msg() and null is returned. * * @param string $input * String to be parsed into a date. * @param string $error_message * the error message displayed if $input is not parsable * @param boolean $null_allowed * is a null value allowed? * @return ValidationResult containing the parsed date */ function check_date($input, $error_message = null, $null_allowed = false) { if (DateTime::createFromFormat("Y-m-d", trim($input))) { return new ValidationResult(true, DateTime::createFromFormat("Y-m-d", trim($input))->getTimestamp()); } if ($null_allowed) { return new ValidationResult(true, null); } error($error_message); return new ValidationResult(false, null); } /** * Gibt den gefilterten REQUEST Wert ohne Zeilenumbrüche zurück */ function strip_request_item($name) { return strip_item($_REQUEST[$name]); } /** * Testet, ob der angegebene REQUEST Wert ein Integer ist, bzw. * eine ID sein könnte. */ function test_request_int($name) { if (isset($_REQUEST[$name])) { return preg_match("/^[0-9]*$/", $_REQUEST[$name]); } return false; } /** * Gibt den gefilterten REQUEST Wert mit Zeilenumbrüchen zurück */ function strip_request_item_nl($name) { return preg_replace("/([^\p{L}\p{S}\p{P}\p{Z}\p{N}+\n]{1,})/ui", '', strip_tags($_REQUEST[$name])); } /** * Entfernt unerwünschte Zeichen */ function strip_item($item) { return preg_replace("/([^\p{L}\p{S}\p{P}\p{Z}\p{N}+]{1,})/ui", '', strip_tags($item)); } /** * Überprüft eine E-Mail-Adresse. */ function check_email($email) { return (bool) filter_var($email, FILTER_VALIDATE_EMAIL); } class ValidationResult { private $valid; private $value; /** * Constructor. * * @param boolean $valid * Is the value valid? * @param * $value * The validated value */ public function ValidationResult($valid, $value) { $this->valid = $valid; $this->value = $value; } /** * Is the value valid? */ public function isValid() { return $this->valid; } /** * The parsed/validated value. */ public function getValue() { return $this->value; } } ?>