[更新]需要/包括一个php,并将值传递给另一个需要/包括的php

[更新]需要/包括一个php,并将值传递给另一个需要/包括的php,php,include,require,Php,Include,Require,我将在两个必需/包含的php文件之间传递一些值,例如: mysql.php: <?php $conn = mysql_pconnect("mysql.host.com","root","password") or trigger_error(mysql_error(),E_USER_ERROR); ?> fun.php: <?php function fun() { mysql_select_db($conn); } ?> ma

我将在两个必需/包含的php文件之间传递一些值,例如:

mysql.php:

<?php
    $conn = mysql_pconnect("mysql.host.com","root","password") or trigger_error(mysql_error(),E_USER_ERROR);
?>

fun.php:

<?php
    function fun() {
    mysql_select_db($conn);
    }
?>

main.php:

<?php
    require_once('mysql.php');
    require_once('fun.php');
    fun();
    //Output: Error that can't find $conn
?>


但问题是它非常烦人(因为我编写了大量函数),而且可能不安全,因为它存储了mysql服务器的用户名和密码。

尝试使用globals$var1可以被称为
$GLOBALS['var1']

$\u GET['var1']=1;
$var2=$_GET['var1']

你的问题很令人困惑。如果我理解,那么答案取决于您如何使用所包含的信息

如果需要在函数中使用变量,则需要在函数开头将变量声明为“全局”(如果是OOP,则声明为类)

例如,如果main.php文件定义了以下示例函数:

function exampleFunction()
{
    global $var1; //from inc1.php
    global $var2; //from inc2.php
    //now do something with the variables and probably return a result
}
如果您正在编写OOP

class SomeClass
{
      global $var1; //from inc1.php
      global $var2: //from inc2.php
      private $var3; //local to this class
}

最终的解决方案是不依赖于由其他文件的include定义的变量。即使php允许这样做,它们也应该被视为本地的。你的依赖关系应该是抽象的,而不是具体的变量。没有什么可以改进的。。这不是一个脚本问题。。。刚刚用最新稳定版本的php测试了这个脚本,它运行得很好。。。我的建议是让他得到一个最新的稳定版本,而你认为这还不够。。。。你应该给他一个答案,而不是现在就投票给我@Linus Kleeninclude()'d脚本被视为是物理剪切粘贴到执行include的脚本中的。换句话说,包含文件中的顶级全局变量与执行包含操作的文件在同一范围内。您的代码可以在任何现代PHP版本上运行。这表明您运行的是石器时代的copy.nono,事实上,inc1.php是一个mysql连接句柄,其他$u GET无法通过这些句柄,但我需要说的是,我将在不同的页面(main.php,main 1.php,main 2.php…)中多次运行fun(),当然我将从mysql.php导入mysql设置。但是如果我写进fun.php,require_once不会运行,因为它只会在我在main.php中需要它之后运行一次。即使require_once也可以运行,但它也会崩溃,因为主页可能被放入子文件夹。我想我看到了问题所在。您需要在fun.php文件中包含(要求)mysql.php文件。Fun无法访问该变量,因为它尚未包含在内。正如Marc B所说,php将包含的文件视为被剪切并粘贴到调用文件中。但问题是,这意味着require将在main.php n crash中运行两次!将require语句从main.php移到fun.php文件的顶部。您可以链接require语句。如果您将require放入文件#1,然后将require文件#1放入文件#2,您将在文件#2中包含原始require语句的内容。并非所有页面都将使用fun.php,但所有页面都可能使用mysql.php,n某些页面不会位于同一文件夹中
class SomeClass
{
      global $var1; //from inc1.php
      global $var2: //from inc2.php
      private $var3; //local to this class
}