PHP,包含参数

时间:2011-01-04 21:44:03

标签: php

我有一个PHP文件,将从表单中调用。因此它获得了超过$ _GET的参数。

现在我需要与此文件完全相同的功能,但不需要这样的表单调用。 我将它包含在具有固定参数的常规代码中(通常来自表单)。 所以我的文件可以使用没有它的表单。

我只知道包含并在其前面设置$ _GET的方式。但我不确定这是最优雅的方式(我不喜欢设置$ _GET之类的想法)。

其他任何方式吗?

br,克里斯

5 个答案:

答案 0 :(得分:2)

您可以将代码转换为以关联数组作为参数的函数。

这样,您可以在必要时包含它,并使用$_GET或您自己构建的数组调用该函数。

答案 1 :(得分:0)

您可以先执行if语句,查看是否已设置$ _GET参数。如果它们已经设置,请将它们分配给脚本可以使用的变量,如果它们尚未设置,只需将固定参数分配给变量。

答案 2 :(得分:0)

如果我理解正确,您可以创建一个充满默认值的数组。调用此脚本时,它将检查$_GET是否为空。如果$_GET为空,则使用默认值,否则,将使用$_GET覆盖默认数组,并使用这些值。

$def = array(
  'keyA' => 'valueA',
  'keyB' => 'valueB'
);

if ( !empty( $_GET ) ) $def = $_GET;

// $def contains either your defaults, or the user-provided values

重要的是要注意,这个逻辑可以分解为两个文件。

/* index.php */
$def = array(
  'keyA' => 'valueA',
  'keyB' => 'valueB'
);

if ( !empty( $_GET ) ) $def = $_GET;
include( 'doStuff.php' );

/* doStuff.php */
if ( !isset( $def ) ) $def = $_GET;

echo $def['keyA'];

请注意,在doStuff.php中,我们会检查是否设置了$def。如果此脚本包含在index.php中,那么我们知道$def已设置并且存在这些默认值。如果直接调用doStuff.php,则我们知道$def很可能未设置,我们需要根据$_GET进行设置。无论哪种方式,当脚本准备就绪时,我们有一个名为$def的变量,我们将获得所有值。

答案 3 :(得分:0)

因为你应该在文件中进行某种参数清理,你可以解析像这样的参数

$someConfigVar = isset($config['someConfigVar']) ? 
                       $config['someConfigVar'] : 
                       sanitize($_GET['someConfigVar'];

在这种情况下,您只需要在包含文件之前填充$config数组。此代码段希望sanitize()成为您的清理功能(防御xss和SQL注入等)

答案 4 :(得分:0)

将对表单数据进行操作的代码放在一个单独的文件中。

此文件将使用上下文数组变量$ params,而不是$ _GET。

然后,只要您需要使用此文件的操作,请将其包含在以下函数中。

如果要使用Web参数,请执行includeElement('your_file',$ _GET)。

  /**
     * Allow a file inclusion with a set of parameters
     * @param string $src File 
     * @param array $params $parameters
     */
    function includeElement($src, $params = array())
    {
            include($src);
    }