七月
17

创建一个可设置cookie相关信息的内置Email联系表单

博客加了个联系页面,简单公布了一些自己的联系方式。突然想想给这个页面加个直接发送邮件给我的表单,于是上网搜了一下,在wordpress.la还真找到一个,稍微改造了一下,使之与自己的模板匹配,并且添加了设置cookie功能。

由于不想再为这个页面写太多css,于是便想何不将这个表单的输入项与wordpress的评论模板弄成一致的呢?反正需要输入的都是名字、邮箱两项。说干就干:

准备工作就是你先按照《教你如何给WordPress主题创建内置联系表单》这篇文章创建你的联系表单模板。

第一步,改造表单输入项

在<form>前面加上以下代码

<?php 
        $comment_author=stripslashes($_COOKIE['comment_author_'.COOKIEHASH]);
        $comment_author_email=stripslashes($_COOKIE['comment_author_email_'.COOKIEHASH]);
        $comment_author_url=stripslashes($_COOKIE['comment_author_url_'.COOKIEHASH]);
        $username = ($user_ID) ? get_the_author_meta('user_nicename', $user_ID) : $comment_author;
        $useremail = ($user_ID) ? get_the_author_meta('user_email', $user_ID) : $comment_author_email;
        $userurl = ($user_ID) ? get_the_author_meta('user_url', $user_ID) : $comment_author_url;
?>

这段代码是从cookie中获取电脑上保存的名字、邮箱、网址等值,

如果是登录用户,则取得登陆用户相关信息。

为了像wordpress评论那样之前评论过下次就可以自动填入相关值,我们还需要对表单的输入项做相关调整。将输入名字的input的value改为

value="<?php if(isset($_POST['author'])) echo $_POST['author'];else echo $username; ?>"

即在后面加上“else echo $username”。$username我们前面已经定义过了,这个是为了在没有输入情况下填入$username的值。

同样的,email输入框的value改为

value="<?php if(isset($_POST['email'])) echo $_POST['email'];else echo esc_attr($useremail); ?>"

 

至此,表单改造基本完成,如果你想有网址输入,依次修改即可。

第二步,添加设置cookie功能

说到php的cookie功能,我好早之前想用结果一直测试不成功,后来才知道原来setcookie函数必须在<html>标签前面才可以。好囧。。

说正事,在模板前面的代码中找到$emailSent = true;,紧接着在它后面添加

 

if (! is_user_logged_in() ) {
            setcookie('comment_author_' . COOKIEHASH, $name, time() + 30000000, COOKIEPATH, COOKIE_DOMAIN);
            setcookie('comment_author_email_' . COOKIEHASH, $email, time() + 30000000, COOKIEPATH, COOKIE_DOMAIN);
            //setcookie('comment_author_url_' . COOKIEHASH, esc_url($website), time() + 30000000, COOKIEPATH, COOKIE_DOMAIN);
}

 

即非登录用户状态下邮件发送后设置相关cookie.

这样,发送邮件的用户也可以留下cookie了,下次就不用再输入邮件姓名了。

具体的,大家可以到我联系页面查看。在我博客有过评论的同学将同样会看到评论人信息自动隐藏、自动填入相关信息。想要亲自查看登录状态下情况,可以在此注册一个账号,然后在我的博客登陆。登陆用户不会看到任何广告哈。

但是,大家千万不要随便向我乱发邮件哈!!

在一切讲究用户体验的今天,这个小功能还是很有必要的。

捕获2

有人会问:难道你还给自己发邮件吗?哈,我这样做一来方便那几个在我博客注册过的人直接和我联系,二来是保持和评论模板一致,三来我也可以随时查看博客主机的邮件功能正常不正常。。。

本文标签: , , , , ,

分享

本文短网址: http://qiqi.boy.im/14

这篇文章已经有 35 条评论

