我正在运行一个html表单来传递host变量,表单本身接受URL,然后PHP解析URL并返回host。
<head>
<meta charset="ISO-8859-1">
</head>
<style>
.body {
width:950px;
margin:0 auto;
}
.vastInput{
width:600px;
}
</style>
<div class='body'>
<form id='vastFormatter' method='POST' action="#" accept-charset="ISO-8859-1">
<input type='text' name='tagURL' class='vastInput'/>
<select name='platform'>
<option value='spotx'>spotxchange</option>
<option value='liverail'>liverail</option>
<option value='adap'>adap tv</option>
</select>
<input type='submit' name='submit' value='Submit'>
</form>
下面是PHP:
$inputValue = $_POST['tagURL'];
$tagParsed = parse_url($inputValue);
$platform = $_POST['platform'];
$scheme = $tagParsed["scheme"];
$host = $tagParsed["host"];
$path = $tagParsed["path"];
当在变量$host上运行if语句以查看它是否匹配特定字符串时,问题就出现了。
if($host == "vpc.altitude-arena.com") {
echo "matched";
}
经过多次测试,我已经确定,在发布表单值和if语句的某个地方,存储在主机变量中的字符串的字符编码是不正确的,并且未能正确编码主机值中的"-"。
有什么建议吗?
wmfranca
处理表单时,必须对字符串进行消毒。您可能认为表单发布来自您的代码,但它可能来自其他地方。因此,首先修剪结果,然后尝试删除任何空格或任何其他您可能发现的奇怪字符。
我已经尝试了你提供的代码样本,我可以匹配结果:
// I take the variable and run a if statement comparison on it.
if($host === "vpc.altitude-arena.com") {
echo "Yep it matched";
}
?>
我还建议你看看这个:http://php.net/manual/en/filter.filters.sanitize.php
Trond