改造HUSTOJ
来源:互联网 发布:ubuntu tmux 编辑:程序博客网 时间:2024/04/29 14:53
前些日子高中的竞赛老师想让我准备一套oj的搭建方案,准备给我的学弟们用,要求是有认证过的登录帐号的同学才能访问试题等内容。
综合考虑之后,提出了以下几种方案:
1.hustoj+修改端口
2.hustoj+php更改
由于没有php经验,觉得第一种方案比较合适,第二种方案可以试一试。于是着手php的修改。经过实验,需要修改如下几个文件:
/oj-header.php
/register.php
/admin/privilege_add.php
/admin/privilege_checkin.php
/admin/privilege_list.php
首先是oj-header.php的修改,在里面添上这么一段:
after line 1:
if (!(isset($_SESSION['administrator'])|| isset($_SESSION['contest_creator'])|| isset($_SESSION['problem_editor'])|| isset($_SESSION['student']))&& $_SERVER['PHP_SELF']!='/loginpage.php'&&$_SERVER['PHP_SELF']!='/registerpage.php'){ echo "<a href='../loginpage.php'>Please Login First!</a"; echo "<a > Or </a>"; echo "<a href='../registerpage.php'>Register First!</a>"; exit(1); }
作用是全站判断登陆者权限,是否可以访问当前页面;
之后是register.php的修改,同样添上一段:
after line 85:
$sql="insert into `privilege` values('$user_id','checkin','N')";
mysql_query($sql);
作用是默认添加checkin权限,等待管理员审核;
紧接着轮到admin文件夹下的文件修改,其中包括用户的审核和用户的管理。
第一个文件privilege_add.php:
line 23:
$rightarray=array("administrator","problem_editor","source_browser","contest_creator","http_judge","password_setter" );
改为
$rightarray=array("administrator","problem_editor","source_browser","contest_creator","http_judge","student","password_setter" );
作用是增添一个student用户组;
第二个是一个新文件privilege_checkin.php:
line 1:
<?php require_once("admin-header.php");?><?php require_once("../include/check_get_key.php");if (!(isset($_SESSION['administrator']))){ echo "<a href='../loginpage.php'>Please Login First</a>"; exit(1);}if(isset($_GET['uid'])){ $user_id=mysql_real_escape_string($_GET['uid']); $rightstr =mysql_real_escape_string($_GET['rightstr']); $sql="delete from `privilege` where user_id='$user_id' and rightstr='$rightstr'"; mysql_query($sql); $sql="insert into `privilege` values('$user_id','student','N')"; mysql_query($sql); if (mysql_affected_rows()==1) echo "$user_id $rightstr checkin!"; else echo "No such privilege!";}?><script language=javascript> window.setTimeOut(1000,"history.go(-1)");</script>
作用是删除用户的默认checkin权限,增添student权限;
第三个文件privilege_list.php:
line 9:
$sql="select * FROM privilege where rightstr in ('administrator','source_browser','contest_creator','http_judge','problem_editor') ";
改为:
$sql="select * FROM privilege where rightstr in ('administrator','source_browser','contest_creator','checkin','student','http_judge','problem_editor') ";
after line 20:
if($row->rightstr=='checkin')echo "<td><a href=privilege_checkin.php?uid=$row->user_id&rightstr=$row->rightstr&getkey=".$_SESSION['getkey'].">Checkin</a>";
作用是显示用户权限列表,增添一个Checkin链接;
至此,第二种方案的文件更改完成。可惜的是高中服务器不让使用数据库,没法自己搭建oj了……坑爹的教育局……
我的gitcafe blog地址:8cbx.gitcafe.io
- 改造HUSTOJ
- HUSTOJ随笔
- HUSTOJ problems
- 架设hustoj
- HUSTOJ原理
- 安装hustoj
- HUSTOJ 流程图
- HUSTOJ配置文件
- 安装hustoj
- 搭建hustoj
- HUSTOJ problems
- HUSTOJ升级
- HUSTOJ搭建执行(LAMP+hustoj+myphpadmin)
- HUSTOJ随笔2
- HUSTOJ随笔3-配置文件
- HUSTOJ随笔5-FAQ
- [Project] HUSTOJ随笔
- HUSTOJ随笔3-配置文件
- Ubuntu 12.04内核版本从3.2升级到3.8.0
- ubuntu重启后无法进入桌面且所有命令无法执行的问题
- module---random
- 黑马程序员——C语言——基本运算
- SpringMVC框架搭建
- 改造HUSTOJ
- Android中TextView中的文字颜色设置setTextColor的用法
- 关于调用隐藏窗体的问题(C#)
- 黑马程序员——JAVA7K面试题——银行调度系统
- PHP 判断常量,变量和函数是否存在
- 书感
- hdu 1024(dp*优化)
- 递归实现最大公约数:辗转相除法
- Android中的安全与访问权限控制