Php 限制表单submithion中的url地址
我在joomal 2.5中通过rsform pro创建了一个表单 我想在一个字段中禁止几个url地址 我使用这个代码Php 限制表单submithion中的url地址,php,forms,limit,Php,Forms,Limit,我在joomal 2.5中通过rsform pro创建了一个表单 我想在一个字段中禁止几个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='.$fo
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”或“”或当使用该选项时,再加上此代码不起作用的所有内容
当url包含代码工作的主域时,我去了
请帮帮我
谢谢你可以试试
$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
}
}
要找到URL的域,需要对其进行解析,而从头开始并不完全是一件小事。有一个有用的PHP函数,它将为您完成这项工作
$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\u main\u domain
与$bad
数组进行比较
基本上,parse_url
返回完整的域字符串。例如“subdomain.domain.tld”。代码的其余部分只是获取该域的最后两段
一个更简单的解决方案是只在链接中搜索要避免的域,但这并不能解释它出现在URL中而不是主机段中
请记住,您无法确定链接指向何处。它可能会将某人转发到一个“坏”网站,不管它自己的域名是什么。另一方面,如果用户是恶意的,他们可以使用像tinyurl.com这样的url缩短器来绕过这个限制。需要记住的是。$bad=array('ebooks.com','suprbay.org');foreach($badsite){if(strstrstr($_POST['form']['link'],$badsite)){$redirectLink='index.php?option=com_rsform&formId='.$formId;$RSadapter->redirect($redirectLink,'this url limited');break;}
$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];