PHP实现多说评论实时同步回网站数据库

PHP中文网
发布: 2016-06-20 13:01:03
原创
1441人浏览过

PHP实现多说评论实时同步回网站数据库

社会化评论-多说评论实时同步回数据库,依赖http库,随便找一个就行

where($where)->getField('value');
            Vendor('CurlHTTP.Http');
            
            $limit = 20;

            $params = array(
                'limit' => $limit,
                'order' => 'asc',
            );


            $posts = array();

            if (!$last_log_id)
                $last_log_id = 0;

            $params['since_id'] = $last_log_id;
            $params['short_name'] = C(DUOSHUO_SHORT_NAME);
            $params['secret'] = C(DUOSHUO_SECRET);
            $http_client = new \Http();
            $response = $http_client->request('http://api.duoshuo.com/log/list.json', $params ,'GET');

            $response = json_decode($response,true);

            if (!isset($response['response'])) {
                //处理错误,错误消息$response['message'], $response['code']
                file_log("签名错误");
            } else {
                //遍历返回的response,你可以根据action决定对这条评论的处理方式。
                foreach($response['response'] as $k => $log){
                    switch($log['action']){
                        case 'create':
                            foreach ($log['meta'] as $key => $value) {
                                $create[$key]['post_id'] = $log['meta']['post_id'];
                                $create[$key]['thread_id'] = $log['meta']['thread_id'];
                                $create[$key]['author_id'] = $log['meta']['author_id'];
                                $create[$key]['author_name'] = $log['meta']['author_name'];
                                $create[$key]['author_email'] = $log['meta']['author_email'];
                                $create[$key]['author_url'] = $log['meta']['author_url'];
                                $create[$key]['author_key'] = $log['meta']['author_key'];
                                $create[$key]['ip'] = $log['meta']['ip'];
                                $create[$key]['created_at'] = $log['meta']['created_at'];
                                $create[$key]['message'] = $log['meta']['message'];
                                $create[$key]['status'] = $log['meta']['status'];
                                $create[$key]['type'] = $log['meta']['type'];
                                if($log['meta']['parent_id'] != ""){
                                    $create[$key]['parent_id'] = $log['meta']['parent_id'];
                                }
                                $create[$key]['thread_key'] = $log['meta']['thread_key'];
                                $create[$key]['user_id'] = $log['user_id'];
                                $create[$key]['date'] = $log['date'];
                            }
                            break;
                        case 'approve':
                            //这条评论是通过的评论
                            foreach ($log['meta'] as $key => $value) {
                                $approve[$key]['post_id'] .= $value.",";
                            }
                            break;
                        case 'spam':
                            //这条评论是标记垃圾的评论
                            foreach ($log['meta'] as $key => $value) {
                                $spam[$key]['post_id'] .= $value.",";
                            }
                            break;
                        case 'delete':
                            //这条评论是删除的评论
                            foreach ($log['meta'] as $key => $value) {
                                $delete[$key]['post_id'] .= $value.",";
                            }
                            break;
                        case 'delete-forever':
                            //彻底删除的评论
                            foreach ($log['meta'] as $key => $value) {
                                $delete_forever[$key]['post_id'] .= $value.",";
                            }
                            break;
                        default:
                            break;
                    }
                    // 更新处理数据
                    switch($log['action']){
                        case 'create':
                            foreach ($create as $key => $value) {
                                if($value != ""){
                                    $Comment->add($value);
                                }
                            break;
                            }
                        case 'approve':
                            //这条评论是通过的评论
                            foreach ($approve as $key => $value) {
                                if($value != ""){
                                    $Comment->where(array('post_id'=>
                                    array('in',''. 
                                    substr($value['post_id'], 0,-1) .'')))
                                    ->setField('status','approved');
                                }
                            }
                            break;
                        case 'spam':
                            //这条评论是标记垃圾的评论
                            foreach ($spam as $key => $value) {
                                if($value != ""){
                                    $Comment->where(array('post_id'=>
                                    array('in',''. 
                                    substr($value['post_id'], 0,-1) .'')))
                                    ->setField('status','spam');
                                }
                            }
                            break;
                        case 'delete':
                            //这条评论是删除的评论
                            foreach ($delete as $key => $value) {
                                if($value != ""){
                                    $Comment->where(array('post_id'=>
                                    array('in',''. 
                                    substr($value['post_id'], 0,-1) .'')))
                                    ->setField('status','delete');
                                }
                            }
                            break;
                        case 'delete-forever':
                            //彻底删除的评论
                            foreach ($delete_forever as $key => $value) {
                                if($value != ""){
                                    $Comment->where(array('post_id'=>
                                    array('in',''. 
                                    substr($value['post_id'], 0,-1) .'')))
                                    ->delete();
                                }
                            }
                            break;
                        default:
                            break;
                    }
                    //更新last_log_id,记得维护last_log_id。(如update你的数据库)
                    if (strlen($log['log_id']) > strlen($last_log_id) || strcmp($log['log_id'], $last_log_id) > 0) {
                        M('setting')->where(array('name'=>"last_log_id"))->setField('value',$log['log_id']);
                    }
                }
            }

        }

    }
}/**
 *
 * 多说检查签名
 *
 */
function check_signature($input){

    $signature = $input['signature'];
    unset($input['signature']);

    ksort($input);
    $baseString = http_build_query($input, null, '&');
    $expectSignature = base64_encode(hmacsha1($baseString, C(DUOSHUO_SECRET)));
    if ($signature !== $expectSignature) {
        return false;
    }
    return true;
}


// from: http://www.php.net/manual/en/function.sha1.php#39492
// Calculate HMAC-SHA1 according to RFC2104
// http://www.ietf.org/rfc/rfc2104.txt
// 多说
function hmacsha1($data, $key) {
    if (function_exists('hash_hmac'))
        return hash_hmac('sha1', $data, $key, true);

    $blocksize=64;
    if (strlen($key)>$blocksize)
        $key=pack('H*', sha1($key));
    $key=str_pad($key,$blocksize,chr(0x00));
    $ipad=str_repeat(chr(0x36),$blocksize);
    $opad=str_repeat(chr(0x5c),$blocksize);
    $hmac = pack(
            'H*',sha1(
                    ($key^$opad).pack(
                            'H*',sha1(
                                    ($key^$ipad).$data
                            )
                    )
            )
    );
    return $hmac;
}
登录后复制


配置
 

//多说
'DUOSHUO_SECRET'=>'78bd15a3d4fb3000657741a1319bbbbe',
'DUOSHUO_SHORT_NAME'=>'muxu',
登录后复制

 

Modoer多功能点评系统2.5 精华版 Build 20110710 GBK
Modoer多功能点评系统2.5 精华版 Build 20110710 GBK

Modoer 是一款以本地分享,多功能的点评网站管理系统。采用 PHP+MYSQL 开发设计,开放全部源代码。因具有非凡的访问速度和卓越的负载能力而深受国内外朋友的喜爱,不局限于商铺类点评,真正实现了多类型的点评,可以让您的网站点评任何事与物,同时增加产品模块,也更好的网站产品在网站上展示。Modoer点评系统 2.5 Build 20110710更新列表1.同步 旗舰版系统框架2.增加 限制图片

Modoer多功能点评系统2.5 精华版 Build 20110710 GBK 0
查看详情 Modoer多功能点评系统2.5 精华版 Build 20110710 GBK

以上就是PHP实现多说评论实时同步回网站数据库的内容,更多相关内容请关注PHP中文网(www.php.cn)!


相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号