通过php制作一个简单的战神引擎充值后台页面



战神引擎近两年比较火热, 深受老玩家的喜爱, 但是漏洞也非常的多,无意中发现这款引擎竟然没有自己的充值页面,都是借助第三方平台完成充值,于是小编在想能不能用php完成一个简单的充值页面,好啦,就让我们一步步完成这个例子。

首先我们来写一个简单php程序,目的是为了对数据库中的人物角色数据操作。

PHP代码

//============================================
$key='// 这是一个测试充值页面';
//============================================
error_reporting(0);
ini_set('date.timezone','Asia/Shanghai');
date_default_timezone_set ( 'PRC' );//时区
header("Content-type:text/html;charset=utf-8");
$gmcode = '123456';
$AM_CONFIG = array(  //数据库配置
"gmkey"    =>"db615309055b15f4de47dec0fba50aa3",
"sa" => "%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E6%B5%8B%E8%AF%95%E5%85%85%E5%80%BC%E9%A1%B5%E9%9D%A2",
"db_host" => "127.0.0.1",
"db_username" => "root",
"db_password" => "root",
"dbport" => 3306,
"dbgame" => "test"
);
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
$checknum =    $_POST['checknum'];
$qu  = $_POST['qu'];                     //选区
$date=date('Y-m-d H:i:s');
if(isset($_POST['submit'])){
if(md5($key)==$AM_CONFIG['gmkey']){ if($checknum==$gmcode){
if(empty($qu)){
echo "<script>alert('请选择分区');history.go(-1)</script>";
exit;
}
$mysqli=new mysqli($AM_CONFIG['db_host'],$AM_CONFIG['db_username'],$AM_CONFIG['db_password'],$AM_CONFIG['dbgame'],$AM_CONFIG['dbport']);
if($mysqli-&gt;connect_error){
exit("数据库连接失败,请检查配置是否正确!");
}
if (!$mysqli-&gt;set_charset("Latin1")) {
printf("设置数据库编码Latin1错误: %s\n", $mysqli-&gt;error);
exit();
}
$name=trim($_POST['name']);           //角色名
$chargenum = $_POST['chargenum'];   //充值数量
if(empty($chargenum)){
echo "<script>alert('数量为空');history.go(-1)</script>";
exit;
}
$log='charge'.date('Y-m-d').'.log';
echo $log;
$sql1 = "select ActiveParam,AwardCodeType,AwardCode from awardcodes where AwardCode = CONVERT(unhex(HEX(CONVERT(CONVERT(unhex('".bin2hex($name)."') USING utf8) USING gbk))) USING latin1)";
$result1 = $mysqli-&gt;query($sql1);
if(!$result1)
{
exit("执行sql失败:1");
}else{
if($result1-&gt;num_rows==0){
$sql = "INSERT INTO awardcodes (AwardCode,AwardCodeType,ActiveParam) VALUES (CONVERT(unhex(HEX(CONVERT(CONVERT( unhex('".bin2hex($name)."') USING utf8) USING gbk))) USING latin1),".$chargenum.",1)";
}else{
$row=mysqli_fetch_assoc($result1);
if($row['ActiveParam']=="-1"){
$sql = "UPDATE awardcodes SET AwardCodeType = ".$chargenum.",ActiveParam=1 WHERE AwardCode = CONVERT(unhex(HEX(CONVERT(CONVERT( unhex('".bin2hex($name)."') USING utf8) USING gbk))) USING latin1)";
}else{
$sql = "UPDATE awardcodes SET AwardCodeType =AwardCodeType+".$chargenum." WHERE AwardCode = CONVERT(unhex(HEX(CONVERT(CONVERT( unhex('".bin2hex($name)."') USING utf8) USING gbk))) USING latin1)";
}
}
$result = $mysqli-&gt;query($sql);
if(!$result)
{
exit("执行sql失败:2");
}else{
file_put_contents($log,$date."\t".$qu."区 \t"."玩家:".$name."\t".$chargenum."\t"."充值成功\t".$user_IP.PHP_EOL,FILE_APPEND);
echo "<script>alert('充值成功');history.go(-1)</script>" ;
exit;
}
}
}
echo   "<script>alert('管理员码错误');history.go(-1)</script>" ;
exit;
}
$eff = urldecode($AM_CONFIG['sa']);
echo "<script>alert('$eff');history.go(-1)</script>" ;
exit;
}
?&gt;

一个简单的充值功能已经完成 ,需要修改的地方如下:

  • gmkey : MD5加密后key字符串
  • sa: url编码的key值
  • db_host: 数据库地址
  • db_username: 你的数据库名
  • db_password: 你的数据库密码
  • dbport: 数据库端口
  • dbgame: 游戏数据库

接下来我们还需要一个html页面,用于对数据的表单提交操作。下面我们做一个简单的html页面。

HTML页面

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>管理员充值后台</title>

<style>
  *{padding:0;margin:0}<br />
  body{padding-left:20px;padding-top:20px}<br />
  span{height;24px;line-height:24px;font-size:12px;min-width:100px;display:inline-block;text-align:justify;text-align-last:justify;margin-bottom:12px}<br />
  select,input,button{height:24px;line-height:24px;font-size:12px;width:150px;display:inline-block}<br />
  #maildesc{text-align:none;color:#ff0000;}<br />
</style></head>
<body>

<form name="form" method="post" action="">
<div>
<h3>管理员充值后台</h3>
</span>
<div><span>管理员校验码: </span><input type='password' value='1' name='checknum'></div>
<div><span>选区: </span><select name='qu'>
<option value='1'>1区</option>
<option value='2'>2区</option>
</select></div>
<div><span>角色名: </span><input type='text' value='' name='name' placeholder='请输入角色名'></div>
<div><span>数量: </span><input type='text' value='' name='chargenum' placeholder='数量'></div>
<div><input type="submit" name="submit" value='充值'></div>
</form></body>
</html>

ok, 到此一个简单的用于测试管理页面已经完成。



看上去有点很简陋,本文制作演示,有兴趣的小伙伴可以自行添加一些css样式美化一下,不过一个简单的管理页面已经实现。

其实例子很简单只是通过php对sql数据库中每个角色的元宝数进行修改增加完成充值的目的。 本文代码只针对单机模式测试使用。