[英]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.