zoukankan      html  css  js  c++  java
  • ajax 留言板

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>留言本</title>
        <link rel="stylesheet" href="css.css" type="text/css" />
        <script src="ajax.js"></script>
        <script>
        window.onload = function ()
        {
            //初始化
            var ouser = document.getElementById('user');
            var ouserinfo = document.getElementById('userinfo');
            var oreg = document.getElementById('reg');
            var ologin = document.getElementById('login');
            
            updata();
            
            function updata()
            {
                var uid = getCookie('uid');
                var username = getCookie('username');
                
                
                if(uid)
                {
                    //登陆状态
                    ouser.style.display = 'block';
                    ouserinfo.innerHTML = username;
                    oreg.style.display = 'none';
                    ologin.style.display = 'none';
                    
                }
                
                else
                {
                    ouser.style.display = 'none';
                    ouserinfo.innerHTML = '';
                    oreg.style.display = 'block';
                    ologin.style.display = 'block';
                }
                
            };
            
            showlist();//列出其中几条
            
            //验证用户名开始
            var ousername1 = document.getElementById('username1');
            var overifyUserNameMsg = document.getElementById('verifyUserNameMsg');
            ousername1.onblur = function ()
            {
                ajax('get','guestbook/index.php','m=index&a=verifyUserName&username='+this.value,function (data)
                {
                    var d = JSON.parse(data);
                    overifyUserNameMsg.innerHTML = d.message;
                    if(d.code)
                    {
                        overifyUserNameMsg.style.color = 'red';
                    }
                    else
                    {
                        overifyUserNameMsg.style.color = 'green';
                    }
                });
            }
            //验证用户名结束
            
            //用户注册开始
            var opassword1 = document.getElementById('password1');
            var obtnReg = document.getElementById('btnReg');
            
            obtnReg.onclick = function ()
            {
                ajax('post','guestbook/index.php','m=index&a=reg&username='+encodeURI(ousername1.value)+'&password=' + opassword1.value,function (data)
                {
                    var d = JSON.parse(data);
                    alert(d.message);
                    
                });
            }
            //用户注册结束
            
            //用户登录开始
            var ousername2 = document.getElementById('username2');
            var opassword2 = document.getElementById('password2');
            var obtnLogin = document.getElementById('btnLogin');
            
            obtnLogin.onclick = function ()
            {
                ajax('post','guestbook/index.php','m=index&a=login&username='+encodeURI(ousername2.value)+'&password=' + opassword2.value,function (data)
                {
                    
                        var d = JSON.parse(data);
                        alert(d.message);
                        if(!d.code)
                        {
                            updata();
                        }
                    });
            }
            //用户登录结束
            
            //用户退出开始
            var ologout = document.getElementById('logout')
            ologout.onclick = function ()
            {
                ajax('get','guestbook/index.php','m=index&a=logout',function (data)
                {
                    var d = JSON.parse(data);
                    alert(d.message);
                    if(!d.code)
                    {
                        updata();
                    }
                });
                
                return false;
            }
            //用户退出结束
            
            //用户留言开始
            var ocontent = document.getElementById('content');
            var obtnPost = document.getElementById('btnPost');
            obtnPost.onclick = function ()
            {
                ajax('post','guestbook/index.php','m=index&a=send&content='+encodeURI(ocontent.value),function (data)
                {
                    var d = JSON.parse(data);
                    alert(d.message);
                    if(!d.code)
                    {
                        createList(d.data,true);
                    }
                })
            }
            //用户留言结束
            var olist = document.getElementById('list');
            
            function createList(data,insert)
            {
                var odl = document.createElement('dl');
                var odt = document.createElement('dt');
                var ostrong = document.createElement('strong');
                ostrong.innerHTML = data.username;
                odt.appendChild(ostrong);
                
                var odd1 = document.createElement('dd');
                odd1.innerHTML = data.content;
                
                var odd2 = document.createElement('dd');
                odd2.className = 't';
                var oa1 = document.createElement('a');
                oa1.href ='';
                oa1.innerHTML = '顶(<span>'+data.support+'</span>)';
                var oa2 = document.createElement('a');
                oa2.href = '';
                oa2.innerHTML = '踩(<span>'+data.oppose+'</span>)';
                
                odd2.appendChild(oa1);
                odd2.appendChild(oa2);
                
                odl.appendChild(odt);
                odl.appendChild(odd1);
                odl.appendChild(odd2);
                
                if(insert && olist.children[0])
                {
                    olist.insertBefore(odl,olist.children[0]);
                }
                else
                {
                    olist.appendChild(odl);
                }
            }
            
            //点击查看更多内容
            var oshowMore = document.getElementById('showMore');
            var ipage = 1;
            oshowMore.onclick = function ()
            {
                ipage++;
                showlist();
            }
            
            function showlist()
            {
                ajax('get','guestbook/index.php','m=index&a=getList&n=2&pages=' + ipage,function (data)
                {
                    var d = JSON.parse(data);
                    var data = d.data;
                    
                    if(data)
                    {
                        for(var i = 0; i < data.list.length; i++ )
                        {
                            createList(data.list[i]);
                        }
                    } 
                    else
                    {
                        if(ipage == 1)
                        {
                            olist.innerHTML = '现在还没有留言,快来请沙发...';
                        }
                        oshowMore.style.display = 'none';
                        
                    }
                })
            }
            
            //获取cookie
            
            function getCookie(key) 
            {
                var arr1 = document.cookie.split('; ');
                for (var i=0; i<arr1.length; i++) 
                {
                    var arr2 = arr1[i].split('=');
                    if (arr2[0]==key) 
                    {
                    return arr2[1];
                    }
                }
            }
        }
        </script>
    </head>
    
    <body>
        <div id="header"></div>
    
        <div id="container">
    
            <div id="list">
            <!--<dl>
                    <dt>
                        <strong>zmouse</strong> 说 :
                    </dt>
                    <dd>内容</dd>
                    <dd class="t">
                        <a href="javascript:;" id="support">顶(<span>0</span>)</a>
                         | 
                        <a href="javascript:;" id="oppose">踩(<span>0</span>)</a>
                    </dd>
                </dl>-->
            </div>
            <div id="showMore">显示更多...</div>
    
            <div id="sidebar">
            
                <div id="user" style="margin-bottom: 10px;">
                    <h4><span id="userinfo"></span> <a href="" id="logout">退出</a></h4>
                </div>
            
                <!-- 注册 -->
                <div id="reg">
                    <h4>注册</h4>
                    <div>
                        <p>用户名:<input type="text" name="username" id="username1"></p>
                        <p id="verifyUserNameMsg"></p>
                        <p>密码:<input type="password" name="password" id="password1"></p>
                        <p><input type="button" value="注册" id="btnReg" /></p>
                    </div>
                </div>
    
                <!-- 登陆 -->
                <div id="login">
                    <h4>登陆</h4>
                    <div>
                        <p>用户名:<input type="text" name="username2" id="username2"></p>
                        <p>密码:<input type="password" name="password2" id="password2"></p>
                        <p><input type="button" value="登陆" id="btnLogin" /></p>
                    </div>
                </div>
                
                <!-- 留言发表 -->
                <div id="sendBox">
                    <h4>发表留言</h4>
                    <div>
                        <textarea id="content"></textarea>
                        <input type="button" value="提交" class="btn1" id="btnPost" />
                    </div>
                </div>
            </div>
    
        </div>
        
    </body>
    </html>
    <?php
    /**
     * @ controller Index.class.php
     * @ zmouse@vip.qq.com
     */
    
    defined('IN_APP') or exit('Denied Access!');
    
    class IndexController extends Controller {
    
        public function index() {
            echo '<p>欢迎</p>';
            //$result = $this->db->get("select * from users", 1);
            //dump($result);
        }
    
        /**
         * @ interface 用户名验证
         */
        public function verifyUserName() {
            
            $username = trim(isset($_REQUEST['username']) ? $_REQUEST['username'] : '');
            
            switch ($this->_verifyUserName($username)) {
                case 0:
                    $this->sendByAjax(array('message'=>'恭喜你,该用户名可以注册!'));
                    break;
                case 1:
                    $this->sendByAjax(array('code'=>1,'message'=>'用户名长度不能小于3个或大于16个字符!'));
                    break;
                case 2:
                    $this->sendByAjax(array('code'=>2,'message'=>'对不起,该用户名已经被注册了!'));
                    break;
                default:
                    break;
            }
            
        }
    
        /**
         * @ interface 用户注册
         */
        public function reg() {
            $username = trim(isset($_REQUEST['username']) ? $_REQUEST['username'] : '');
            $password = trim(isset($_REQUEST['password']) ? $_REQUEST['password'] : '');
            $avatar = trim(isset($_REQUEST['avatar']) && in_array($_REQUEST['avatar'], array(1,2,3,4,5,6,7,8,9)) ? intval($_REQUEST['avatar']) : 1);
    
            if ($this->_verifyUserName($username) !== 0 || strlen($password)<3 || strlen($password) > 20) {
                $this->sendByAjax(array('code'=>1,'message'=>'注册失败!'));
            }
            $password = md5($password);
            if (false === $this->db->query("INSERT INTO `users` (`username`, `password`, `avatar`) VALUES ('{$username}', '{$password}', {$avatar})")) {
                $this->sendByAjax(array('code'=>1,'message'=>'注册失败!'));
            } else {
                $this->sendByAjax(array('message'=>'注册成功!'));
            }
        }
    
    
        /**
         * @ 用户登陆
         */
        public function login() {
            $username = trim(isset($_REQUEST['username']) ? $_REQUEST['username'] : '');
            $password = trim(isset($_REQUEST['password']) ? $_REQUEST['password'] : '');
    
            if (isset($_COOKIE['uid'])) {
                $this->sendByAjax(array('code'=>1,'message'=>'你已经登陆过了!'));
            }
    
            if ($rs = $this->db->get("SELECT * FROM `users` WHERE `username`='{$username}'")) {
                if ($rs['password'] != md5($password)) {
                    $this->sendByAjax(array('code'=>1,'message'=>'登陆失败!'));
                } else {
                    setcookie('uid', $rs['uid'], time() + 3600*60, '/');
                    setcookie('username', $rs['username'], time() + 3600*60, '/');
                    $this->sendByAjax(array('code'=>0,'message'=>'登陆成功!'));
                }
            } else {
                $this->sendByAjax(array('code'=>1,'message'=>'登陆失败!'));
            }
        }
    
        /**
         * @ 用户退出
         */
        public function logout() {
            if (!isset($_COOKIE['uid'])) {
                $this->sendByAjax(array('code'=>1,'message'=>'你还没有登陆!'));
            } else {
                setcookie('uid', 0, time() - 3600*60, '/');
                $this->sendByAjax(array('code'=>0,'message'=>'退出成功!'));
            }
        }
    
        /**
         * 用户留言保存
         */
        public function send() {
            if (!isset($_COOKIE['uid'])) {
                $this->sendByAjax(array('code'=>1,'message'=>'你还没有登陆!'));
            } else {
                $content = trim(isset($_POST['content']) ? $_POST['content'] : '');
                if (empty($content)) {
                    $this->sendByAjax(array('code'=>1,'message'=>'留言内容不能为空!'));
                }
                $dateline = time();
                $this->db->query("INSERT INTO `contents` (`uid`, `content`, `dateline`) VALUES ({$_COOKIE['uid']}, '{$content}', {$dateline})");
                $returnData = array(
                    'cid'        =>    $this->db->getInsertId(),
                    'uid'        =>    $_COOKIE['uid'],
                    'username'    =>    $_COOKIE['username'],
                    'content'    =>    $content,
                    'dateline'    =>    $dateline,
                    'support'    =>    0,
                    'oppose'    =>    0,
                );
                $this->sendByAjax(array('code'=>0,'message'=>'留言成功!','data'=>$returnData));
            }
        }
    
        /**
         * @ 顶
         */
        public function doSupport() {
            if (!isset($_COOKIE['uid'])) {
                $this->sendByAjax(array('code'=>1,'message'=>'你还没有登陆!'));
            } else {
                $cid = isset($_REQUEST['cid']) ? intval($_REQUEST['cid']) : 0;
                if (!$cid) $this->sendByAjax(array('code'=>1,'message'=>'无效留言cid!'));
                $content = $this->db->get("SELECT cid FROM `contents` WHERE `cid`={$cid}");
                if (!$content) $this->sendByAjax(array('code'=>1,'message'=>'不存在的留言cid!'));
                $this->db->query("UPDATE `contents` SET `support`=support+1 WHERE `cid`={$cid}");
                $this->sendByAjax(array('code'=>0,'message'=>'顶成功!'));
            }
        }
    
        /**
         * @ 踩
         */
        public function doOppose() {
            if (!isset($_COOKIE['uid'])) {
                $this->sendByAjax(array('code'=>1,'message'=>'你还没有登陆!'));
            } else {
                $cid = isset($_REQUEST['cid']) ? intval($_REQUEST['cid']) : 0;
                if (!$cid) $this->sendByAjax(array('code'=>1,'message'=>'无效留言cid!'));
                $content = $this->db->get("SELECT cid FROM `contents` WHERE `cid`={$cid}");
                if (!$content) $this->sendByAjax(array('code'=>1,'message'=>'不存在的留言cid!'));
                $this->db->query("UPDATE `contents` SET `oppose`=oppose+1 WHERE `cid`={$cid}");
                $this->sendByAjax(array('code'=>0,'message'=>'踩成功!'));
            }
        }
    
        /**
         * @ 获取留言列表
         */
        public function getList() {
            $page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 1;    //当前页数
            $n = isset($_REQUEST['n']) ? intval($_REQUEST['n']) : 10;    //每页显示条数
            //获取总记录数
            $result_count = $this->db->get("SELECT count('cid') as count FROM `contents`");
            $count = $result_count['count'] ? (int) $result_count['count'] : 0;
            if (!$count) {
                $this->sendByAjax(array('code'=>1,'message'=>'还没有任何留言!'));
            }
            $pages = ceil($count / $n);
            if ($page > $pages) {
                $this->sendByAjax(array('code'=>2,'message'=>'没有数据了!'));
            }
            $start = ( $page - 1 ) * $n;
            $result = $this->db->select("SELECT c.cid,c.uid,u.username,c.content,c.dateline,c.support,c.oppose FROM `contents` as c, `users` as u WHERE u.uid=c.uid ORDER BY c.cid DESC LIMIT {$start},{$n}");
            $data = array(
                'count'    =>    $count,
                'pages'    =>    $pages,
                'page'    =>    $page,
                'n'        =>    $n,
                'list'    =>    $result
            );
            $this->sendByAjax(array('code'=>0,'message'=>'','data'=>$data));
        }
    
        /**
         * @ 用户名验证
         */
        private function _verifyUserName($username='') {
            if (strlen($username) < 3 || strlen($username) > 16) {
                return 1;
            }
            $rs = $this->db->get("SELECT `username` FROM `users` WHERE `username`='{$username}'");
            if ($rs) return 2;
            return 0;
        }
    }
  • 相关阅读:
    php对接微信小程序支付
    微信小程序/网站 上传图片到腾讯云COS
    php+smarty轻松开发微社区/微论坛
    精简商务合同管理系统开发
    MyBatis返回map数据
    MyBatis(五)select返回list数据
    MyBatis(四)多参数处理问题
    MyBatis(三)MyBatis的增删改查
    dbconfig.properties
    MyBatis入门(二)接口式编程
  • 原文地址:https://www.cnblogs.com/mayufo/p/4297827.html
Copyright © 2011-2022 走看看