在require中使用GET

时间:2012-01-08 16:37:03

标签: php

我有2个简单的PHP文件:

test.php的

<?php
$a=10;
require "use.php?c=$a";
?>

use.php:

<?php
$test=$_GET['c'];
echo $test;
?>

但它什么也没有回报。

有什么问题?

4 个答案:

答案 0 :(得分:5)

这不是您想要使用require的方式:您通常使用它来包含文件系统路径,该路径不适用于GET参数。 GET参数仅适用于HTTP URL。 (HTTP请求很慢,因此您几乎不希望通过URL包含某些内容。)

require d代码被执行,好像它是当前脚本的一部分。

所以你可以这样做:

<?php
$a=10;
require "use.php";
?>

use.php

<?php
$test=$a;
echo $test;
?>

答案 1 :(得分:1)

除非您提供完整的URL,否则

include()require()不会发出HTTP请求,它们可以在本地文件系统上运行。 $_GET和朋友在填充时使用网址参数。您的代码不起作用,因为您正在尝试require()名为use.php?c=$a的文件,而不是名为use.php的文件,将值$a传递给参数c ,这就是你想要的。

这将有效:

<强> test.php的

<?php
$a=10;
require "use.php";
?>

<强> use.php

<?php
echo $a;
?>

如果没有输出,则应启用错误报告:

error_reporting(-1);
ini_set('display_errors',1);

答案 2 :(得分:0)

需要?也许位置你在寻找:

$a=10;
header( "Location: use.php?c=$a" ) ;

答案 3 :(得分:-1)

您可以尝试以下代码:

$oldget = $_GET;
$_GET = array('c'=>'a');
require "use.php";
$_GET = $oldget;

但我认为,你应该改变你的架构