我似乎无法让这个工作。我正在尝试修改一个非常旧的脚本(我们已故的技术人员和密友的),我们用来搜索正在使用的操作系统的服务器。这包括(据我所知)PHP 和SMARTY。
我已经尝试过用斜线和反引号来转义内容。但它根本不起作用。我真的不知道在哪里看。下面是最初的两段代码(我找不到更多的部分,或者我忽略了)。
来自第一个 PHP 文件的一段 PHP 代码:
$values['osname'] = array( '-' => 'no choice',
'5' => 'CentOS 5.x',
'6' => 'CentOS 6.x',
'7' => 'CentOS 7.x',
);
来自第二个 PHP 文件的一段代码:
$osname = intval(Common::GPvar('osname'));
$_SESSION['form']['serverselect']['osname'] = $osname;
if ($osname != '-') { $where .= " AND dsh.sumup LIKE '%OS: CentOS ".$osname."%'"; }
这是在搜索表单中使用的,因此当我选择“CentOS 6.x”时,它将显示所有包含文本OS: CentOS 6.10 的服务器。
现在我想要实现的是使以下内容起作用:
$values['osname'] = array( '-' => 'no choice',
'CentOS 5' => 'CentOS 5.x',
'CentOS 6' => 'CentOS 6.x',
'CentOS 7' => 'CentOS 7.x',
'Virtuozzo 7' => 'Virtuozzo 7.x',
);
正如我上面提到的,我试图逃避内容,但这没有用。所以我猜测第二个 PHP 文件中的编码也需要一些调整。所以我尝试删除某些东西,比如“CentOS”、“%”和其他一些东西。但它不起作用。结果是,在搜索中,我显示了所有服务器(无论它们使用什么操作系统)。
我想我正确地转义了数组中的变量,但是由于某种原因,第二段编码与请求的搜索输入不兼容?
任何人都知道我在这里做错了什么?