首页 > php教程 > php手册 > 正文

多说评论实时同步回数据库

php中文网
发布: 2016-06-07 11:34:59
原创
1680人浏览过

多说评论实时同步回数据库,依赖Http库,随便找一个就行

<?php <br /> /**<br>  * 多说 实时同步评论回本地数据库 API<br>  */<br> namespace Home\Controller;<br> use Think\Controller;<br> class DuoshuoController extends Controller {<br>     public function duoshuo(){<br><br>         if (check_signature($_POST)) {<br><br>             $Comment = M('comment');<br>             $where['name'] = array('in','last_log_id');<br>             $last_log_id = M('setting')-&gt;where($where)-&gt;getField('value');<br>             Vendor('CurlHTTP.Http');<br>             <br>             $limit = 20;<br><br>             $params = array(<br>                 'limit' =&gt; $limit,<br>                 'order' =&gt; 'asc',<br>             );<br><br><br>             $posts = array();<br><br>             if (!$last_log_id)<br>                 $last_log_id = 0;<br><br>             $params['since_id'] = $last_log_id;<br>             $params['short_name'] = C(DUOSHUO_SHORT_NAME);<br>             $params['secret'] = C(DUOSHUO_SECRET);<br>             $http_client = new \Http();<br>             $response = $http_client-&gt;request('http://api.duoshuo.com/log/list.json', $params ,'GET');<br><br>             $response = json_decode($response,true);<br><br>             if (!isset($response['response'])) {<br>                 //处理错误,错误消息$response['message'], $response['code']<br>                 file_log("签名错误");<br>             } else {<br>                 //遍历返回的response,你可以根据action决定对这条评论的处理方式。<br>                 foreach($response['response'] as $k =&gt; $log){<br>                     switch($log['action']){<br>                         case 'create':<br>                             foreach ($log['meta'] as $key =&gt; $value) {<br>                                 $create[$key]['post_id'] = $log['meta']['post_id'];<br>                                 $create[$key]['thread_id'] = $log['meta']['thread_id'];<br>                                 $create[$key]['author_id'] = $log['meta']['author_id'];<br>                                 $create[$key]['author_name'] = $log['meta']['author_name'];<br>                                 $create[$key]['author_email'] = $log['meta']['author_email'];<br>                                 $create[$key]['author_url'] = $log['meta']['author_url'];<br>                                 $create[$key]['author_key'] = $log['meta']['author_key'];<br>                                 $create[$key]['ip'] = $log['meta']['ip'];<br>                                 $create[$key]['created_at'] = $log['meta']['created_at'];<br>                                 $create[$key]['message'] = $log['meta']['message'];<br>                                 $create[$key]['status'] = $log['meta']['status'];<br>                                 $create[$key]['type'] = $log['meta']['type'];<br>                                 if($log['meta']['parent_id'] != ""){<br>                                     $create[$key]['parent_id'] = $log['meta']['parent_id'];<br>                                 }<br>                                 $create[$key]['thread_key'] = $log['meta']['thread_key'];<br>                                 $create[$key]['user_id'] = $log['user_id'];<br>                                 $create[$key]['date'] = $log['date'];<br>                             }<br>                             break;<br>                         case 'approve':<br>                             //这条评论是通过的评论<br>                             foreach ($log['meta'] as $key =&gt; $value) {<br>                                 $approve[$key]['post_id'] .= $value.",";<br>                             }<br>                             break;<br>                         case 'spam':<br>                             //这条评论是标记垃圾的评论<br>                             foreach ($log['meta'] as $key =&gt; $value) {<br>                                 $spam[$key]['post_id'] .= $value.",";<br>                             }<br>                             break;<br>                         case 'delete':<br>                             //这条评论是删除的评论<br>                             foreach ($log['meta'] as $key =&gt; $value) {<br>                                 $delete[$key]['post_id'] .= $value.",";<br>                             }<br>                             break;<br>                         case 'delete-forever':<br>                             //彻底删除的评论<br>                             foreach ($log['meta'] as $key =&gt; $value) {<br>                                 $delete_forever[$key]['post_id'] .= $value.",";<br>                             }<br>                             break;<br>                         default:<br>                             break;<br>                     }<br>                     // 更新处理数据<br>                     switch($log['action']){<br>                         case 'create':<br>                             foreach ($create as $key =&gt; $value) {<br>                                 if($value != ""){<br>                                     $Comment-&gt;add($value);<br>                                 }<br>                             break;<br>                             }<br>                         case 'approve':<br>                             //这条评论是通过的评论<br>                             foreach ($approve as $key =&gt; $value) {<br>                                 if($value != ""){<br>                                     $Comment-&gt;where(array('post_id'=&gt;array('in',''. substr($value['post_id'], 0,-1) .'')))-&gt;setField('status','approved');<br>                                 }<br>                             }<br>                             break;<br>                         case 'spam':<br>                             //这条评论是标记垃圾的评论<br>                             foreach ($spam as $key =&gt; $value) {<br>                                 if($value != ""){<br>                                     $Comment-&gt;where(array('post_id'=&gt;array('in',''. substr($value['post_id'], 0,-1) .'')))-&gt;setField('status','spam');<br>                                 }<br>                             }<br>                             break;<br>                         case 'delete':<br>                             //这条评论是删除的评论<br>                             foreach ($delete as $key =&gt; $value) {<br>                                 if($value != ""){<br>                                     $Comment-&gt;where(array('post_id'=&gt;array('in',''. substr($value['post_id'], 0,-1) .'')))-&gt;setField('status','delete');<br>                                 }<br>                             }<br>                             break;<br>                         case 'delete-forever':<br>                             //彻底删除的评论<br>                             foreach ($delete_forever as $key =&gt; $value) {<br>                                 if($value != ""){<br>                                     $Comment-&gt;where(array('post_id'=&gt;array('in',''. substr($value['post_id'], 0,-1) .'')))-&gt;delete();<br>                                 }<br>                             }<br>                             break;<br>                         default:<br>                             break;<br>                     }<br>                     //更新last_log_id,记得维护last_log_id。(如update你的数据库)<br>                     if (strlen($log['log_id']) &gt; strlen($last_log_id) || strcmp($log['log_id'], $last_log_id) &gt; 0) {<br>                         M('setting')-&gt;where(array('name'=&gt;"last_log_id"))-&gt;setField('value',$log['log_id']);<br>                     }<br>                 }<br>             }<br><br>         }<br><br>     }<br> }/**<br>  *<br>  * 多说检查签名<br>  *<br>  */<br> function check_signature($input){<br><br>     $signature = $input['signature'];<br>     unset($input['signature']);<br><br>     ksort($input);<br>     $baseString = http_build_query($input, null, '&amp;');<br>     $expectSignature = base64_encode(hmacsha1($baseString, C(DUOSHUO_SECRET)));<br>     if ($signature !== $expectSignature) {<br>         return false;<br>     }<br>     return true;<br> }<br><br><br> // from: http://www.php.net/manual/en/function.sha1.php#39492<br> // Calculate HMAC-SHA1 according to RFC2104<br> // http://www.ietf.org/rfc/rfc2104.txt<br> // 多说<br> function hmacsha1($data, $key) {<br>     if (function_exists('hash_hmac'))<br>         return hash_hmac('sha1', $data, $key, true);<br><br>     $blocksize=64;<br>     if (strlen($key)&gt;$blocksize)<br>         $key=pack('H*', sha1($key));<br>     $key=str_pad($key,$blocksize,chr(0x00));<br>     $ipad=str_repeat(chr(0x36),$blocksize);<br>     $opad=str_repeat(chr(0x5c),$blocksize);<br>     $hmac = pack(<br>             'H*',sha1(<br>                     ($key^$opad).pack(<br>                             'H*',sha1(<br>                                     ($key^$ipad).$data<br>                             )<br>                     )<br>             )<br>     );<br>     return $hmac;<br> }配置

//多说
'DUOSHUO_SECRET'=>'78bd15a3d4fb3000657741a1319bbbbe',
'DUOSHUO_SHORT_NAME'=>'muxu',

参考 http://dev.duoshuo.com/threads/50037b11b66af78d0c000009


网站/微信/App/技术交流:QQ群 74976648

AD:真正免费,域名+虚机+企业邮箱=0元

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

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

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