如何限制联系表上的网站链接?

时间:2019-07-26 07:03:32

标签: javascript php html css forms

我通过网站的联系表收到一些不需要的链接,如何限制用户或漫游器在联系表上输入链接?

到目前为止,我已经尝试过一些类似formValidation,validateJs之类的库,但是我找不到解决方案

<form>
  <input class="input" type="text" name="s_name">

  <input class="input" type="text" name="email">

  <input class="input" type="text" name="mobileno">

  <textarea name="message" val="" rows="5" cols="50"></textarea>

  <input class="submit" type="submit" name="submit" value="Submit">

</form>

我想限制该文本区域中的链接。在这种情况下我还可以使用其他任何库吗?

2 个答案:

答案 0 :(得分:1)

您可以简单地列出“禁止的” URL并检查textarea的值中是否包含任何URL。

const textarea = document.getElementById('textarea');
const errorP = document.getElementById('error');

const bannedUrls = [
  'google.com',
  'reddit.com',
  'stackoverflow.com',
];

textarea.addEventListener('input', () => {
  const bannedUrlsInInput = bannedUrls.filter(url => textarea.value.includes(url));
  if (bannedUrlsInInput.length > 0) {
    errorP.textContent = `${bannedUrlsInInput.join(', ')} not allowed`;
  } else {
    errorP.textContent = '';
  }
});
<textarea id="textarea" rows="10" cols="80"></textarea>
<p id="error"></p>

请注意,这不是最有效的方法。如果您有成千上万个被禁止的域,则应考虑使用奇特的Bloom过滤器数据结构。

最后但并非最不重要的一点-如果此验证确实很关键,仅进行客户端验证是不够的,那么您还需要一些服务器验证。

答案 1 :(得分:0)

您可以使用preg_match

if($_POST){
 !preg_match(^(https?:\/\/)?(www\.)?\w+\.[a-z]{2,6}(\/)?$, $_POST);
 $error = 'links are not allowed';
return $error;
}