0

我正在尝试对 wordpress 插件进行逆向工程,但我很难理解一段代码。

该插件是:http ://wordpress.org/extend/plugins/wordpress-social-login/

这次我有以下几行:

$wslp = @ (int) $_REQUEST["wslp"];

if( $wslp < 1 || $wslp > 6 ){
    $wslp = 1;
}

我担心的是,未设置参数$wslp时等于什么wslp(==$_request未设置时)

下一行按此编号获取一页,因此它不能只是空的或null...

4

3 回答 3

4
  • @用于抑制 PHP 警告。

  • 使用时(int),任何不能转换为整数的东西都会变成0.

因此,当$_REQUEST不包含 key时wslp$_REQUEST["wslp"]返回NULL(带有未定义的偏移警告)并(int) NULLyield 0

编辑

从查询字符串中获取值、将其转换为所需类型、验证它并回退默认值(例如,当值丢失或无效时)的更好方法是使用 PHPfilter_input函数:

$wslp = filter_input(INPUT_GET, "wslp", FILTER_VALIDATE_INT, array(
    "options" => array(
        "default" => 1,
        "min_range" => 1,
        "max_range" => 6
    )
));
于 2012-12-13T20:23:46.293 回答
3

它变为零。

(int) undefined === 0

演示

于 2012-12-13T20:22:28.680 回答
1

$wslp强制转换为整数。该@语句隐藏数组中不存在"wslp"的条目的任何通知/警告。$_REQUEST

于 2012-12-13T20:24:55.873 回答