【问题标题】:Passing variables in PHP from one file to another将 PHP 中的变量从一个文件传递到另一个文件
【发布时间】:2023-03-17 14:40:01
【问题描述】:

这是我的代码。现在如何在另一个文件中使用 $pubname。

mysqli_select_db($connect,"membership");
$retname = "select username from users where email='$globalname' limit 1";
$rn = mysqli_query($connect,$retname) or die(mysqli_error($connect));
$name = mysqli_fetch_array($rn);
    //connecting for mathcing username with fullname and displaying it
$pubname = mysqli_real_escape_string($name['username']);

include('profile.php');

echo $pubname;

而且这段代码安全吗?我这样做了……还不行。

【问题讨论】:

  • 您不需要从数据库中转义字符串。

标签: php sql variables


【解决方案1】:

包括您希望变量可在其中访问的文件,就像这样

include('somefile.php')

并且在该文件的顶部您可能需要放置类似 [取决于服务器配置]

global $pubname

但在大多数情况下,您不需要这样做。

关于安全性,取决于$pubname 的设置方式,您的查询可能会或可能不会倾向于sql injection.

注意:include()文件还有其他方法如include_once()、require()和require_once(),来自php.net:

以下文档也适用 要求()。这两个构造是 除了他们如何 处理失败。 include() 产生一个 警告同时 require() 导致 致命错误。换句话说,使用 require() 如果你想要一个丢失的文件 停止处理页面。 include() 不这样做, 无论如何,脚本都会继续。 一定要有合适的 include_path 设置也是如此。是 警告需要解析错误 文件不会导致处理停止 在 PHP 4.3.5 之前的 PHP 版本中。 从这个版本开始,它确实如此。

【讨论】:

    【解决方案2】:

    要在另一个脚本中使用$pubname,请将其保留为全局变量。你不需要回应它。 (需要注意的是:全局变量应该谨慎使用,最好集中到一个数组中。)

    就安全性而言:您应该在使用之前使用mysqli_real_escape_string 而不是$globalname。并且仅在您在下一个查询中使用 $pubname 之前转义它。现在看起来,您对输出进行了不必要的编码,但忘记了对输入进行转义 - _escape_string 实际上是为了。

    【讨论】:

      【解决方案3】:

      在另一个文件中使用pubname。首先,您必须包含设置/创建pubname 的文件。

      然后使用include()或require()函数调用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        • 2017-06-27
        • 1970-01-01
        • 1970-01-01
        • 2014-07-02
        相关资源
        最近更新 更多