151 lines
3.5 KiB
PHP
151 lines
3.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Leitet den Browser an die übergebene URL weiter und hält das Script an.
|
|
*/
|
|
function redirect($url) {
|
|
header("Location: " . $url, true, 302);
|
|
raw_output("");
|
|
}
|
|
|
|
/**
|
|
* Echoes given output and dies.
|
|
*
|
|
* @param String $output
|
|
*/
|
|
function raw_output($output) {
|
|
echo $output;
|
|
die();
|
|
}
|
|
|
|
/**
|
|
* Returns an int[] from given request param name.
|
|
*
|
|
* @param String $name
|
|
* Name of the request param
|
|
*/
|
|
function check_request_int_array($name) {
|
|
if (isset($_REQUEST[$name]) && is_array($_REQUEST[$name])) {
|
|
return array_filter($_REQUEST[$name], 'is_numeric');
|
|
}
|
|
return [];
|
|
}
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
}
|
|
|
|
?>
|