我正在运行以下内容:
$file_content[122] = 'Shell "cmd.exe /c cd %appdata% & test.exe -o ' . $p. ' -u ' . $user . ' -p ' . $pass . ' & pause", vbMaximizedFocus';
$p
基本上是$_GET['p'];
用户将输入协议地址,例如+tcp://host
或http+udp://host
,我基本上需要字符串中的+
。
我的问题是因为p
的值中包含+
字符,所以我没有得到预期的响应。
答案 0 :(得分:1)
您无法通过URL将+
作为原始格式的参数发送。因为PHP会将其作为查询字符串中的空格读取。
您需要做的是urlencode 之前将其放入网址,然后再decode。
这会将+更改为编码版本
例如,之前:$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';