FreeOZ论坛

标题: https有问题 [打印本页]

作者: cais    时间: 29-6-2013 00:30
标题: https有问题
在地址栏直接打freeoz.org,就转到https://www.freeoz.org 发表文章/回复会报错,但是还是发出去了。
点评分就一直是“请稍候”。
换成http:// 就没有问题。
作者: ubuntuhk    时间: 3-7-2013 19:23

嗯,我知道这个问题存在,有可能是某个JS脚本出问题了,不过我找不到原因及如何修复,需要大家帮忙。
作者: ubuntuhk    时间: 3-7-2013 19:23
@老鼠爱上猫 有空的时候看看。
作者: 指纹    时间: 3-7-2013 22:38
为啥要用https 呢?
作者: newozer    时间: 3-7-2013 22:40
ubuntuhk 发表于 3-7-2013 19:23
呼 @老鼠爱上猫 有空的时候看看。

老猫不是去巴厘岛happy了么?。。。好久不见了。。。
作者: newozer    时间: 3-7-2013 22:41
指纹 发表于 3-7-2013 22:38
为啥要用https 呢?

问的好。。。除非不得已。。。但至少现在嘛。。。嘿嘿。。。
作者: 指纹    时间: 3-7-2013 22:43
newozer 发表于 3-7-2013 22:41
问的好。。。除非不得已。。。但至少现在嘛。。。嘿嘿。。。

不懂你在说啥
作者: newozer    时间: 3-7-2013 22:49
指纹 发表于 3-7-2013 22:43
不懂你在说啥

http://www.hioz.me/ibbs/
俺直接用滴这。。。存在收藏里面,直接点击就OK了。。。
作者: 指纹    时间: 3-7-2013 22:51
newozer 发表于 3-7-2013 22:49
http://www.hioz.me/ibbs/
俺直接用滴这。。。存在收藏里面,直接点击就OK了。。。

是用收藏夹啊,我是问HTTPS有必要么?难道是防过滤?
作者: newozer    时间: 3-7-2013 22:55
指纹 发表于 3-7-2013 22:51
是用收藏夹啊,我是问HTTPS有必要么?难道是防过滤?

目前是没有必要啊。。。不过曾经经历过被过滤。。那时只能用https了......
作者: cais    时间: 3-7-2013 23:11
指纹 发表于 3-7-2013 22:38
为啥要用https 呢?

不是我要用啊。是如果打了网址的话,它就自动转到https去了。可能是我的FF的设置有问题吧。

作者: 指纹    时间: 3-7-2013 23:16
cais 发表于 3-7-2013 23:11
不是我要用啊。是如果打了网址的话,它就自动转到https去了。可能是我的FF的设置有问题吧。

有可能吧,没研究过
作者: 指纹    时间: 3-7-2013 23:19
cais 发表于 3-7-2013 23:11
不是我要用啊。是如果打了网址的话,它就自动转到https去了。可能是我的FF的设置有问题吧。

This post might help you on that problem:

https://support.mozilla.org/en-US/questions/957292
作者: cais    时间: 3-7-2013 23:33
ubuntuhk 发表于 3-7-2013 19:23
呼 @老鼠爱上猫 有空的时候看看。

