我可以使用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
答案 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");
}