mybb最新版(1.8.8)登录问题解决攻略

mybb最新版登录问题解决攻略

1.问题背景

应运营同学要求,研究部署了国外版bbs。我们选择了国外较为流行的、开源的、支持多语言的mybb。安装部署都很顺利,但是测试登录时遇到了诡异的问题,登录有问题,而且必现。每次登录,都显示成功了,但是界面仍然显示的是游客,奇了怪了,官方发布的正式版本,不科学呀。

2.问题分析

发现问题后,不得已部署了mybb旧版1.6.5。
验证一切正常,好使。感觉像是cookie导致的,mybb最新版1.8.8登录后再次请求其他页面没有自动带上登录后写入cookie,而旧版1.6.5没问题,登录后后续请求都会自动带上cookie。仔细比对后,发现mybb1.8.8把登录cookie写入到ip下面了(由于是公司内部测试环境,没有绑定域名),而mybb1.6.5则默认吧登录cookie没有指定域。

3. 问题解决

问题确认了,但不知如何下手修改,于是翻阅了他们官网论坛,找了最终的秘籍,这是一个常见问题,通过控制台的cookie配置就可以完美解决:

Your cookie settings can be found in: Admin CP > Configuration > Settings > Site Details. The two settings are Cookie Domain and Cookie Path.

By default, MyBB suggests Cookie Domain to be blank, and Cookie Path
to be /. Although this theoretically will work, in many cases it is
inadequate.

对应的中文目录就是:
配置 > 设置 > 更改设置 > 站点详情 > Cookie域,默认是安装服务ip(通过ip访问安装的),置为空即可。
问题顺利解决,感觉真好!!

4. 分享

本文参考了mybb官方文档 这儿,
最新版mybb下载这儿


#include<stdio.h> #include<math.h> #include<stdlib.h> #define dx 100 struct bb { int m; int n; int hl[dx][dx]; int jk[dx][dx]; }; double det(struct bb *A, int n); double algebraic_cofactor(struct bb *A, struct bb *B, int row, int col); void adjoint(struct bb *A, struct bb *B); void inverse(struct bb *A,double inv[][dx],int N); int main() { struct bb A; int m,n; printf("输入几行几列:\n"); scanf("%d %d",&m,&n); A.m = m; A.n = n; printf("请输入矩阵:\n"); for(int i = 0; i < A.m; i++) { for(int j = 0; j < A.n; j++) { scanf("%d", &A.hl[i][j]); } } double inv[dx][dx]; int N = A.m; // Assuming square matrix // 计算逆矩阵 inverse(&A, inv, N); // 输出结果 printf("逆矩阵:\n"); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { printf("%.2f ", A.hl[i][j]); } printf("\n"); } return 0; } double det(struct bb *A, int n) { double sum=0; if(n==1) { return A->hl[0][0]; } else if(n==2) { return A->hl[0][0]*A->hl[1][1]-A->hl[0][1]*A->hl[1][0]; } int i,j,k; struct bb *mybb = (struct bb *)malloc(sizeof(struct bb)); for(k=0;k<n;k++) { double b[dx][dx]; for(i=1;i<n;i++) { for(j=0;j<n;j++) { if(j<k) { b[i-1][j]=A->hl[i][j]; } else if(j>k) { b[i-1][j-1]=A->hl[i][j]; } } } mybb->m = n - 1; mybb->n = n - 1; for(i=0;i<mybb->m;i++) { for(j=0;j<mybb->n;j++) { mybb->hl[i][j] = b[i][j]; } } double detb=det(mybb,n-1); sum+=A->hl[0][k]*pow(-1,k)*detb; } free(mybb); return sum; } double algebraic_cofactor(struct bb *A, struct bb B, int row, int col) { int i,j,m=0,n=0,M=A->m; double sign; if((row+col)%2==0) { sign=1; } else { sign=-1; } for(i=0;i<M;i++) { if(i!=row) { for(j=0;j<M;j++) { if(j!=col) { B->jk[m][n]=A->hl[i][j]; n++; } } m++; n=0; } } double detb=det(B,M-1); return signdetb; } void adjoint(struct bb *A, struct bb *B) { int i,j,M=A->m; for(i=0;i<M;i++) { for(j=0;j<M;j++) { B->hl[j][i]=algebraic_cofactor(A,B,i,j); //注意这里是 hl[j][i] 而不是 hl[i][j] } } } void inverse(struct bb *A,double inv[][dx],int N) { // 构造伴随矩阵 struct bb B; B.m = N; B.n = N; adjoint(A, &B); // 计算行列式的值 double dets=det(A,N); // 判断行列式是否为零 if(dets == 0) { printf("该矩阵不可逆!\n"); return; } // 计算逆矩阵 for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { inv[i][j] = B.hl[i][j] / dets; } } }修改这个代码找出错误并改正
最新发布
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值