初步判断是这一段的第一句出了问题,因为传进来的是个relative url,会自动加上SITEURL。
  1. function hostconvert(url) {
  2.         if(!url.match(/^https?:\/\//)) url = SITEURL + url;
  3.         var url_host = getHost(url);
  4.         var cur_host = getHost().toLowerCase();
  5.         if(url_host && cur_host != url_host) {
  6.                 url = url.replace(url_host, cur_host);
  7.         }
  8.         return url;
  9. }
复制代码
SITEURL是从php传回来的。定死在http了。
  1. SITEURL = 'http://www.freeoz.org/ibbs/'
复制代码

作者: cais    时间: 3-7-2013 23:38
指纹 发表于 3-7-2013 23:19
This post might help you on that problem:

https://support.mozilla.org/en-US/questions/957292

thanks!

but autofill is too useful to disable.

and I don't want to forget about freeoz.
作者: cais    时间: 4-7-2013 00:11
cais 发表于 3-7-2013 23:33
初步判断是这一段的第一句出了问题,因为传进来的是个relative url,会自动加上SITEURL。SITEURL是从php传 ...

下了X2.5的源代码看了一下,可能可以试试改一下这一行:
“source/class/discuz/discuz_application.php" line 178
被他们hardcode成http了。

  1.                 $_G['siteurl'] = dhtmlspecialchars('http://'.$_SERVER['HTTP_HOST'].$sitepath.'/');
复制代码
大概改成

  1.                 $_G['siteurl'] = dhtmlspecialchars(($_SERVER['HTTPS']!='on'?'http':'https').'://'.$_SERVER['HTTP_HOST'].$sitepath.'/');
复制代码
我对php不熟悉。也不清楚对不对。

这个discuzz不支持https,好像是故意的,参考:
http://www.discuz.net/forum.php?mod=viewthread&tid=3021767
http://www.discuz.net/forum.php?mod=viewthread&tid=3188322
作者: ubuntuhk    时间: 4-7-2013 12:31
cais 发表于 4-7-2013 00:11
下了X2.5的源代码看了一下,可能可以试试改一下这一行:
“source/class/discuz/discuz_application.php ...


谢谢cais,试过这个修改,发现不行,主要是$_SERVER['HTTPS']这个变量为空值。

有可能是因为我们现在的https是在前端的nginx做的,nginx的https访问的是内部的apache http端口,所以导致php的$_SERVER['HTTPS']值为空。

我看看怎么做,不知道SITEURL不加HTTP_HOST,能不能加上默认的相对URL路径。
作者: ubuntuhk    时间: 4-7-2013 12:33
另外,测试了确实是这个SITEURL的问题,如果在代码里强制加上https,然后通过https发帖和登录就都没问题了,我们应该有办法解决这个问题(自动判别http还是https),谢谢cais。
作者: ubuntuhk    时间: 4-7-2013 12:40
cais 发表于 4-7-2013 00:11
下了X2.5的源代码看了一下,可能可以试试改一下这一行:
“source/class/discuz/discuz_application.php ...


改成这段代码之后,https故障解除,现在https登录和发帖都没问题了,再次感谢cais!

  1. $_G['siteurl'] = dhtmlspecialchars($sitepath.'/');
复制代码

作者: ubuntuhk    时间: 4-7-2013 12:44
newozer 发表于 3-7-2013 22:49
http://www.hioz.me/ibbs/
俺直接用滴这。。。存在收藏里面,直接点击就OK了。。。


请小帅 @MICHELLE07 再试试看访问:

https://www.freeoz.org/ibbs/

看看发帖是否正常。MICHELLE07,可以试试https方式在公司访问是否还会被屏蔽(按道理应该没问题了)。
作者: newozer    时间: 4-7-2013 12:47
ubuntuhk 发表于 4-7-2013 12:44
请小帅 @MICHELLE07 再试试看访问:

https://www.freeoz.org/ibbs/

俺在测试发帖。。。貌似挺正常现在。。。
作者: ubuntuhk    时间: 4-7-2013 12:51
newozer 发表于 4-7-2013 12:47
俺在测试发帖。。。貌似挺正常现在。。。


希望能保持稳定,不会让你再体验之前的痛苦了
作者: newozer    时间: 4-7-2013 12:52
ubuntuhk 发表于 4-7-2013 12:44
请小帅 @MICHELLE07 再试试看访问:

https://www.freeoz.org/ibbs/

ub兄辛苦了。。。现在两边发帖都还正常。。。希望能一直稳定。。。
作者: newozer    时间: 4-7-2013 12:55
ubuntuhk 发表于 4-7-2013 12:51
希望能保持稳定,不会让你再体验之前的痛苦了

这个很给力。。。俺喜欢。。。。。。
这样就可以更高效滴“人参公鸡”大猩猩了。。。
作者: MICHELLE07    时间: 4-7-2013 18:12
好感动,技术员辛苦了。
@ubuntuhk  不是一般的负责。

才思同学也有功? 谢谢 @cais

我才刚刚适应上班不能登陆呢。
明天如果成功登陆,狂灌水1000帖,以表庆贺。


作者: ubuntuhk    时间: 4-7-2013 19:58
MICHELLE07 发表于 4-7-2013 18:12
好感动,技术员辛苦了。
@ubuntuhk  不是一般的负责。

1000贴啊,提前膜拜一下

还是得悠着点,细水长流
作者: ubuntuhk    时间: 4-7-2013 19:58
cais同学,再帮忙看看为神马一个帖子@两个人,好像只有一个有效(比如25#帖子)
作者: cais    时间: 4-7-2013 23:54
ubuntuhk 发表于 4-7-2013 19:58
cais同学,再帮忙看看为神马一个帖子@两个人,好像只有一个有效(比如25#帖子)

这两个星期不在悉尼。等我回去再看看。
这个freeoz的前端很牛啊,硬是啥库都没用,自己鼓捣出来了。
作者: cais    时间: 4-7-2013 23:55
这两个星期不在悉尼。等我回去再看看。
这个freeoz的前端很牛啊,硬是啥库都没用,自己鼓捣出来了。
作者: MICHELLE07    时间: 5-7-2013 08:55
ubuntuhk 发表于 4-7-2013 19:58
1000贴啊,提前膜拜一下

还是得悠着点,细水长流

我可以登陆了,万分感谢!
突然可以灌水了,反而不知道说什么好了,还是细水长流吧。
作者: cais    时间: 24-7-2013 22:40
@MICHELLE07 @ubuntuhk 试试看,收到通知请回复。
作者: cais    时间: 24-7-2013 22:43
第一行没有。
@MICHELLE07 隔行。

不是第一个字 @ubuntuhk
试试看,收到通知请回复。

作者: cais    时间: 24-7-2013 22:44
@MICHELLE07 @ubuntuhk
手打的
作者: cais    时间: 24-7-2013 22:49
@MICHELLE07 @ubuntuhk 试试看,收到通知请回复。
作者: cais    时间: 24-7-2013 22:54
好像完全不行了一样啊。。@MICHELLE07 @ubuntuhk
作者: cais    时间: 24-7-2013 23:04
在第一页发看怎么样 @MICHELLE07 @ubuntuhk
作者: ubuntuhk    时间: 24-7-2013 23:06
@cais 收到一个通知

作者: cais    时间: 24-7-2013 23:06
@ubuntuhk 这个问题可能要在后台调试一下比较容易。
现在已经没办法reproduce。猜也不好猜。
作者: ubuntuhk    时间: 24-7-2013 23:08
@cai 上一个回头贴是手打的 这个也是
作者: ubuntuhk    时间: 24-7-2013 23:09
@cais 上一个回头贴是手打的 这个也是
作者: ubuntuhk    时间: 24-7-2013 23:12
好像一个帖子只能@ 特定的id一次,重复的@ 同一个id会被忽略
作者: cais    时间: 24-7-2013 23:13
只有第一个回复里面的@被认出来了。后面几个不管是手打,还是点了@来选,都出不来。
作者: cais    时间: 24-7-2013 23:22
ubuntuhk 发表于 24-7-2013 23:12
好像一个帖子只能@ 特定的id一次,重复的@ 同一个id会被忽略

嗯。看了一下 source/include/post/post_newreply.php
好像的确是这样的。
  1.         foreach(C::t('home_notification')->fetch_all_by_authorid_fromid($_G['uid'], $_G['tid'], 'at') as $row) {
  2.             $atnum ++;
  3.             $ateduids[$row[uid]] = $row['uid'];
  4.         }
复制代码
然后:
  1.                 foreach(C::t('common_member')->fetch_all_by_username($atlist_tmp) as $row) {
  2.                     if(!in_array($row['uid'], $ateduids)) {
  3.                         $atlist[$row[uid]] = $row['username'];
  4.                     }
  5.                     if(count($atlist) == $maxselect) {
  6.                         break;
  7.                     }
  8.                 }
复制代码

作者: ubuntuhk    时间: 25-7-2013 00:37
cais 发表于 24-7-2013 23:22
嗯。看了一下 source/include/post/post_newreply.php
好像的确是这样的。然后:



吐槽一下discuz的代码
作者: ubuntuhk    时间: 25-7-2013 01:30
cais 发表于 24-7-2013 23:22
嗯。看了一下 source/include/post/post_newreply.php
好像的确是这样的。然后:


限制一个id在一个帖子里面只能@某个id一次,也有一定道理,可能是为了避免一下恶意乱@造成spam通知,所以这个暂时就不改了。
作者: 周星星1832    时间: 25-7-2013 11:48
最近没看到MICHELLE,大概暂时不来,用你的名字测试一下
@MICHELLE07

作者: cais    时间: 25-7-2013 23:03
周星星1832 发表于 25-7-2013 11:48
最近没看到MICHELLE,大概暂时不来,用你的名字测试一下
@MICHELLE07

难道还跟发出@的人有关系?
作者: ubuntuhk    时间: 26-7-2013 08:17
cais 发表于 25-7-2013 23:03
难道还跟发出@的人有关系?

看来是的,帖子id+发出的id+@ 的id,我又想了一下,这个判断只是在发新帖的时候做的,所以应该可以去掉。

如果真有人利用这个功能连续发帖@某个id进行spam式轰炸,可以用禁言等办法进行处理。
作者: ubuntuhk    时间: 8-8-2013 10:29
ubuntuhk 发表于 4-7-2013 12:40
改成这段代码之后,https故障解除,现在https登录和发帖都没问题了,再次感谢cais!


今天发现这个修改导致了一个bug,新注册用户无法激活(因为siteurl的link没有了域名):

https://hioz.us/ibbs/thread-1080123-1-1.html

我把这个修改恢复之后,bug消失,不过现在https也还能工作,有点奇怪。




欢迎光临 FreeOZ论坛 (https://www.freeoz.org/ibbs/) Powered by Discuz! X3.2