立即注册 登录
彼岸网 返回首页

天香公主的个人空间 http://www.bian-wang.com/discuz/?10005 [收藏] [复制] [分享] [RSS] txgz999@yahoo.com

日志

一站两制(续)

热度 2已有 540 次阅读2017-3-16 09:21 PM |个人分类:Discuz| 一站两制

在前文(链接)中我们讨论了如何从用户的IP中得知用户所在的国家,进而将某些模块挡在国门之外。捍卫人间的最后一片净土不受污染,不能仅靠党国的防火墙,海外华人网站管理者也人人有责。 本文延续那里的讨论,重点讨论下如何添加一个日志设置,让管理员决定是否将某篇日志向中国大陆用户开放。


1)首先要修改数据库,在储存日志的数表 home_blog 和储藏动态的数表 home_feed 里添加一个名叫 nomainlandchina 的表列: alter table home_blog add nomainlandchina tinyint(1) not null default 0 alter table home_feed add nomainlandchina tinyint(1) not null default 0 上面假定数表名无前缀,不然要加上前缀。
2)在语言包文件 source/language/home/lang_template.php 里加上下面的字符串: 'no_access_from_mainland_china' => '仅中国大陆以外用户可见', 3)在日志编辑状态下,对管理员显示"仅中国大陆以外用户可见"选项。修改模版文件 template/default/home/spacecp_blog.htm,将下面两句 <!--{if $blog['uid'] && $blog['uid']!=$_G['uid']}--> <!--{eval $selectgroupstyle='display:none';}--> 改成 <!--{if $blog['uid'] && $blog['uid']!=$_G['uid'] && $_G['adminid']!=1}--> <!--{eval $selectgroupstyle='display:none';}--> 并在下面这句 <label><input type="checkbox" name="noreply" value="1" class="pc"{if $blog[noreply]} checked="checked"{/if}> {lang comments_not_allowed}</label> 后添加 <!--{if $_G['adminid']==1}--> <label><input type="checkbox" name="nomainlandchina" value="1" class="pc" {if $blog[nomainlandchina]} checked="checked" {/if}> {lang no_access_from_mainland_china}</label> <!--{/if}--> 4)将管理员的选择存入数据库。将文件 source/function/function_blog.php 里的函数 blog_post 中的下面这句 $blogarr = array( 'subject' => $POST['subject'], 'classid' => $classid, 'friend' => $POST['friend'], 'password' => $POST['password'], 'noreply' => empty($POST['noreply'])?0:1, 'catid' => intval($POST['catid']), 'status' => $blog_status, ); 改成 $blogarr = array( 'subject' => $POST['subject'], 'classid' => $classid, 'friend' => $POST['friend'], 'password' => $POST['password'], 'noreply' => empty($POST['noreply'])?0:1, 'nomainlandchina' => empty($POST['nomainlandchina'])?0:1, 'catid' => intval($POST['catid']), 'status' => $blog_status, ); 再在文件 source/function/function_feed.php 里的函数 feed_publish 中的下面这句 $setarr['id'] = $value['blogid']; 后添加 $setarr['nomainlandchina'] = $value['nomainlandchina']; 5)如前文所述,添加代码来判断用户是否来自国内。在文件 source/class/discuz/discuz_application.php 里的函数 _init_user 定义的结尾部分加上: $clientip = getglobal('clientip'); require_once libfile('function/misc'); $location = convertip($clientip); $location = substr($location, 2); $provs = array('中国', '北京', '天津', '重庆', '上海', '河北', '山西', '辽宁', '吉林', '黑龙江', '江苏', '浙江', '安徽', '福建', '江西', '山东', '河南', '湖北', '湖南', '广东', '海南', '四川', '贵州', '云南', '陕西', '甘肃', '青海', '内蒙古', '广西', '西藏', '宁夏', '新疆'); foreach ($provs as $prov) { if (0 === strpos($location, $prov)) setglobal('inmainlandchina', true); } 6)日志列表:对国内用户不显示"仅中国大陆以外用户可见"的日志。修改文件 source/include/space/space_blog.php,将下面这句 if(ckfriend($value['uid'], $value['friend'], $value['target_ids']) && ($value['status'] == 0 || $value['uid'] == $_G['uid'] || $_G['adminid'] == 1)) { 改成 if(ckfriend($value['uid'], $value['friend'], $value['target_ids']) && ($value['status'] == 0 || $value['uid'] == $_G['uid'] || $_G['adminid'] == 1) && (!$_G['inmainlandchina'] || !$value['nomainlandchina'])) { 7)DIY日志模块:不显示"仅中国大陆以外用户可见"的日志的标题和摘要。修改文件 source/class/block/space/block_blog.php ,在下面这句 $wheresql = $wheres ? implode(' AND ', $wheres) : '1'; 前添加 $wheres[] = "(b.nomainlandchina is null or b.nomainlandchina='0')"; 8)在动态里对国内用户不显示"仅中国大陆以外用户可见"的日志的标题和摘要。修改文件 source/include/space/space_home.php,将下面这句 if($value['hot']>0 && ckfriend($value['uid'], $value['friend'], $value['target_ids'])) { 改成 if($value['hot']>0 && ckfriend($value['uid'], $value['friend'], $value['target_ids']) && (!$_G['inmainlandchina'] || !$value['nomainlandchina'])) { 再将下面这句(有两句同样的) if(!isset($hotlist[$value['feedid']]) && !isset($hotlist_all[$value['feedid']]) && ckfriend($value['uid'], $value['friend'], $value['target_ids'])) { 都改成 if(!isset($hotlist[$value['feedid']]) && !isset($hotlist_all[$value['feedid']]) && ckfriend($value['uid'], $value['friend'], $value['target_ids']) && (!$_G['inmainlandchina'] || !$value['nomainlandchina'])) { 9)在个人空间首页里的动态,日志和置顶日志模块里对国内用户不显示"仅中国大陆以外用户可见"的日志。修改文件 source/function/function_space.php 里的函数 getblockhtml 中有两处有这样的代码: foreach($data_blog as $curblogid => $value) { if(ckfriend($value['uid'], $value['friend'], $value['target_ids'])) { 都改成 foreach($data_blog as $curblogid => $value) { if(ckfriend($value['uid'], $value['friend'], $value['target_ids']) && (!$_G['inmainlandchina'] || !$value['nomainlandchina'])) { 还有一处有这样的代码: if(ckfriend($value['uid'], $value['friend'], $value['target_ids'])) { $html .= mkfeedhtml(mkfeed($value)); 要改成 if(ckfriend($value['uid'], $value['friend'], $value['target_ids']) && (!$_G['inmainlandchina'] || !$value['nomainlandchina']) ) { $html .= mkfeedhtml(mkfeed($value)); 10)一般来讲加了上面四点,国内用户就没有了接触该日志的途径。但还是要防止用户得知了该日志的地址后直接进入。修改文件 source/include/space/space_blog.php,将下面这句 if(!ckfriend($blog['uid'], $blog['friend'], $blog['target_ids'])) { 改成 if(!ckfriend($blog['uid'], $blog['friend'], $blog['target_ids']) || ($_G['inmainlandchina'] && $blog['nomainlandchina'])) {

发表评论 评论 (19 个评论)

回复 忆江南 2017-3-26 11:05 PM
天香公主: 也许和下文说的是同一个问题?
http://bbs.verydz.com/thread-1675-1-1.html
这么快就有解了 我都养成依赖性了 应该是的,改了,看试下来的效果。
回复 天香公主 2017-3-26 10:45 PM
忆江南: 我有一个问题:现在Discuz的缺省设置是,如果用户长久不登录,账户就会被冻结,需要管理员后台解冻。我想不出这样有什么好处,感觉只有给用户带来不便,给管理增 ...
也许和下文说的是同一个问题?
http://bbs.verydz.com/thread-1675-1-1.html
回复 忆江南 2017-3-26 10:33 PM
我有一个问题:现在Discuz的缺省设置是,如果用户长久不登录,账户就会被冻结,需要管理员后台解冻。我想不出这样有什么好处,感觉只有给用户带来不便,给管理增添麻烦。怎么改掉这个缺省设置?
回复 东风 2017-3-25 03:19 PM
天香公主: 啊啊啊,这个是我的错,请在public_html/geoip/getuserlocation.php line 41 将下面这句
$cd = distance($record->latitude, $record->longitude, $city[latitud ...
好哩~周末愉快~
回复 天香公主 2017-3-25 08:11 AM
东风: 是装了php5/6/7, 用的是php5.5; 我修改php.ini 使用fsocketopen, 现在通信可以了,但是验证码不管是英文还是别的,都是黑叉叉,无法使用;只好暂时换回答问题了 ...
啊啊啊,这个是我的错,请在public_html/geoip/getuserlocation.php line 41 将下面这句
$cd = distance($record->latitude, $record->longitude, $city[latitude], $city[longitude]);
改为
$cd = distance($record->latitude, $record->longitude, $city[latitude], $city[longitude], "M");
其余我晚上再想想
回复 东风 2017-3-25 05:28 AM
天香公主: 哦,是升级到VPS了,这两天我在你那没碰到过503错误信息了。

没想到你那不能改PHP版本。我用的namecheap的cpanel里有个'Select PHP Version',可以自己改动。

...
是装了php5/6/7, 用的是php5.5; 我修改php.ini 使用fsocketopen, 现在通信可以了,但是验证码不管是英文还是别的,都是黑叉叉,无法使用;只好暂时换回答问题了, 我顺便检查了php error: 每天有800MB 删除了一会就100多MB, 其中有一条:
Missing argument 5 for distance(), called in /public_html/geoip/getuserlocation.php on line 41 and defined in /public_html/geoip/distance.php on line 31; 我不知道怎么改。

还有就是最最恼人的503, 后台根本无法抓取文件以及用discuz备份数据库, 一运行,就是503-----fastcgi cannot find php header.

你老有空帮看看?站点后台都没变, host 方给的vps 我用email给您,叩谢先~
回复 天香公主 2017-3-24 11:02 PM
东风: 来给您汇报下, 怕一步到位,摸不清头绪,没有换,还是hostpapa, 就这样还是又好些尖锐问题:用户可以改头像,但是ucenter总是通信失败, 所以验证码也不工作。

...
哦,是升级到VPS了,这两天我在你那没碰到过503错误信息了。

没想到你那不能改PHP版本。我用的namecheap的cpanel里有个'Select PHP Version',可以自己改动。

我不久前讨论过ucenter通讯失败,可以在php.ini里检查下request_order和variables_order的值,或者在php代码里加句 echo init_get('request_order')之类的查一下。
回复 东风 2017-3-24 06:48 PM
天香公主:    忘记个人空间首页里的模块了,所以我刚加了9)。

是要换hosting公司吗?现在用的是hostpapa吧?
来给您汇报下, 怕一步到位,摸不清头绪,没有换,还是hostpapa, 就这样还是又好些尖锐问题:用户可以改头像,但是ucenter总是通信失败, 所以验证码也不工作。

还是经常出现503error; 用的是个Centos7, 我强烈要求他们把php降到5.5, 还是有很多不兼容, 期间都有无法登陆后台,改了许多key, uc-key, 密码, 最终用备份的二进制传上,才可以登陆进;

下一步,我要自己测试安装discuz3.3, centos7, php7, 不然将来还有麻烦。

推荐到门户的文章,不知为啥文章链接后面都自动添加了英文字母。

总之真难为了,这些天严重缺乏睡眠,Linux门外汉,害的慢慢啃

顺祝周末愉快
回复 东风 2017-3-24 06:40 PM
忆江南: 爱国水军来袭?愿你们网站早日恢复,等东风兄的技术贴总结报告。
惭愧,还有许多问题,没有搞清楚。赖赖巴巴地赶鸭子上架。
回复 天香公主 2017-3-18 06:50 PM
东风: 天香老师:已经按照步骤全部修改完毕(因为要网站搬迁,估计测试要到下周以后了)~~请再次收下弟子膝盖~~
   忘记个人空间首页里的模块了,所以我刚加了9)。

是要换hosting公司吗?现在用的是hostpapa吧?
回复 忆江南 2017-3-17 11:50 PM
东风: 我们网站前一周瘫痪,目前依旧许多error, web hosting techs 将日志展示给我们看, 敏感文章同时的连接数5000, 有的16000; 吓死我了;网站虚拟主机原本有防止d ...
爱国水军来袭?愿你们网站早日恢复,等东风兄的技术贴总结报告。
回复 东风 2017-3-17 01:10 PM
忆江南: 这样好,发表卖国言论的时候楚楚看不到,就会以为是爱国网站了。
我们网站前一周瘫痪,目前依旧许多error, web hosting techs 将日志展示给我们看, 敏感文章同时的连接数5000, 有的16000; 吓死我了;网站虚拟主机原本有防止ddos入侵等手段,但是在屏蔽面前,都是弱爆了
回复 东风 2017-3-17 01:07 PM
天香公主: 应该是 template/default/home/spacecp_blog.htm
天香老师:已经按照步骤全部修改完毕(因为要网站搬迁,估计测试要到下周以后了)~~请再次收下弟子膝盖~~
回复 天香公主 2017-3-17 12:03 PM
忆江南: 这样好,发表卖国言论的时候楚楚看不到,就会以为是爱国网站了。
  
回复 天香公主 2017-3-17 12:01 PM
东风: 3:在x3.2版本pacecp_blog.php,没有发现<!--{if $blog['uid'] && $blog['uid']!=$_G['uid']}-->
应该是 template/default/home/spacecp_blog.htm
回复 东风 2017-3-17 11:53 AM
3:在x3.2版本pacecp_blog.php,没有发现<!--{if $blog['uid'] && $blog['uid']!=$_G['uid']}-->
回复 东风 2017-3-17 11:39 AM
因为周末要搬迁网站,我现在抽空尝试着更新:
1:如果在后台而不是phpmyadmin, 需要加表头(pre_):alter pre_table home_blog add nomainlandchina tinyint(1) not null default 0
回复 东风 2017-3-17 12:53 AM
       太好了~~我周末就测试去!!
回复 忆江南 2017-3-16 11:36 PM
这样好,发表卖国言论的时候楚楚看不到,就会以为是爱国网站了。

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

小黑屋|Archiver|彼岸网  

Powered by Discuz! X3.1 © 2001-2014 Comsenz Inc.
GMT-4, 2017-9-20 05:57 PM , Processed in 0.064836 second(s), 21 queries.

返回顶部