PHP包含问题,不确定问题是什么


PHP include problem, not sure what the problem is

<?php
$city = $_GET["city"];
$prov = $_GET["prov"];
$file = "citycountdetails.php?city=".$city."&prov=".$prov."";
?>
<?php include $file; ?>

警告:include(citycountdetails.php?city=Halifax&prov=NS) [function. php]。[include]:无法打开流:....

中没有这样的文件或目录

不知道我做错了什么…

谢谢

恐怕不能包含带参数的文件!

这些参数仅用于http请求。PHP include不启动HTTP请求,它们只包含文件系统中的本地文件。

有几种方法可以实现你想要做的事情:


从citycountdetails.php中访问$_GET["city"]和$_GET[" prove "] .

这是一个快速丑陋的方法,并导致相当多的依赖,但它至少不坏。


声明$city和$ prove,并从citycountdetails.php(使用全局变量)访问它们。

这可能是最糟糕的方式,所以不要这样做。: D


创建一个函数文件,其中包含检索这些参数的方法

这可能是你现在能做的最简单的事情了,而且没有任何副作用。

显然也
<?php 
function GetCity(){
   return $_GET['city'];
}
function GetProvince(){
   return $_GET['prov'];
}
?>
文件

<?php
include 'functions.php';
include 'citycountdetails.php';
?>

city count details.php

<?php
$city = GetCity();
$prov = GetProvince();
?>

不可能包含带有查询字符串参数的文件,因为PHP会将查询字符串解释为文件名的一部分。如果您需要将$city$prov传递给citycountdetails.php,则它们已经在全局作用域中可用。

修改citycountdetails.php,将$city$prov引用为$GLOBALS['city']$GLOBALS['prov'],而不是$_GET['city']$_GET['prov']

// citycountdetails.php
<?php
$city = $GLOBALS['city'];
$prov = $GLOBALS['prov'];
?>
// Or similarly accomplished in functions.php
<?php 
function GetCity(){
   return $GLOBALS['city'];
}
function GetProvince(){
   return $GLOBALS['prov'];
}
?>