Typecho根据访客记录自动显示隐藏账号cookies信息

typecho内置有这方面的功能,也就是<?php $this->remember(''); ?>

<?php $this->remember('author'); ?> = 账号信息

<?php $this->remember('mail'); ?> = 邮件信息

也就是typecho提交信息后会留下cookies值,<?php $this->remember(''); ?>就是用来获取cookies的账号信息

那么,也就可以这样

<?php if($this->user->hasLogin()): ?>
                    <div class="hasLogin">
                            <?php $email=$this->user->mail; $imgUrl = getGravatar($email);echo '<img src="'.$imgUrl.'" width="22px" height="22px" class="avatar hasLogin-author" >'; ?><?php $this->user->screenName(); ?>. <a href="<?php $this->options->logoutUrl(); ?>" title="Logout">退出 &raquo;</a>
                    </div>    
                        <?php else: ?>
               <?php if($this->remember('author',true) != "" && $this->remember('mail',true) != "") : ?>
               <div class="hasLogin comm_on" id="comm_on">
                        <?php $this->remember('author'); ?>. <a href="javascript:;" onclick="bian()" title="Logout" >编辑资料? &raquo;</a>
<script>function bian()
{ var oBox = document.getElementById("comm_off"); var oBox1 = document.getElementById("comm_on"); oBox.style.display= "block"; oBox1.style.display= "none";}</script>
               </div>    
               <ul class="ident" id="comm_off">
                    <li>
                        <input type="text" name="author" placeholder="昵称*" value="<?php $this->remember('author'); ?>">
                    </li>
                    <li>
                        <input type="mail" name="mail" placeholder="邮件*" value="<?php $this->remember('mail'); ?>">
                    </li>                   
                </ul>
               <?php else : ?>
                <ul class="ident">
                    <li>
                        <input type="text" name="author" placeholder="昵称*" value="<?php $this->remember('author'); ?>">
                    </li>
                    <li>
                        <input type="mail" name="mail" placeholder="邮件*" value="<?php $this->remember('mail'); ?>">
                    </li>                   
                </ul>
             <?php endif; ?><?php endif ; ?>  

以上的大概思路是

1,判断是否注册用户,如果是注册用户,直接显示账号信息

2,只是游客用户,判断用户是否有过cookies的信息,如果有,则不需要填入昵称和邮件,如果用户想改变昵称邮箱,可以直接点击编辑资料,进行修改

3,如果是新的游客,没有留言回复过,则显示正常的初步昵称和邮件地址

ok

文章由官网发布,如若转载,请注明出处:https://www.dpaoz.com/187
3.1k

发表评论

已有 7 条评论

  1. xzy     Win 10 /    Chrome 说道:
    2020-04-19 01:09

    还有一个问题,本站的评论框回复之后,没有继续回复的按钮,也就是不能再嵌套下去了,这个是不是也应该添加一下。
    还有还是那个splity的问题,hong.center这个站点的评论框就会出现这个问题,站长你可以去试一下

    1. 【站长】Vv     Win 7 /    Chrome 说道:
      2020-04-19 10:11

      @xzy

      我现在回复这个就是嵌套,我网站设置的是2层

  2. xzy     Win 10 /    Chrome 说道:
    2020-04-18 16:16

    站长我这里访问你网站发现,gravatar镜像站v2ex的连接速度很慢导致网站一直在加载,我刚开始以为你的服务器是在境外,刚刚用f12才看到,推荐更换到https://sdn.geekzu.org/avatar/

  3. xzy     Win 10 /    Chrome 说道:
    2020-04-18 16:01

    我更新了4月15日那版本之后,游客评论过后,评论框仍然显示的是昵称和邮件的输入框。登录用户也不作显示。

    另外,站长你的博客评论框作为游客评论过后虽然显示了“xxx,修改昵称”,但直接写完评论点击提交后跳到了错误页,上面提示“请输入邮箱”“请输入昵称”。站长你可以自己测试一下bug

    1. 【站长】Vv     Win 7 /    Chrome 说道:
      2020-04-18 16:42

      @xzy

      ok了,忘了把那个添加上去了,已经修复了:乖:

  4. xzy     Win 10 /    Chrome 说道:
    2020-04-18 11:37

    这个会在Splity的下个版本更新吗?现在的Splity不管是登录还是评论过的游客,都还要重新输入

    1. 【站长】Vv     Win 7 /    Chrome 说道:
      2020-04-18 12:55

      @xzy

      评论过的游客,是有记录的,不过登录的,没有做判断状态

嘿,我来帮您!