为什么我的脚本不包含Querystrings和Parameters?

时间:2012-08-01 11:18:40

标签: php include require-once

简单地说:

<? include("open.php"); ?>

VS

<? include("open.php?page=about"); ?>

VS

<? $x="varToPass"; include("open.php"); ?>

为什么不能这样做,当然这应该被编入。如果没有,我可以编辑原始/核心PHP C文件来实现这一目标。

3 个答案:

答案 0 :(得分:2)

简单的答案。没有必要传递这样的参数。

include 'open.php?page=about&something=true&more=rubbish';

$page = 'about';
$something = true;
$more = 'rubbish';

include 'open.php';

我认为很容易看出哪个更易读,而且它们都能达到您想要做的目的。

事实是,include语句字面包含指定文件中的代码,在您引用它时。

您可以将执行包含的文件视为在您编写包含语句的确切位置具有open.php的源。

修改

回答问题的第二部分。是的,你可以修改源并实现这一点,但这将是一个毫无意义的练习。

编辑2:

我也想过,或许你认为你想通过URL包含文件。

例如include 'http://127.0.0.1/open.php?page=about'

在这种情况下,完全有可能,因为将调用http流包装器,并且变量将被传递给您请求的文件。

此行为因默认而被禁用,因为它会带来巨大的安全风险

您可以通过修改allow_url_include中的php.ini值来启用它。但我建议你不这样做。

答案 1 :(得分:1)

当您包含文件时,它们将位于相同的范围内,因此您可以重复使用变量检索参数

<?php
    // index file
    $x = $_GET["x"];
    include 'file.php';

file.php 中你可以这样做:

<?php
    //include file
    if ($x != '')

或:

<?php
    //include file
    $x = $_GET["x"];

所以不需要传递任何东西 -

答案 2 :(得分:-1)

包含/要求是物理文件,而不是基于传入参数的文件的动态表示。

对于后者,您需要查看cURL