CodeIgniter 的 get_numeric_input()
混合get_numeric_input ( 字符串$name [, bool $required = True [, string $source = "GET" [, bool *$xss_clean* = True ]]] )
下面是我创建的一个函数,因为我厌倦了检查 GET 和 POST 变量是否存在并且是数字的。
这主要用于处理错误或状态消息时,因为我可以使用redirect("original_page.php?error=1");
将错误传递给原始页面。在原始页面上,我可以简单地if (isset($error)) { … }
根据值执行并显示一条消息。但是,为了安全起见,有必要在将这些变量发送到视图之前检查这些变量。这个过程被证明是相当重复和乏味的。
下面这个函数要添加到底部wwwroot/application/system/core/Input.php
它的用途如下:
示例 1:
function index() {
if ($error = $this->input->get_numeric_input('error', True, "GET", True)) {
$data['error'] = $error;
}
}
在此示例中,如果$_GET['error']
既是设置又是数字,它将设置$data['error']
为该值。如果它未设置和/或不是数字,它将终止脚本。
示例 2:
function index() {
if ($error = $this->input->get_numeric_input('error', False, "POST", True)) {
$data['error'] = $error;
}
}
在此示例中,如果$_POST['error']
既是设置又是数字,它将设置$data['error']
为该值。如果它没有设置和/或不是数字,它将继续并且不会在 $data 数组中设置任何值。
第一个参数是要检查的变量名。第二个变量是使检查是否需要的布尔值。如果您将此设置为 TRUE,则如果未设置变量或如果它不是数字,它将显示错误并立即终止脚本。如果设置为 False,那么它将简单地返回 False,脚本将继续运行。第三个变量是 POST 或 GET,它将确定函数是否在 $_GET 或 $_POST 数组中查找变量。最后,第四个变量指示返回时值是否为 XSS_CLEAN。
注意:第二个、第三个和第四个参数都是可选的,并且分别默认为 True、“GET”和 True。
这是代码:
function get_numeric_input($name, $required = True, $source = "GET", $xss_clean = True) {
if ($source === "GET") {
if ($this->get($name, $xss_clean)) {
if (is_numeric($this->get($name, $xss_clean))) {
return $this->get($name, $xss_clean);
} else {
if ($required) {
show_error("$source variable $name is not numeric!");
log_message('error', "$source variable $name is not numeric!");
return False;
} else {
return False;
}
}
} else {
if ($required) {
show_error("$source variable $name is not set!");
log_message('error', "$source variable $name is not set!");
return False;
} else {
return False;
}
}
} elseif ($source === "POST") {
if ($this->post($name, $xss_clean)) {
if (is_numeric($this->post($name, $xss_clean))) {
return $this->post($name, $xss_clean);
} else {
if ($required) {
show_error("$source variable $name is not numeric!");
log_message('error', "$source variable $name is not numeric!");
return False;
} else {
return False;
}
}
} else {
if ($required) {
show_error("$source variable $name is not set!");
log_message('error', "$source variable $name is not set!");
return False;
} else {
return False;
}
}
}
}