在课堂上设置超大球变量?

时间:2015-03-23 15:57:18

标签: php class oop post setter

在类中有一个简单的函数来初始化消息变量,为它设置POST值。是否有任何设置它,因为$ _POST无论如何都可以在班级的任何地方使用..?这会引起任何安全问题吗?

function set_posted_data(){
    $this->message = $_POST["message"];
}

3 个答案:

答案 0 :(得分:1)

当然,以你展示的方式做得更好,原因有几个:

  • 如果您将来将其更改为$ _GET,或者更改了“消息”键,或者您以其他任何方式获取此数据,则只需在此处更改
  • 你可以在这里消毒它,如果你改变你想要消毒的方式,你也会在这里改变它

答案 1 :(得分:1)

除了最高级别的功能之外,我更喜欢注射。 (即$class->function($_POST['val'])注射是理想的原因

  • 下游越抽象,您可以重用代码的次数越多
  • 每次更改变量时都不必深入挖掘代码。你改变的只是注入点

答案 2 :(得分:1)

我会这样做略有不同。遗憾的是,我不知道你的班级是什么样的,所以我必须做出一些猜测。首先,我总是从一般功能开始:

public function setMessage($message) {
    $this->message = $message;
}

因此即使未发布消息,您仍然可以使用该类。现在通常我会像这样设置发布值:

myclass.setMessage($_POST["message"]);

所以,我根本不会在课堂上使用超级全球。我通常会用一些检查来包围它,所以只接受有效的消息。这是我遇到问题的地方:我不知道该怎么做,因为我对你的代码一无所知。但检查长度可能很有用,也许不允许HTML代码等。一般检查可以合并到类中,例如,没有HTML:

public function setMessage($message) {
    $this->message = strip_tags($message);
}

我会处理所有发布的参数,并且或多或少地一起进行所有特定检查。这样可以更容易地检查代码是否安全。