PHP 字符串不包含 + 作为字符串中的新运算符空间



我正在运行以下内容:

$file_content[122] = 'Shell "cmd.exe /c cd %appdata% & test.exe -o ' . $p. ' -u ' . $user . ' -p ' . $pass . '  & pause", vbMaximizedFocus';

$p基本上是$_GET['p'];

用户将输入一个协议地址,例如+tcp://hosthttp+udp://host,我基本上需要在字符串中输入该+

我的问题是,由于 p 的值中包含+字符,所以我没有得到预期的响应。

您不能通过 URL 以原始格式的参数发送+。因为 PHP 会将其读取为查询字符串中的空格。

您需要做的是在将其放入URL之前对其进行编码,然后再对其进行解码。

这会将 + 更改为编码版本

例如,在以下之前:

$p = urlencode($some_value);
$url = 'some/path/here?p=' . $p . '&user=' . $user; // etc
// do your redirect

然后之后:

$p = urldecode($_GET['p']);
$file_content[122] = 'Shell "cmd.exe /c cd %appdata% & test.exe -o ' . $p. ' -u ' . $user . ' -p ' . $pass . '  & pause", vbMaximizedFocus';

最新更新