Skip to content

fix: get_group() 的 $uid 参数应为可选,否则 5 个后台页面在 PHP 7.1+ 白屏 - #30

Open
Y-R-Y wants to merge 1 commit into
hznuoj-dev:masterfrom
Y-R-Y:fix/get_group-optional-arg
Open

Y-R-Y wants to merge 1 commit into
hznuoj-dev:masterfrom
Y-R-Y:fix/get_group-optional-arg

Conversation

@Y-R-Y

@Y-R-Y Y-R-Y commented Sep 14, 2026

Copy link
Copy Markdown

get_group() 函数体第一行就是 if($uid=="")$uid=$_SESSION['user_id'];, 说明作者本意就是让 $uid 可选(不传则取当前登录用户),只是声明处漏了默认值。

PHP 7.0 下少传参数只会发一条 Warning,参数为 NULL 而 NULL == "" 恰好成立, 所以一直没暴露;PHP 7.1 引入 ArgumentCountError 后变成致命错误,页面直接白屏 (db_info.inc.php 里 ini_set("display_errors","Off"),连报错都看不到)。

以下 5 处均为无参调用 get_group(),全部受影响:
admin/changepass.php:37
admin/change_user_id.php:34
admin/privilege_add.php:22
admin/privilege_add.php:43
admin/privilege_delete.php:11

复现(PHP 7.1+):后台 Users -> Change PassWD 提交即白屏。

get_group() 函数体第一行就是 `if($uid=="")$uid=$_SESSION['user_id'];`,
说明作者本意就是让 $uid 可选(不传则取当前登录用户),只是声明处漏了默认值。

PHP 7.0 下少传参数只会发一条 Warning,参数为 NULL 而 NULL == "" 恰好成立,
所以一直没暴露;PHP 7.1 引入 ArgumentCountError 后变成致命错误,页面直接白屏
(db_info.inc.php 里 ini_set("display_errors","Off"),连报错都看不到)。

以下 5 处均为无参调用 get_group(),全部受影响:
  admin/changepass.php:37
  admin/change_user_id.php:34
  admin/privilege_add.php:22
  admin/privilege_add.php:43
  admin/privilege_delete.php:11

复现(PHP 7.1+):后台 Users -> Change PassWD 提交即白屏。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant