簡體   English   中英

在php的包含文件中使用在包含文件(由另一個文件包含)中定義的變量

[英]Using variables defined in an included file (included by another file) in the including file in php

假設我有三個具有以下代碼的文件

文件1:firstfile.php

 
    $dbhost = "localhost";
    $dbname = "mydbname";
    $dbuser = "myuserid";
    $dbpass = "mypass";
    $dblink = mysql_connect($dbhost, $dbuser, $dbpass);
    mysql_select_db($dbname,$dblink);

    $errorlogs = "c:/wamp/www/smstrunk/tmp/weblogs.log";
    $displaycount = 2;
    $querylimit = "LIMIT $displaycount";
    $maximportfilesize = 2097152;

文件2:secondfile.php

include("firstfile.php");

//Returns the GET/POST parameter value
    function getPassedParam($param){

        if(isset($_POST[$param])) $value = $_POST[$param];
        elseif(isset($_GET[$param])) $value = $_GET[$param];
        else $value = "";

        return $value;
    }
//##########################################

// DB Functions
    function selectSQL($qry, $dblink){

        global $errorlogs;

        $result = mysql_query($qry, $dblink);
        if (!$result) {
            log2File("Invalid query: " . mysql_error());
            return false;
        }
        log2File($qry);

        return $result;
    }

    function updateSQL($qry, $dblink){

        $result = mysql_query($qry, $dblink);
        if (!$result) {
            log2File("Invalid query: " . mysql_error());
            return false;
        }
        log2File($qry);

        return mysql_affected_rows($dblink);
    }

    function insertSQL($qry, $dblink){
            echo $displaycount;
        $result = mysql_query($qry, $dblink);
        if (!$result) {
            log2File("Invalid query: " . mysql_error());
            return false;
        }
        log2File($qry);

        return mysql_insert_id();

    }
//##########################################

//Mailing Functions
    function auto_reg_mail($to, $message){

        $subject = 'Registration Confirmation';
        $headers = 'From: noreply@smstrunk.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion();

        mail($to, $subject, $message, $headers);
    }
//##########################################


//Logging Function
    function log2File($message, $file=NULL){

        global $errorlogs;
        if($file == NULL)$file = $errorlogs;

        $msg = date("Y-m-d H:m:s") . " [" . $_SERVER['PHP_SELF'] . "] $message \n";
        error_log($msg, 3, $file);
    }
//##########################################


// Application Specific Functions
//  1. Get customer id from msisdn
    function getCustID($msisdn, $lowner, $dblink, $alias = ""){

        //Check if msisdn already exists for this user
        $sql = sprintf("SELECT custid, mstatus FROM msisdn WHERE number = '%s' AND owner = '$lowner'", mysql_real_escape_string($msisdn));
        $rsmsisdn = selectSQL($sql, $dblink);

        if($rwmsisdn = mysql_fetch_assoc($rsmsisdn)){
            $custID = $rwmsisdn['custid'];
            $mstatus = $rwmsisdn['mstatus'];
            $sql = sprintf("UPDATE msisdn SET mstatus = 0, alias = '%s' WHERE custID = '$custID'", mysql_real_escape_string($alias));
            updateSQL($sql, $dblink);
        }else{
        // if not insert number
            $sql = sprintf("INSERT INTO msisdn (number, owner, alias) VALUES ('%s', '$lowner', '%s')", $msisdn, mysql_real_escape_string($alias));
            $custID = insertSQL($sql, $dblink);
        }
        return $custID;
    }

?>

文件3:third.php

include ("secondfile.php");

echo $dblink;

為什么在$ firstfile.php中已經定義了$ dblink后,它卻給了我未定義的變量? PHP編譯器/解釋器是否允許有限級別的包含

[I]沒有通過文件系統路徑調用包含

include()獲取一個文件,然后在其中執行PHP源代碼。

如果您使用的是http://路徑,則將在其自己的解析器實例中分別解釋每個包含。 這樣,在一個include中定義的變量將不會進入另一個。

您需要使用文件系統路徑(或使您的http包含發出源代碼而不是執行它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM