日期:2014-05-17  浏览次数:21148 次

留言板里好多垃圾留言,怎么屏蔽.应该都是机器自动发的,每天都有
新做的留言板里好多垃圾留言,怎么屏蔽.应该都是机器自动发的,每天都有.
加了验证码也不定用,大家帮忙看看.

http://www.ctszj.net/ctszj/guestbook/index.asp

------解决方案--------------------
顶了。
------解决方案--------------------
顶下先

------解决方案--------------------
做个防跨站提交
------解决方案--------------------
http://community.csdn.net/Expert/topic/4817/4817824.xml?temp=.3590204
------解决方案--------------------
那种验证码没有用的,搞一个和csdn差不多的验证码。可以用C#写一个组件试试。
------解决方案--------------------
如果是机器 发的 你可以 根据发布时间的间隔限制一下 然后
不行就封了他的IP
------解决方案--------------------
这样,你把留言簿留言的时候加个验证码应该就好了,
------解决方案--------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Collections;

namespace ValidateCode
{
public class VCode
{
public MemoryStream DrawVCode(string content)
{
System.Random random = new Random();

//创建图片对象
System.Drawing.Bitmap image = new Bitmap((int)content.Length * 17, 30);
Graphics gh = Graphics.FromImage(image);

ArrayList bgcolor = new ArrayList();
bgcolor.Add(Color.Honeydew);
bgcolor.Add(Color.AliceBlue);
bgcolor.Add(Color.White);
bgcolor.Add(Color.Azure);
bgcolor.Add(Color.OldLace);
bgcolor.Add(Color.Lavender);
gh.Clear((Color)bgcolor[random.Next(0, 5)]);

//噪音线颜色数组
System.Collections.ArrayList c = new ArrayList();
c.Add(Color.Silver);
c.Add(Color.SeaShell);
c.Add(Color.SkyBlue);

for (int i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);

gh.DrawLine(new Pen((Color)c[random.Next(0, 2)]), x1, y1, x2, y2);
}
//噪音点
for (int i = 0; i < 200; i++)
{
int x = random.Next(1, image.Width - 2);
int y = random.Next(1, image.Height - 2);

image.SetPixel(x, y, Color.FromArgb(random.Next()));
}


//设定字体颜色
System.Collections.ArrayList cb = new ArrayList();
cb.Add(Color.Black);
cb.Add(Color.DarkBlue);
cb.Add(Color.Purple);
cb.Add(Color.Indigo);
cb.Add(Color.DarkRed);
cb.Add(Color.IndianRed);
char[] CArray = content.ToCharArray();
for (int i = 0; i < CArray.Length; i++)
{
string cstr = CArray[i].ToString();
Font f = new Font( "Times New Roman ", 15);
gh.DrawString(cstr, f, new SolidBrush((Color)cb[random.Next(0, 5)]), 2 + ((int)f.SizeInPoints) * i, 2);
}

gh.DrawRectangle(new Pen((Color)cb[random.Next(0, 5)]), 0, 0, image.Width - 1, image.Height - 1); //汇出边框