PHP If语句不能匹配相同的字符串


PHP If Statement won't match identical strings

我正在运行一个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