Php 获取包含的内部变量
通过include传递get变量的安全含义是什么 例如: index.php:Php 获取包含的内部变量,php,Php,通过include传递get变量的安全含义是什么 例如: index.php: $lastname = $pulleddatabasevalue; include "../includes/header?lastname=$lastname"; header.php: echo $_GET["lastname"]; 由于变量是动态的,我一直在努力使include()或会话能够在php include中为变量$lastname分配数据库值。然而,$\u GET在这里工作得很好。它不会显示在浏
$lastname = $pulleddatabasevalue;
include "../includes/header?lastname=$lastname";
header.php:
echo $_GET["lastname"];
由于变量是动态的,我一直在努力使include()或会话能够在php include中为变量$lastname分配数据库值。然而,$\u GET在这里工作得很好。它不会显示在浏览器地址栏上,因此不能在那里以敌对的方式进行操纵。有没有其他恶意用户可以使用此代码的方法?假设include目录已锁定,我只引用index.php。对不起,无法将get参数传递到包含的文件。。。见: Include是一个严格的函数,我们称之为“物理函数”。要发出get请求,必须发出请求。包括从服务器读取文件 顺便说一句,我很好奇,这是怎么可能的,是你让它起作用的。我认为你的代码中有一些误解
您应该考虑将include作为复制粘贴功能。 在这种情况下:
$var = true;
include ('include.php');
include.php:
var_dump($var);
应回声bool(真)
希望能有帮助
在谈到安全问题时,就我而言,包括在我描述的方式中,不应该产生任何新的安全漏洞但您应该检查包含文件的所有权限,以100%确定。输出用户提供的输入的安全含义是相同的,无论如何执行:转义和验证是必不可少的!否则,您将实现巨大的安全漏洞 除此之外,无论您是直接访问$\u GET,还是首先将值放入另一个变量并访问include中的值,都没有任何区别 唯一的区别是一般的软件维护:前者通常被认为是不好的,因为它是对全局变量的访问,而后者可能是函数调用的一部分,并且可能更好地封装变量名
但是,您的代码是错误的。不能将查询参数作为文件名的一部分传递。它之所以有效,是因为$\u GET可以作为数组在任何地方使用,而无需任何其他代码(请阅读PHP文档中的“superglobal variable”) index.php 页眉 外部参考文献。建议改为:
$lastname = $pulleddatabasevalue;
include "../includes/header.php";
echo $lastname;