我正在尝试研究如何检查文本区域以查看它是否包含某个短语。
我相信我可以使用.indexOf?
我只有一个验证脚本来检查联系表单的内容。最近我收到了相当多的垃圾邮件。我注意到所有这些垃圾邮件都包含短语[url =我想,如果我可以添加一个小脚本来检查文本区域是否包含这样的短语,如果是,则停止发送邮件。
目前我有这个简单的javascript片段来检查文本区域是否为空白:
if (message.val()=='') {
message.addClass('highlight');
message.focus();
return false;
} else message.removeClass('highlight');
添加内容以检查消息字段是否包含[url =
的任何好方法我也有类似的php验证脚本:
if (!$message) $errors[count($errors)] = 'Please click back and enter your message.';
任何想法如何添加类似的验证脚本来检查消息是否包含[url =在php中?
任何帮助将不胜感激! :O)
答案 0 :(得分:3)
您不太可能通过检查客户端textarea的内容来阻止垃圾邮件: - 垃圾邮件发送者很可能直接POST到您的服务器端脚本,因此您需要在那里进行过滤。检查特定模式只会在模式更改之前有效,然后您必须更新脚本 这个问题的一个常见解决方案是使用一次性表单令牌 当您提供表单时,您会生成一个随机字符串,并将该标记放在表单中的隐藏字段中。您还可以在会话或数据库中将令牌存储在服务器上。提交表单后,您将匹配存储和提交的令牌。通过这种方式,您可以更加确定表单本身已填写并提交,并且您没有从机器人接收数据 为了提高安全性,您只能允许每个令牌仅使用一次,以防止多次提交。
<强>更新强> 一个非常简单的单页示例
<?php
session_start();
/**
* Process the form if we have a token that we recognise
* otherwise just present the form again, you probably want to handle this a bit better
*/
if( isset( $_POST['token'] ) && isset( $_SESSION['token'] )
&& $_POST['token'] === $_SESSION['token'] ) {
// no more submissions using this token
unset( $_SESSION['token'] );
$name = clean( $_POST['name'] );
$comment = clean( $_POST['comment'] );
// process the input and redirect to a confirmation
// just echoing data for example
echo "$name said $comment";
die();
} else {
$token = uniqid();
$_SESSION['token'] = $token;
}
/**
* Stub function that cleans user input
* @param String $str
*/
function clean( $str ) {
return $str;
}
?>
<html>
<head>
<title>Form token example</title>
</head>
<body>
<form method="post">
<label>
Name<br/>
<input type="text" name="name"/>
</label>
<br/>
<label>
Comment<br/>
<textarea name="comment"></textarea>
</label>
<br/>
<label>
<input type="submit"/>
</label>
<br/>
<br/>
The token field would normally be hidden, it's displayed here so that the user can change it for testing<br/>
<input type="text" name="token" value="<?php echo $token ?>"/><br/>
</form>
</body>
</html>
答案 1 :(得分:2)
查看javascript search method和javascript match method。我更喜欢搜索,如果你只关心它是否存在然后你做这样的事情。
var stringToSearch = "stackoverflow";
if (stringToSearch.search("over") >= 0){
//exists
}
顺便说一句,你的问题没有做对。我不知道php所以我无法帮助你
答案 2 :(得分:-1)
message.val().match('your phrase here')