bcast-bridge/web/include/Input.class.php

102 lines
2.3 KiB
PHP

<?php
define('INP_GET', 0x0001); // nur _GET benutzen
define('INP_POST', 0x0002); // nur _POST benutzen
define('INP_INT', 0x0004); // Integer
define('INP_STRING', 0x0008); // String
define('INP_ARRAY', 0x0010); // Form-Array
define('INP_FLAGS', 0x0020); // Form-Array with Flags (return single int)
define('INP_EMPTY', 0x0040); // Leerer Wert erlaubt
define('INP_DEFAULT', 0x0080); // Leerer oder Falscher Wert wird ersetzt
/**
* Input Checking Class
* @todo sql-injection escaping?
*/
class Input {
/**
* Holt eine Variable vom Request
* @param string $name - Name der Variable
* @param int $flags - Flags
* @param mixed $default - Defaultwert
* @param mixed $values - Erlaubte Werte (optional)
* @return mixed
*/
static function getVar($name, $flags, $default = '', $values = false) {
if (($flags & INP_GET) && isset($_GET[$name]))
$var = $_GET[$name];
if (($flags & INP_POST) && isset($_POST[$name]))
$var = $_POST[$name];
if (isset($var)) {
/* Integer requested */
if ($flags & INP_INT) {
if (is_numeric($var))
settype($var, "int");
else
$var = false;
/* String requested */
} else if ($flags & INP_STRING) {
settype($var, "string");
/* Array requested */
} else if ($flags & INP_ARRAY) {
if (!is_array($var))
$var = false;
/* FlagArray */
} else if ($flags & INP_FLAGS) {
if (is_array($var) && count($var) > 0) {
$tmp = 0;
foreach ($var as $key => $value)
$tmp |= $value;
$var = $tmp;
} else {
$var = false;
}
}
/* Erlaubter Wert */
if (is_array($values) && !in_array($var, $values))
$var = false;
/* Empty erlaubt */
} else if ($flags & INP_EMPTY) {
return;
/* Empty nicht erlaubt */
} else {
$var = false;
}
/* Defaultwert einsetzen */
if (($flags & INP_DEFAULT) && ($var === false))
$var = $default;
return $var;
}
/**
* Holt eine Integervariable vom Request
* @param string $name - Name der Variable
* @param int $flags - Flags
* @param int $default - Defaultwert
* @param int $min - Minimaler Wert
* @param int $max - Maximaler Wert
* @return int
*/
static function getInteger($name, $flags, $default, $min, $max) {
$flags &= ~(INP_STRING | INP_EMPTY);
$flags |= (INP_INT);
$var = Input::getVar($name, $flags, $default);
return ($var >= $min && $var <= $max) ? $var : false;
}
}
?>