(三)开始在OJ上添加签到功能
在了解完OJ文件下的各个文件夹的主要作用后,我们开始往里面添加东西(其实只要知道各文件夹是干什么的后,添加东西也变得非常简单了)
一 在数据库中添加对应功能的字段。
我们这个学期才刚开数据库这门课,所以我也是边学习边弄这东西。。。为了避免不必要的麻烦,我就仅仅只是在原边上做的添加,而并没有去添加表。
根据室友的签到系统的设置,我在OJ的users表中添加了签到的状态,一周签到次数和总签到次数还有是否被搜索4个 字段(后面又添加了一个签到IP)
二 在页面添加对应的按钮
找到下图的所在的文件--------html/template/bs/oj-header.php
然后在你觉得适合签到按钮的地方输入以下PHP代码
<?php
$_qds = mysql_fetch_array(mysql_query("SELECT QD_state FROM users WHERE user_id='".$_SESSION['user_id']."'"));
if($_qds['QD_state']==0){//未签到状态
echo "<a class='btn' href='qiandao.php'>";
echo "<i class='icon-ok'></i>";//这个是签到的图标,需要更改的去html/bootstap/css/bootstrap.css找对应的图标更改
//我试过自己加图片进去,可是没有成功(我好菜啊T_T)
echo $MSG_QD;//显示签到两个字
}else{//签到后的状态
echo "<a class='btn'>";
echo "<i class='icon-ok'></i>";
echo $MSG_YQD;//显示未签到
}
?>
三 创建签到的PHP文件
我们需要到主文件html下创建签到的PHP文件-------我创建的是qiandao.php
根据OJ原作者我们照样子把头文件给拿过来
header('content-type:text/html;charset=utf-8;');//后面发现弹窗JS会乱码加上的。
require_once('./include/cache_start.php');
require_once('./include/db_info.inc.php');
require_once('./include/setlang.php');
然后开始写签到功能
if(!isset($_SESSION['user_id'])){
echo "<script type='text/javascript' charset='utf-8'>alert('请先登录!');location.href='loginpage.php'</script>";
exit;
}
$row = mysql_fetch_array(mysql_query("SELECT QD_state FROM users WHERE user_id='".$_SESSION['user_id']."'"));
if($row['QD_state']!=0){//判断登录状态
echo "<script type='text/javascript' charset='utf-8'>alert('你已经签过到了!快去A题吧!');location.href='problemset.php';</script>";
exit();
}else{
$row = mysql_fetch_array(mysql_query("SELECT QD_ip FROM users WHERE QD_ip='{$_SERVER["REMOTE_ADDR"]}'"));
if(empty($row['QD_ip'])){
mysql_query("UPDATE users SET QD_state=1,
QD_num_week=QD_num_week+1,
QD_num_sum=QD_num_sum+1,
QD_ip='{$_SERVER["REMOTE_ADDR"]}',
money=money+2 //这里后来仿照南阳OJ写了个签到得东西的功能~ ~
WHERE user_id='".$_SESSION['user_id']."'AND QD_state=0");
echo "<script type='text/javascript' charset='utf-8'>alert('恭喜你签到成功!快去A题吧!!!');location.href='problemset.php';</script>";
exit;
}else{
echo "<script type='text/javascript' charset='utf-8'>alert('这个IP已经被使用了,请换个IP再来签到!');history.back();</script>";
exit;
}
}
到此~签到功能就可以使用了。(PS:关于数据库的整点更新什么的,我此时还不会做就丢给同学用JAVA写了)
(三)开始在OJ上添加签到功能的更多相关文章
- 为CSDN博客添加打赏功能
随着移动支付在国内的兴起,越来越多的付费内容越多如雨后春笋般的冒了出来.其中以<逻辑思维>.罗振宇.李笑来为主要代表作品和人物. 现在很多博客或者个人网站里面都有打赏功能,这算是对博主的劳 ...
- 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注
原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...
- 【UGUI】 (三)------- 背包系统(上)之简易单页背包系统及检索功能的实现
背包系统,无论是游戏还是应用,都是常常见到的功能,其作用及重要性不用我多说,玩过游戏的朋友都应该明白. 在Unity中实现一个简易的背包系统其实并不是太过复杂的事.本文要实现的是一个带检索功能的背包系 ...
- 033医疗项目-模块三:药品供应商目录模块——供货商药品目录t添加查询功能----------Dao层和Service层和Action层和调试
什么叫做供货商药品目录t添加查询功能?就是说我们前面的博客里面不是说供货商登录后看到了自己供应的药品了么如下: 现在供货商想要往里面添加别的药品,那么这个药品的来源就是卫生局提供的那个Ypxx表(药品 ...
- Android UI ActionBar功能-在 Action Bar 上添加按钮
在ActionBar上添加按钮实现某些功能最常见的Application的功能如:在ActionBar上添加一个搜索按钮: 首先官方文档说明:http://wear.techbrood.com/tra ...
- C# fckeditor添加上传附件功能
最近在维护系统时,要把fckediotr加上上传附件功能,好久没有用fckeditor了,现在都已经改名字,不叫这个了. 修改统计器下面的fckconfig.js,方法如下: 1.把FCKConfig ...
- 使用 UICollectionView 实现日历签到功能
概述 在 App 中,日历通常与签到功能结合使用.是提高用户活跃度的一种方式,同时,签到数据中蕴含了丰富的极其有价值的信息.下面我们就来看看如何在 App 中实现日历签到功能. 效果图 ..... 思 ...
- 如何在MyEclipse上添加更换JRE
如何在myeclipse上添加更换JRE 由于兼容性的问题,有些WEB项目会依赖jdk的版本.如果需要更换jdk,那么,知道如何更换JRE的方法很有必要. 一种在myeclipse上添加和更换JRE的 ...
- 企业IT管理员IE11升级指南【7】—— Win7和Win8.1上的IE11功能对比
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
随机推荐
- How to setup ELM327 Bluetooth WiFi for Android software Torque
1. Install OBDII 2. Install Android Software Torque a) Copy software to phone from CD b) ...
- 翻译:WebApi 认证--用户认证Oauth解析
The Web API v2用户认证模板提供了流行的应用用户认证场景,如.使用本地帐号的用户名密码认账 (包括创建用户.设置和修改密码)以及使用第三方的认证方式,如facebook,googl ...
- 沈逸老师PHP魔鬼特训笔记(9)--进化
回到第一课,我们学过PHP母体,了解过解析PHP程序.PHP其实内置了一个web服务器,专门给我们开发测试使用,那么接下来我们要完成的是:生成后创建一个web 服务,在浏览器中可以访问. PHP的母体 ...
- .net对各表的操作详细到字段的更改记录的日志
存入数据库中,目前的字段包括操作人,操作时间,sql语句,被修改的字段,字段原值,操作人的身份. /// <summary> /// 添加操作日志 /// </summary> ...
- vue-cli 发布(译)
如果你现在正在使用Vue.js,当你构建一个原型的时候,你所需要做的通常就是通过<script>把Vue.js引入进来,然后就完事了.但是真实情况往往不是这样的.当我们真正开发一个应用的时 ...
- 【转】windows 如何查看端口占用情况?
开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...
- 【奇怪现象】用联通访问某些ASP.NET网站会产生__EVENTVALIDATION字段,用电信却只有:__VIEWSTATE。【正常】?原因?
[奇怪现象]用联通访问某些ASP.NET网站会产生__EVENTVALIDATION字段,用电信却只有:__VIEWSTATE.[正常]?原因? 对于__VIEWSTATE和__EVENTVALIDA ...
- Android 直接拨打电话界面
Android 拨号界面和直接拨打电话界面代码控制 //定义TAG为空 private static final String TAG = null; //定义Button的点击事件 tell.set ...
- PB出现中文乱码
在design>option>font把字体都设定为宋体 tools>system option>font 把字体都设定为宋体 然后重启PB即可
- Win7 安装.net framework 4.0 失败
Win7 安装.net framework 4.0 失败,错误HRESULT 0xc8000222解决办法 单独安装.net framework 4.0,结果还是失败,出现HRESULT 0xc800 ...