filter_input用于会话变量

时间:2014-05-16 15:41:53

标签: php session

我可以使用filter_input$_SESSION一样使用$_POST吗?

当我尝试它时会出现错误:

Warning: filter_input(): INPUT_SESSION is not yet implemented

session_start();
$x=filter_input(INPUT_SESSION, 'x');
if ($x){
    echo $x;
}

php版本:PHP Version 5.5.12-1+deb.sury.org~precise+1

2 个答案:

答案 0 :(得分:5)

我和你一样有同样的问题。也许我们是如此严谨,但我在不妥协任何安全/过滤器的情况下解决了这个问题。

我使用filter_var代替filter_input

一个例子是这样的:

session_start();
$_SESSION['baba'] = "co";
$ses = filter_var($_SESSION['baba']);
if (!empty($ses)) {
    echo $ses;
}

答案 1 :(得分:0)

好像$ _SESSION不能和$ _SERVER一样工作。 经过多次组合后,我遇到了类似的问题。修复后,我将保留一些代码,以便您能看到不同之处:

这是带有警告的原始代码,因为直接访问这些变量

WITH practicenew AS (SELECT 1 ID, 3 value1 FROM dual UNION ALL
                     SELECT 2 ID, 4 value1 FROM dual UNION ALL
                     SELECT 3 ID, 5 value1 FROM dual UNION ALL
                     SELECT 4 ID, 5 value1 FROM dual UNION ALL
                     SELECT 5 ID, 6 value1 FROM dual UNION ALL
                     SELECT 6 ID, 2 value1 FROM dual)
SELECT ID,
       value1,
       AVG(value1) OVER (ORDER BY ID
                         ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) value2
FROM   practicenew;

        ID     VALUE1     VALUE2
---------- ---------- ----------
         1          3          3
         2          4        3.5
         3          5        4.5
         4          5          5
         5          6        5.5
         6          2          4

下面是包含过滤器和清除的警告之后的代码

if  (   (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] == false) ||
        ($_SESSION['REMOTE_ADDR'] != $_SERVER['REMOTE_ADDR']) ||
        (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] == false) || 
        ($_SESSION['HTTP_USER_AGENT'] != $_SERVER['HTTP_USER_AGENT']) 
    ) {
    header("Location: ../login.php");
}