利用cookies记忆评论用户信息及产生验证码的一个例子

核心代码如下

<DIV id="comment_post" class="comment_frame">
<DIV class="comment_title">Post Comment:</DIV>
<form action="" method="POST" onsubmit="return validate();">
<input type="hidden" name="editsave" value="253001" />
<p><label for="id_name">Name (required):</label> <input id="id_name" type="text" name="name" maxlength="20" /></p>
<p><label for="id_email">E-mail (optional):</label> <input id="id_email" type="text" name="email" maxlength="30" /></p>
<p><label for="id_site">Website (optional):</label> <input id="id_site" type="text" name="site" maxlength="150" /> http://xxx.com</p>
<p><label for="id_content">Message (Required):</label> <textarea id="id_content" style="width:400px;height:60px;" rows="10" cols="40" name="content"></textarea> A maximum of 300 characters</p>
<p>Verification Code:<input  type="text" id="input1" name="vericode1" style="width: 50px" onclick="createCode()" /> 
<input type="text" name="vericode2" onclick="createCode()" readonly="readonly" id="checkCode" class="unchanged" style="width: 50px" /> 
<input type="submit" name="submit_btn" style="width: 90px" value="Submit" onClick="login();"/></p>
</form>
<script language="javascript" type="text/javascript"> 
var code ; 
function createCode(){
    code = "";
    var codeLength = 4;
    var checkCode = document.getElementById("checkCode");  
    var selectChar = new Array(0,1,2,3,4,5,6,7,8,9);
    for(var i=0;i<codeLength;i++){
        var charIndex = Math.floor(Math.random()*selectChar.length);
        code +=selectChar[charIndex];
    }
    //alert(code);  
    if(checkCode){  
        checkCode.className="code";  
        checkCode.value = code;  
    }
}  
function validate(){
    var inputCode = document.getElementById("input1").value;  
    if(inputCode.length <=0){  
        alert("Please Enter Verification Code");
        createCode();
        return false;
    }else if(inputCode != code ){
        alert("Please Enter Right Verification Code");
        createCode();
        return false;
    }else{
        //alert("^-^ OK");
        return true;  
    }  
}

//createCode();
//set cookie
function setcookie(name,value){
    var Days = 30;
    var exp  = new Date();
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

function getcookie(name){
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
    if(arr != null){
        return unescape(arr[2]);
    }else{
        return "";
    }
}

function login(){
   setcookie("author",document.getElementById('id_name').value);
   setcookie("email",document.getElementById('id_email').value);
   setcookie("url",document.getElementById('id_site').value);
}

function loadcookies(){
    document.getElementById("id_name").value = getcookie("author");
    document.getElementById("id_email").value = getcookie("email");
    document.getElementById("id_site").value = getcookie("url");
}

if (document.cookie != "") {
    loadcookies(); 
}

// set cookie end
//
function show_post_comment(){
    document.getElementById("comment_post").style.display = "block";
}
//
function replyto(somebd){
    show_post_comment();
    document.getElementById("id_content").value = "To("+somebd+"):";
}
</script>
</DIV>

可以复制保存为html文件试试。

注意:js代码和提交评论按钮的相对位置,要将js代码放在提交评论按钮后面,cookies读写功能才能生效。

完整实例包下载(14.1k)


http://www.uushare.com/user/hikefreeman/file/2772104

本文永久链接  http://www.houkai.com/2010/03/24/js-cookies-code.html
转载注明来自  HOUKAI.COM 分享家:Addthis中国

PayPal和贝宝的区别»

«QQ影音黄金搭档




最新文章

您可能会喜欢

本文共有16评论

  1. 好吧,待会儿试试

  2. 我看不懂函数~~

  3. 呵呵,我也有个写cookie的代码,一直没有加上~~这个不错

  4. 上次我也是这么帮人修改的

  5. 这个代码确实很好 记下了

  6. 恩,很实用。

  7. @云在天边
    惊讶 好恐怖呀!!最近没时间研究呀流汗

  8. 好长的代码,有时间慢慢看

  9. 提交留言后出现错误

    <h1>错误 500</h1>
    Sorry, the server encountered an error. We have logged this error and will look into it.<p><pre>Traceback (most recent call last):
    File "D:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 512, in __call__
    handler.post(*groups)
    File "D:\Program Files\Google\google_appengine\micolog\blog.py", line 333, in post
    comment_c=self.get_render('comment',{'comment':comment})
    File "C:\Program Files\Google\google_appengine\micolog\base.py", line 199, in get_render
    logging.debug('template:'+sfile)
    TypeError: cannot concatenate 'str' and 'NoneType' objects

    导致页面无法刷新,一直是“正在提交留言...”这怎么弄呢?
    我把GAE装在D盘,咋跟踪到C盘了呢?

  10. @云在天边
    这个代码你要改造,你只用cookies那段就行了 提交或者说上传留言的建议你用以前的。

  11. @houkai
    苍天……的确要升级了,呵呵,话说这个怎么像是被人检测呢在~~云在天边是不是用名小子了?嘿嘿

  12. @TaoGOGO
    不是我用。。。是有人在扫描我的网站,我在那个日志记录里看到的,有人这样测试,然后返回200,我就觉得有问题啊

  13. 说实话,做软件这么久,我一直对cookie不是很在行

 

现在评论本文

4+5