透过install.php文件看youbbs的代码水平

By i南 at 2015-09-07 11:58:47 • 677次点击

一年之前比较过youbbs和startbbs,觉得youbbs体验和代码上更好。

今天安装的时候,出现各种报错。

看了一下install.php的源码,发现几个问题,贴出来一起学习一下。

首先中文的错误提示在mac下是乱码,这个倒是不严重。

install.php 22行

if($DBS->geterrdesc()) {

这一句是有!逻辑错误的,并且,error放在if里面做条件判断是不合适的,errno是做这个事的。

如下改:

if(!$DBS->geterrno()) {

install.php 23行

if(mysql_get_server_info() > '4.1') {

mysql_get_server_info() 咱们db类用的是mysqli,这里却用了这个,不严谨,另,mysql这个扩展是废弃了的,不建议使用。

如下改:

if(mysqli_get_server_info($DBS->link) > '4.1') {

install.php 37、38行

$DBS->query("SELECT COUNT(*) FROM yunbbs_settings", 'SILENT');

if(!$DBS->geterrdesc()) {

这个查询无赋值,却又是一个count查询,很费解。

猜测作者是想用这个count判断初始SQL是否安装,但是这个query返回false或者mysqli_result。
这里还有另外一个问题,query函数的只有一个形参,实参传了两个,必错啊。

接着下一句

if(!$DBS->geterrdesc()) {
只要数据库配置没错,这个判断是一定会走到的,也就是说后面的初始化没用。
如下改:

$setover = $DBS->query("SELECT COUNT(*) FROM yunbbs_settings");

if($setover && !$DBS->geterrdesc()) {

install.php 52行

runquery函数会导致转存数据导入不进去
如下改:

60行与61行之间加一个判断

if(substr($query,0,2) == '--'){

continue;

}

createtable函数里面也有一个mysql_get_server_info,参照上面的改。

include/mysql.class.php 51行
这里被install.php 21行调用,$DBS->select_db($dbname);

return mysql_select_db($dbname, $this->link);
这个里面的两个参数需要调换一下。

先到这里,这会算是安装好了。
欢迎交流,微信:jjshare

install, php, 文件, youbbs, 代码, 水平


早期用mysql,另外 install.php 早已废弃了。

https://github.com/ego008/youbbs/blob/master/install.php#L2 26

注:这是个人第一次使用php 写的东西,看完语法后就边查边写,酱紫了,路过高手多多包涵。写了之后就不想再用php 了。

项目开源,欢迎提交 pull requests:)

youbbs at 2015-09-07 12:33:36
1

@youbbs 请问现在youbbs是用php写的吗?

网络漫步者 at 2015-09-11 10:16:19
2

@网络漫步者 原版还在用php 维护,打算用go 来重写。

youbbs at 2015-09-11 14:47:04
3

@youbbs 给你推荐一个。

https://www.iosx.me/ 53
之前该站使用的是startbbs,现在用golang+mongodb+angularjs重写的。

网络漫步者 at 2015-09-14 15:51:21
4

@网络漫步者 不错,超快。

youbbs at 2015-09-14 22:02:27
5
登录 后发表评论