我有一个简单的垃圾邮件杀手,我试图整理,但文字没有显示在我的表格上。
javascript是:
<script language="javascript" type="text/javascript">
document.write("SPAM Killer: What is " + GetDateMonth() + " + " + GetDateDay() + "?")
</script>
在我的.js文件中,我定义了这两个函数:
function GetDateMonth() {
return date1.getMonth() + 1;
}
function GetDateDay() {
return date1.getDay() + 1;
}
该文字显示在IE8下,但不在Chrome下。
作为奖励:我提交表单的OnClick方法有一些代码错误地添加了我的月份和日期:
string spamError = "The SPAM Killer answer was incorrect. ";
char[] split = spamTest.ToCharArray();
for (int i = 0; i < split.Length; i++) {
if (char.IsLetter(split[i])) {
Ok = false;
txtMessage.Text = spamError + "Non-numeric data entered.";
return;
}
}
int nTestValue = Convert.ToInt32(spamTest, 10);
if (nTestValue < 1) {
Ok = false;
txtMessage.Text = spamError + "Negatave or zero value found.";
}
DateTime dt = DateTime.Now;
int month = dt.Month;
int day = dt.Day;
int nCorrect = month + day;
if (nCorrect != nTestValue) {
Ok = false;
txtMessage.Text = spamError + string.Format("Expected {0}; Received {1}.", nCorrect, nTestValue);
return;
}
使用IE8,我看到以下内容:
垃圾邮件杀手:什么是2 + 3?
我输入5,点击发送,然后获取Expected 17; Received 5.
答案 0 :(得分:1)
不要重新发明轮子,帮助您阅读http://www.google.com/recaptcha
的书籍对于C#代码,请参阅http://code.google.com/apis/recaptcha/docs/aspnet.html
如果您坚持坚持使用代码,请考虑午夜左右的问题以及其他时区的用户。此外,机器人可以非常轻松地回答您的反机器人问题,如果我写机器人,我需要45秒来编写代码支持。
如果您仍然坚持,则不应再使用document.write(不是自2002年以来),而是使用DOM将文本插入到标记ID中,如下所示:Change label text using Javascript
答案 1 :(得分:0)
答案似乎是使用附加字符串的document.write()
函数。
我将我的HTML重新设计为更像这样:
<table>
<tr>
<td colspan="2">
<b>[Human Check]</b><br />
Enter the text to the left and below exactly as it appears:
</td>
</tr>
<tr>
<td>
<script language="javascript" type="text/javascript">
document.write(GetSpamText())
</script>
</td>
</tr>
</table>
@serverfault:感谢您对日期属性的建议。那可能是个问题。
GetSpamText()
返回的文本可以是静态的或编码的,以创建随机值(另一个主题)。