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是的,这是一个很好的解决方案:)