【发布时间】:2012-05-11 17:59:21
【问题描述】:
我这里有这个小sn-p,即使它满足if 语句,它也会返回false。
$urls = $_POST['links'];
trim($urls);
$urls = explode("\r\n",$urls);
foreach($urls as $url){
trim($url);
if(strpos($url,'http://') === false)
$url = 'http://'.$url;
$parse = parse_url($url, PHP_URL_HOST);
if(($parse != 'site.com') || ($parse != 'www.site.com')) //problem here
echo 'false:'.$parse.'<br>';
else
echo 'true:'.$parse;
}
输入来自文本区域:
http://site.com
site.com
http://www.site.com
www.site.com
输出:
true:site.com
true:site.com
false:www.site.com
false:www.site.com
你认为是什么问题?
【问题讨论】:
-
给您一个小提示:您可以在 GET 和 POST 参数中使用数组,例如 var[0]=abc&var[1]=def 您的 explode 构造有点不安全。
-
@peipst9lker 抱歉,我没明白你的意思,你能解释一下吗?
-
@peipst9lker 我不确定这会有所帮助,因为这 4 行似乎都来自同一个文本区域。我也不确定爆炸是否像您建议的那样不安全。但是,我确实认为他应该使用“\n”作为分隔符而不是“\r\n”。
-
您应该建议一种安全的方法吗?
-
@peipst9lker @jedwards 我看到了answer here,他推荐了
\r\n
标签: php if-statement