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

时间:2011-09-21 02:06:51

标签: php

<?php
$city = $_GET["city"];
$prov = $_GET["prov"];

$file = "citycountdetails.php?city=".$city."&prov=".$prov."";
?>

<?php include $file; ?>

警告:include(citycountdetails.php?city = Halifax&amp; prov = NS)[function.include]:无法打开流:没有这样的文件或目录....

不确定我做错了什么......

由于

2 个答案:

答案 0 :(得分:2)

你不能在那里包含一个带参数的文件!

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

有几种方法可以实现您的目标:


从citycountdetails.php中访问$ _GET [“city”]和$ _GET [“prov”]。

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


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

这可能是最糟糕的做法,所以不要这样做。 :d


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

可能是你现在最容易做到的事情,没有任何不良副作用。

的functions.php

<?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();
?>

答案 1 :(得分:0)

无法包含带有查询字符串参数的文件,因为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'];
}
?>