前台:<div style="text-align:center; float:left; width:560px">
<input type="submit" value="提交" id="add" onclick="addmes('<%=Session["CheckCode"]%>')" />
<input id="hidecheck" type="hidden" runat="server" />
</div>js:function addmes(co) {
FindCode(co);
BeCheckCode();
}function FindCode(co) {
document.getElementById("hidecheck").value = co;
}function BeCheckCode() {
var checkinput = document.getElementById("check").value;
var checkoutput = document.getElementById("hidecheck").value;
if (checkinput == "") {
alert("请输入验证码!");
innerCheck();
}
else {
if (checkinput == checkoutput) {
window.location = "../shows/index.aspx";
}
else {
alert("验证码错误!");
document.getElementById("check").value = "";
innerCheck();
}
}
}验证码:
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetNoStore();
CreateCheckCodeImage(GenerateCheckCode());
} private string GenerateCheckCode()
{
//定义验证码长度
int CODELENGTH = 4;
int number;
string RandomCode = string.Empty;
Random r = new Random();
for (int i = 0; i < CODELENGTH; i++)
{
number = r.Next();
//字符从0~9, A~Z中随机产生,对应的ASCII码分别为48~57, 65~90 a-z 97~122
number = number % 36;
if (number < 10)
number += 48;
else
number += 87;
RandomCode += ((char)number).ToString();
}
//在Cookie中保存验证码
Session["CheckCode"] = RandomCode;
Response.Cookies.Add(new HttpCookie("CheckCode", RandomCode));
return RandomCode;
}
<input type="submit" value="提交" id="add" onclick="addmes('<%=Session["CheckCode"]%>')" />
<input id="hidecheck" type="hidden" runat="server" />
</div>js:function addmes(co) {
FindCode(co);
BeCheckCode();
}function FindCode(co) {
document.getElementById("hidecheck").value = co;
}function BeCheckCode() {
var checkinput = document.getElementById("check").value;
var checkoutput = document.getElementById("hidecheck").value;
if (checkinput == "") {
alert("请输入验证码!");
innerCheck();
}
else {
if (checkinput == checkoutput) {
window.location = "../shows/index.aspx";
}
else {
alert("验证码错误!");
document.getElementById("check").value = "";
innerCheck();
}
}
}验证码:
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetNoStore();
CreateCheckCodeImage(GenerateCheckCode());
} private string GenerateCheckCode()
{
//定义验证码长度
int CODELENGTH = 4;
int number;
string RandomCode = string.Empty;
Random r = new Random();
for (int i = 0; i < CODELENGTH; i++)
{
number = r.Next();
//字符从0~9, A~Z中随机产生,对应的ASCII码分别为48~57, 65~90 a-z 97~122
number = number % 36;
if (number < 10)
number += 48;
else
number += 87;
RandomCode += ((char)number).ToString();
}
//在Cookie中保存验证码
Session["CheckCode"] = RandomCode;
Response.Cookies.Add(new HttpCookie("CheckCode", RandomCode));
return RandomCode;
}
<input type="submit" value="提交" id="add" onclick="addmes('<%=Session["CheckCode"]%>')" />
那简单的分析字串就可以知道验证码是什么字符,还有,在客户端验证验证码是否正确,有意义吗?用程序来提交是不会执行这些 JS 验证的。所以,这种验证码没有任何意义。
验证码的验证必须在服务器上,你可以将验证码代表的字串放在隐藏域或 cookie 中,但一定要加密,然后在服务器端验证就可以,不用 Session,也就不会存在与 Session 不同步的问题。