我正在使用普通数据库方法而不是准备语句的数据库驱动站点上工作。因此,当传递给表单操作PHP脚本时,我必须清理POST和GET变量。

定义了一个sanitise方法,该方法试图尽可能地对用户输入进行清理,但是我正在尝试减少测试POST和GET变量是否存在的代码以及用于定义不存在默认值的变量的代码。 。

这是我想出的,但是它给我和其他开发人员留下了不好的印象,因为我们所有人都认为错误抑制运算符正在被滥用:

$Page      = sanitise(@$_GET["page"], "Unspecified");
$Timestamp = sanitise(@$_POST["time"], time());

请您给我一些有关此代码的评论吗?我不同意这是不理想的,但是它确实减少了很多代码,并且比我们拥有的代码更具可读性。

我试图在一行中实现以下目标:
  • 测试变量是否存在。
  • (如果存在),清理输入并分配给变量。
  • 如果不存在,请创建一个变量,但使用默认值。

  • 你怎么看?

    这是我在这里问的一种延续:
    Passing unset variables to functions

    最佳答案

    节省一些代码,并使用几个静态函数创建一个“Input”类,如下所示:

    class Input {
    
          public static function get($key, $default = null)
          {
                return (array_key_exists($key, $_GET)) ? $_GET[$key] : $default;
          }
    
          // same thing for $_POST...
    
    }
    

    然后您可以像这样调用您的清理函数...
    sanitize(Input::get('page', 'Unspecified'));
    

    关于php - 这是错误抑制运算符的不好用法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5573426/

    10-13 01:11