Comments (32) Trackbacks (3)
You can leave a response or Trackback this entry .
  1. 阿邙 -#1

    恩 样式一致了看起来规矩一些 :grin:

  2. 万戈 -#2

    我正想学习一下怎么获取 cookies 呢,完善访客提示词,嘿嘿

  3. 流年 -#3

    这个不错,直接发送邮件

  4. winy -#4

    我的联系方式没有cookie,回头加上

  5. winy -#5

    我试了一下,你有没有收到三个空白邮件?没有过滤吧,尤其是垃圾邮件,不太安全。前段验证和后台验证还是要加上的好。

    • QiQiBoY --#1

      @winy
      有验证邮箱的安全设置。。。前端和后台都有验证 。。。。你的邮件我没收到。。。

  6. winy -#6

    winy :我试了一下,你有没有收到三个空白邮件?没有过滤吧,尤其是垃圾邮件,不太安全。前段验证和后台验证还是要加上的好。

    呃,看错了,原来是有的。。

    • 阿邙 --#1

      @winy
      不知为何 我这里经常是你的cookie 有时候到万戈那 或者木木那 都显示我用你的登录着 :eek:

  7. 丕子 -#7

    cookie是个好东西

  8. Firm -#8

    原来是这样搞的,我也去折腾看看,对于老访客还是不错的

  9. 夏影残雪 -#9

    好玩,我去试试~biu~

  10. 七七 -#10

    很好,挺实用的!

  11. 小邪 -#11

    蛮好玩滴,嘻嘻 ~

  12. A.shun -#12

    现在用的表单虽然能记住cookies
    但只要两种状态
    你最近折腾的文章好多呢

  13. Bee君 -#13

    ( ̄y▽ ̄)╭ Ohohoho…..,这个功能主题内置,也有过很多介绍,不过你的方法不错!

  14. chentao5288 -#14

    代码专家!

  15. zwwooooo -#15

    这个挺好啊,有时间再试试。

  16. 海天 -#16

    呵呵 善用cookie是用户体验 必备良药啊

  17. 卢松松 -#17

    俺也直接试试你的成果

  18. 灰太狼 -#18

    。。我是超级大SB!

  19. 灰太狼 -#19

    俺也直接试试你的成果

  1. wordpress指定页面评论数+支持分页的楼层显示

    [...] 首先还是《创建一个可设置cookie相关信息的内置Email联系表单》一文中提到的那个contact.php模板,在有cookie信息时,评论者信息时默认折叠的,然而如果提交邮件信息时如果有错误,会返回错误信息,但是此时评论者信息还是折叠隐藏的(比如如果邮件填错了,此时也不会看到相关错误提示),所以折腾了一下,如果提交信息有错误,评论者信息就不会折叠了,这样就会方便看到哪里出错了。 [...]

  2. 【SimPaled篇】Introduce My Blog Theme For You

    [...] 联系页面模板、友情链接模板、留言板模板等。。——注:邮件联系表单参考《创建一个可设置cookie相关信息的内置Email联系表单》 [...]

  3. Hello WordPress!

    [...] 2010.07 我开始爆发了,我折腾了很多,首先是wordpress无限嵌套的完美解决WordPress嵌套回复的层深问题(无限嵌套)<一>,还有如何通过JS自动处理文中的图片宽高,这个方法我一直在用哦:我是如何处理文章中图片的。想知道我评论框的那么多功能从哪里来的么,你看完这些你也能拥有和我评论框一样强大的功能了:评论框的简单计数器(无需改动模板,附带输入字数限制功能),添加引用按钮——轻松打造属于你的WordPress引用回复功能、为评论框添加文字格式化编辑器、【多彩的评论】:让评论可以插入图片,更改文字大小、颜色、让你的评论框自由粘贴代码、修正关于Ajax comments的一个小问题。还有关于如何创建邮件表单页面的创建一个可设置cookie相关信息的内置Email联系表单;如果你也想要知道wordpress不同页面显示不同的评论数以及楼层的显示,那么这篇文章也许会给你帮助wordpress指定页面评论数+支持分页的楼层显示 [...]

Leave a Reply

Hi , say something.

  • :?:
  • :razz:
  • :sad:
  • :evil:
  • :!:
  • :smile:
  • :oops:
  • :grin:
  • :eek:
  • :shock:
  • :???:
  • :cool:
  • :lol:
  • :mad:
  • :twisted:
  • :roll:
  • :wink:
  • :idea:
  • :arrow:
  • :neutral:
  • :cry:
  • :mrgreen: