2013-07-24 41 views
0

我在joomal 2.5 rsform亲创造一个形式,我想在一个领域 我用这个代码来禁止一些URL地址限制URL地址

if(isset($_POST['form']['link'])) 
{ 
$bad = array('ebooks.com','suprbay.org'); 
if(in_array($_POST['form']['link'],$bad)) 
{ 
    $redirectLink = 'index.php?option=com_rsform&formId='.$formId; 
    $RSadapter->redirect($redirectLink,'this url limited'); 
} 
} 

这段代码是真的,当用户使用完全相同“ebooks.com”或“suprbay.org”,但是当用户使用 “www.suprbay.org”或“http://www.ebooks.com/635228/you-losing-weight/roizen-michael-f-oz-mehmet-c/”,或当使用该加的每一件事这个代码不工作

我去当URL包含主域该代码工作 请帮我 谢谢

+0

另一方面,如果用户有恶意,他们可以使用像tinyurl.com这样的网址缩短器来解决这个限制。只是要记住。 – Samuel

回答

0
 foreach ($bad as $badsite){ 
      if (stristr($_POST['form']['link'],$badsite)){ 
       $redirectLink = 'index.php?option=com_rsform&formId='.$formId; 
       $RSadapter->redirect($redirectLink,'this url limited'); 
       break; 
      } 
     } 
+0

感谢兄弟完整的代码是这样的吗? – kapitan

+0

$ bad = array('ebooks.com','suprbay.org');如果(strstr($ _ POST ['form'] ['link'],$ badsite)){ $ redirectLink ='index.php?option = com_rsform&formId ='。$ formId ; $ RSadapter-> redirect($ redirectLink,'this url limited'); 休息; } } – kapitan

0

你可以尝试

$value = htmlspecialchars($_POST['form']['link']); // convert special characters 
// note that you should'nt use $_POST 
// joomla has it's own way to get request variables 
// use JFactory::getApplication('site')->input->get('form', array(), 'post', 'array'); 
// this will return form array which you can work with 

foreach($bad as $site) 
{ 
    if(strposi($value, $site) !== false) 
    { 
     // value contains one of invalid links 
    } 
} 
0

要找到一个网址的域名解析需要它,而不是完全微不足道的从头开始做。有一个有用的PHP函数,parse_url,它会为你做。

$parse_result = parse_url($_POST['form']['link']); 
$link_domains = explode('.', $parse_result['host']); 
$length = count($link_domains); 
$link_main_domain = $link_domains[$length - 2].'.'.$link_domains[$length - 1]; 

然后你就像以前一样比较$link_main_domain$bad阵列。

基本上parse_url返回(其中包括)完整的域字符串。例如。 'subdomain.domain.tld'。其余的代码只是取得该域的最后两段。

一个更简单的解决方案是只搜索您想避免的域名的链接,但这并不代表它出现在除主机段以外的URL中。

请记住,您无法确定链接的位置。无论自己的域名是什么,它都可能将某人转移到“不好”的网站。