我有一个PHP文件,将从表单中调用。因此它获得了超过$ _GET的参数。
现在我需要与此文件完全相同的功能,但不需要这样的表单调用。 我将它包含在具有固定参数的常规代码中(通常来自表单)。 所以我的文件可以使用没有它的表单。
我只知道包含并在其前面设置$ _GET的方式。但我不确定这是最优雅的方式(我不喜欢设置$ _GET之类的想法)。
其他任何方式吗?
br,克里斯
答案 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);
}