Php 筛选会话变量的输入

Php 筛选会话变量的输入,php,session,Php,Session,我是否可以像使用$\u POST一样使用$\u会话中的过滤器输入 当我尝试时,它给出了错误: 警告:筛选输入():输入会话尚未实现 session_start(); $x=filter_input(INPUT_SESSION, 'x'); if ($x){ echo $x; } php版本:php版本5.5.12-1+deb.sury.org~precise+1我和你有同样的问题。也许我们很严格,但我在不影响任何安全性/过滤器的情况下解决了问题 我使用了filter\u var而不是f

我是否可以像使用
$\u POST
一样使用
$\u会话
中的
过滤器输入

当我尝试时,它给出了错误:

警告:筛选输入():输入会话尚未实现

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

php版本:
php版本5.5.12-1+deb.sury.org~precise+1
我和你有同样的问题。也许我们很严格,但我在不影响任何安全性/过滤器的情况下解决了问题

我使用了
filter\u var
而不是
filter\u input

例如:

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

看起来$\u会话与$\u服务器的工作方式不同。 经过多次组合后,我遇到了类似的问题。修复后,我将保留一些代码,以便您可以看到差异:

这是由于直接访问这些变量而发出警告的原始代码

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");
}
以下是包含过滤器和清除警告后的代码

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

你为什么要过滤它?它不是用户提供的。@jeroen-hmm,公平点。主要原因是我现在习惯使用
filter\u input
,因为它省去了对
isset($\u POST['x'])的检查。
您可以使用类似
$x=isset($\u SESSION['x'])的东西吗$_会话['x']:空
。没那么久…@jeroen是的,这是一个很好的解决方案:)