我通过网站的联系表收到一些不需要的链接,如何限制用户或漫游器在联系表上输入链接?
到目前为止,我已经尝试过一些类似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>
我想限制该文本区域中的链接。在这种情况下我还可以使用其他任何库吗?
答案 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;
}