我有2個簡單的PHP文件:使用GET在需要
test.php的
<?php
$a=10;
require "use.php?c=$a";
?>
use.php:
<?php
$test=$_GET['c'];
echo $test;
?>
但它沒有返回。
有什麼不對?
我有2個簡單的PHP文件:使用GET在需要
test.php的
<?php
$a=10;
require "use.php?c=$a";
?>
use.php:
<?php
$test=$_GET['c'];
echo $test;
?>
但它沒有返回。
有什麼不對?
include()
和require()
不發出HTTP請求,除非你提供一個完整的URL,他們的本地文件系統上工作。 $_GET
和朋友在填充時使用URL參數。您的代碼不應該起作用,因爲您正在嘗試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);
這不是您想要使用的方式require
:您通常使用它來包含文件系統路徑,該路徑不適用於GET參數。 GET參數只能在HTTP URL中使用。 (HTTP請求很慢,因此幾乎從不想通過URL包含任何東西。)
代碼require
d被執行,就好像它是當前腳本的一部分一樣。
所以,你可以這樣做:
<?php
$a=10;
require "use.php";
?>
use.php
<?php
$test=$a;
echo $test;
?>
要求?也許你的位置在找什麼:
$a=10;
header("Location: use.php?c=$a") ;
你可以試試下面的代碼:
$oldget = $_GET;
$_GET = array('c'=>'a');
require "use.php";
$_GET = $oldget;
但我認爲,你應該改變你的架構
我明白了。但是,我將不得不在文件之間保留變量名稱。有沒有一種方法不需要變量名是相同的? – David19801 2012-01-08 16:41:05
@大衛首先你想做什麼?也許如果你詳細說明,有人可以提出一個好建議 – 2012-01-08 16:41:34
只是玩PHP,並很好奇它爲什麼沒有按預期工作... – David19801 2012-01-08 16:49:11