jl.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. error_reporting(1);
  3. session_start();
  4. date_default_timezone_set('PRC');
  5. header("Content-type: text/html; charset=utf-8");
  6. $gmcode='9527';
  7. $quarr = array (
  8. "1" => array (
  9. "user" =>"admin",
  10. "pswd" =>"qq123456..",
  11. "zoneid"=>1,
  12. "srv_name"=>"game.dev.1",
  13. "name"=>"一区",
  14. "url"=>"http://127.0.0.1:39081",
  15. "hidde"=>false
  16. )
  17. ,
  18. "2" => array (
  19. "user" =>"admin",
  20. "pswd" =>"qq123456..",
  21. "zoneid"=>2,
  22. "srv_name"=>"game.dev.2",
  23. "name"=>"二区",
  24. "url"=>"http://127.0.0.1:39081",
  25. "hidde"=>false
  26. )
  27. );
  28. /*
  29. 使用方法:
  30. 1.如果是用Ubuntu系统的话,修改NGINX配置,使它支持PHP,新增conf创建网站,把后台文件放进去就可以用了(看不懂的话,跳过这个,看下面这条)
  31. 2.看不懂第一条的话:随便找个服务器,把127.0.0.1改成服务端的IP,然后宝塔创建个网站,丢进去运行
  32. 玩家后台道具:player.txt GM后台道具:xmitem.txt 目前2个文件是一样的
  33. */
  34. $getfilter="'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
  35. $postfilter="\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
  36. $cookiefilter="\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
  37. function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq){
  38. if(is_array($StrFiltValue)){
  39. $StrFiltValue=implode($StrFiltValue);
  40. }
  41. if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1){
  42. print "非法操作!";
  43. exit();
  44. }
  45. }
  46. foreach($_GET as $key=>$value){
  47. StopAttack($key,$value,$getfilter);
  48. }
  49. foreach($_POST as $key=>$value){
  50. StopAttack($key,$value,$postfilter);
  51. }
  52. foreach($_COOKIE as $key=>$value){
  53. StopAttack($key,$value,$cookiefilter);
  54. }
  55. function poststr($str){
  56. return $_POST[$str];
  57. }
  58. function http_post($url, $data = NULL , $cookie ="") {
  59. $curl = curl_init();
  60. curl_setopt($curl, CURLOPT_URL, $url);
  61. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  62. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  63. if($data=="" ){
  64. $data = "{}";
  65. }
  66. if(is_array($data))
  67. {
  68. $data = json_encode($data,JSON_UNESCAPED_UNICODE);
  69. }
  70. $dataLen = strlen($data);
  71. curl_setopt($curl, CURLOPT_POST, 1);
  72. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  73. curl_setopt($curl, CURLOPT_HEADER, 0);
  74. curl_setopt($curl, CURLOPT_COOKIE,$cookie);
  75. curl_setopt($curl, CURLOPT_HTTPHEADER,array(
  76. "Content-Encoding: gzip",
  77. 'Content-Type: application/json',
  78. "Content-Length: {$dataLen}" ,
  79. ));
  80. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  81. $res = curl_exec($curl);
  82. $errorno = curl_errno($curl);
  83. if ($errorno) {
  84. return $errorno;
  85. }
  86. curl_close($curl);
  87. return $res;
  88. }
  89. function loginGetCookie($url,$user,$pswd){
  90. $url = $url."/login";
  91. $ch = curl_init($url);
  92. $post = array(
  93. "username" => "$user" ,
  94. "password" => "$pswd",
  95. );
  96. curl_setopt($ch, CURLOPT_HEADER, 1);
  97. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  98. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  99. $content=curl_exec($ch);
  100. preg_match('/Set-Cookie:(.*);/iU',$content,$str);
  101. $cookie = $str[1]; //获得COOKIE
  102. return $cookie;
  103. }
  104. function sendMail($url,$rid,$cookie,$itema,$num,$srv_name,$title="",$content=""){
  105. $mailApiUrl =$url."/sendmail";//API的位置
  106. $title == "" && $title="GM邮件";
  107. $content == "" && $content="你有新的道具,请查收";
  108. $items=array($itema=>(int)$num);
  109. $meta = array();
  110. $meta['servName'] = $srv_name;
  111. $meta['receive'] = $rid;
  112. $meta['mailTemp'] = "2";
  113. $meta['mailType'] = "role";
  114. $meta['sender'] = "GM";
  115. $meta['subject'] = $title;
  116. $meta['content'] = $content;
  117. $meta['attachs'] = "{\"card\":{\"id\":$itema}}";
  118. $meta['beginVip'] = null;
  119. $meta['endVip'] = null;
  120. $retJson = http_post($mailApiUrl,$meta,$cookie);
  121. $jsonData = json_decode($retJson,true);
  122. if($jsonData['retS'] == ""){
  123. return false;
  124. }
  125. if( in_array($rid, $jsonData['retS'])){
  126. return true;
  127. }else{
  128. return false;
  129. }
  130. }
  131. ?>