任何人都可以解释以下PHP代码?

时间:2009-07-08 16:40:35

标签: php

任何人都可以解释以下PHP代码吗?

function get_param($param_name, $param_type = 0)
    {
      global $HTTP_POST_VARS, $HTTP_GET_VARS;

      $param_value = "";
        if (isset($_POST)) {
          if (isset($_POST[$param_name]) && $param_type != GET)
          $param_value = $_POST[$param_name];
          elseif (isset($_GET[$param_name]) && $param_type != POST)
          $param_value = $_GET[$param_name];
        } else {
          if (isset($HTTP_POST_VARS[$param_name]) && $param_type != GET)
          $param_value = $HTTP_POST_VARS[$param_name];
          elseif (isset($HTTP_GET_VARS[$param_name]) && $param_type != POST)
          $param_value = $HTTP_GET_VARS[$param_name];
        }

        return strip($param_value);
    }

function strip($value)
    {
        if (get_magic_quotes_gpc() == 0) {
            return $value;
        } else {
            return stripslashes($value);
        }
    }

更新

它的用法如下:

$xml = get_param('xml');

5 个答案:

答案 0 :(得分:4)

代码从get和post数据数组中获取值。它还会在启用了魔术引号的php安装上删除斜杠。看起来该函数是为了向后兼容旧版本的PHP。除非您需要支持旧版本的PHP,否则我不会使用它。

您无需对此进行任何更改即可在PHP 5中运行,但我只需执行以下操作: 获取数据:

if(isset($_GET['param_name'])){
    // What ever you want to do with the value
}

对于发布数据:

if(isset($_POST['param_name'])){
    // What ever you want to do with the value
}

您还应该阅读Magic Quotes因为它在PHP 5.3.0之前没有被弃用,您可能需要关注它。

更新后的功能也可以写成:

function get_param($param_name, $param_type = 0)
{

  $param_value = "";
  if (isset($_POST[$param_name]) && $param_type != GET){
      $param_value = $_POST[$param_name];
  }
  elseif (isset($_GET[$param_name]) && $param_type != POST){
      $param_value = $_GET[$param_name];
  }
  return strip($param_value);
}

可以单独留下条带。

答案 1 :(得分:2)

function get_param($param_name, $param_type = 0)

这将返回一个参数值,具有给定类型POST或GET,是可选的。该值被剥离了斜杠。

function strip($value)

返回没有斜杠的参数。

我同意其他评论,即此代码是在2003年之前编写的,不应使用,除非支持旧代码。

答案 2 :(得分:2)

看起来像是确保你获得正确的GET / POST变量的一些疯狂的方法。 来自get_param()的大多数代码似乎是一种使代码几乎适用于任何php版本的方法,因为它使用的是遗留方法,你应该看一下PHP Manual about _GET / _ POST

答案 3 :(得分:1)

代码是一个函数,它接受参数的名称($param_name)和预期在(GET或POST)中找到的HTTP请求类型,然后查看当前的$_GET和{ {1}})和已弃用($_POST$HTTP_GET_VARS)请求变量数组以获取与该名称匹配的值。在它返回之前,它会尝试从它找到的值中删除额外的斜杠。

例如,如果我传递了这个HTTP请求:

$HTTP_POST_VARS

然后运行函数

http://www.example.com/explain_function.php?key=value

它将返回“价值”。

答案 4 :(得分:0)

似乎正在尝试根据参数名称从查询字符串中提取值。它首先检查$ _POST变量是否有效,如果没有,检查$ HTTP_POST_VARS。如果其中任何一个有效,它将返回名称为$ param_name的值。例如,如果$ param_name =“foo”,它将检查$ _POST [“foo”]。