generated from root/miduo_server
loginserver user module
parent
4198a3f001
commit
4a73846f90
|
|
@ -0,0 +1,59 @@
|
|||
package com.ljsd.controller;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.ljsd.pojo.ResMsg;
|
||||
import com.ljsd.util.BaseGlobal;
|
||||
import com.ljsd.util.MD5Util;
|
||||
import com.ljsd.util.StringUtils;
|
||||
import com.mongodb.DBObject;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class GetNoticeController extends HttpServlet {
|
||||
private static Gson gson = new Gson();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json; charset=utf-8");
|
||||
String timestamp = req.getParameter("timestamp");
|
||||
String sign = req.getParameter("sign");
|
||||
ResMsg resMsg = new ResMsg();
|
||||
resMsg.setCode(1);
|
||||
try (PrintWriter out = response.getWriter();){
|
||||
if(StringUtils.checkIsEmpty(timestamp) || StringUtils.checkIsEmpty(sign)){
|
||||
resMsg.setMsg("参数不能为空");
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
String mySign = MD5Util.encrypByMd5(timestamp + MD5Util.salt);
|
||||
if(!mySign.equals(sign)){
|
||||
resMsg.setMsg("签名错误");
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
DBObject notice = BaseGlobal.getInstance().mongoDBPool.findOne("notice_info", "1");
|
||||
resMsg.setCode(0);
|
||||
resMsg.setCode(0);
|
||||
resMsg.setMsg("");
|
||||
if(notice!=null){
|
||||
Map<String,String> parms = new HashMap<>();
|
||||
Object content = notice.get("content");
|
||||
Object title = notice.get("title");
|
||||
parms.put("title",title.toString());
|
||||
parms.put("content",content.toString());
|
||||
resMsg.setParms(parms);
|
||||
}
|
||||
out.print(gson.toJson(resMsg));
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -17,14 +17,17 @@ import javax.servlet.http.HttpServletRequest;
|
|||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.*;
|
||||
|
||||
public class GetUserController extends HttpServlet {
|
||||
private final static String _COLLECTION_NAME = "user_info";
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(GetUserController.class);
|
||||
public static int isTestLan=0;
|
||||
|
||||
public static void initLanState(){
|
||||
Properties properties = BaseGlobal.getInstance().properties;
|
||||
isTestLan = Integer.parseInt(properties.getProperty("isTestLan"));
|
||||
}
|
||||
|
||||
public GetUserController() {
|
||||
super();
|
||||
|
|
@ -58,20 +61,27 @@ public class GetUserController extends HttpServlet {
|
|||
response.sendError(400, "platform is empety");
|
||||
return;
|
||||
}
|
||||
if(!"3".equals(platform)){
|
||||
boolean result = loginVerfify(platform, openId, token);
|
||||
if(!result){
|
||||
response.sendError(400, "verify fail");
|
||||
return;
|
||||
}
|
||||
}
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json; charset=utf-8");
|
||||
DBObject dbObject = new BasicDBObject();
|
||||
dbObject.put("openId", openId);
|
||||
dbObject.put("serverId", serverId);
|
||||
dbObject.put("platform", platform);
|
||||
try {
|
||||
if(isTestLan==1){
|
||||
boolean result = loginVerfifyByTestLan(openId, token);
|
||||
if(!result){
|
||||
response.sendError(400, "verify fail");
|
||||
return;
|
||||
}
|
||||
}else if(!"3".equals(platform)){
|
||||
boolean result = loginVerfify(platform, openId, token);
|
||||
if(!result){
|
||||
response.sendError(400, "verify fail");
|
||||
return;
|
||||
}
|
||||
}
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json; charset=utf-8");
|
||||
DBObject dbObject = new BasicDBObject();
|
||||
dbObject.put("openId", openId);
|
||||
dbObject.put("serverId", serverId);
|
||||
dbObject.put("platform", platform);
|
||||
|
||||
int uid = 0;
|
||||
List<DBObject> userInfos = BaseGlobal.getInstance().mongoDBPool.find(_COLLECTION_NAME, dbObject);
|
||||
DBObject res = new BasicDBObject();
|
||||
|
|
@ -132,6 +142,11 @@ public class GetUserController extends HttpServlet {
|
|||
|
||||
}
|
||||
|
||||
public static boolean loginVerfifyByTestLan(String openId,String token) throws Exception {
|
||||
String tokenInRedis = BaseGlobal.getInstance().redisApp.get(RedisKey.LOGIN_TOKEN, openId, String.class, -1);
|
||||
return token.equals(tokenInRedis);
|
||||
}
|
||||
|
||||
|
||||
private static boolean parseLoginResult(String orderResult){
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
package com.ljsd.controller;
|
||||
|
||||
import com.ljsd.util.BaseGlobal;
|
||||
import com.mongodb.BasicDBObject;
|
||||
import com.mongodb.DBObject;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
public class PublishNoticeController extends HttpServlet {
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
String content = request.getParameter("content");
|
||||
String title = request.getParameter("title");
|
||||
DBObject doc = new BasicDBObject();
|
||||
doc.put("_id", "1");
|
||||
doc.put("content", content);
|
||||
doc.put("title", title);
|
||||
BaseGlobal.getInstance().mongoDBPool.save("notice_info", doc);
|
||||
response.setContentType("text/html");
|
||||
PrintWriter out = response.getWriter();
|
||||
out.println("add suc");
|
||||
out.flush();
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.ljsd.controller;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
public class RoutePublishNoticeController extends HttpServlet {
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
|
||||
response.sendRedirect("updateNotice.jsp");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
package com.ljsd.controller;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.ljsd.pojo.ResMsg;
|
||||
import com.ljsd.redis.RedisKey;
|
||||
import com.ljsd.redis.RedisUtil;
|
||||
import com.ljsd.util.BaseGlobal;
|
||||
import com.ljsd.util.MD5Util;
|
||||
import com.ljsd.util.StringUtils;
|
||||
import com.mongodb.DBObject;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
public class UserLoginController extends HttpServlet {
|
||||
private static Gson gson = new Gson();
|
||||
private static final String _COLLECTION_NAME = "user_register_info";
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
this.doPost(request, response);
|
||||
}
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json; charset=utf-8");
|
||||
String name = request.getParameter("userName");
|
||||
String password = request.getParameter("password");
|
||||
String sign = request.getParameter("sign");
|
||||
String returnMsg = "success";
|
||||
ResMsg resMsg = new ResMsg();
|
||||
resMsg.setCode(1);
|
||||
try (PrintWriter out = response.getWriter();){
|
||||
if(StringUtils.checkIsEmpty(name) || StringUtils.checkIsEmpty(password) || StringUtils.checkIsEmpty(sign)){
|
||||
resMsg.setMsg("参数不能为空");
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
String mySign = MD5Util.encrypByMd5(name + password + MD5Util.salt);
|
||||
if(!mySign.equals(sign)){
|
||||
resMsg.setMsg("签名错误");
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
DBObject one = BaseGlobal.getInstance().mongoDBPool.findOne(_COLLECTION_NAME, name);
|
||||
if(one ==null){
|
||||
resMsg.setMsg("该账号不存在");
|
||||
resMsg.setMsg(returnMsg);
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
Object passwordInDb = one.get("password");
|
||||
if(!password.equals(passwordInDb)){
|
||||
resMsg.setMsg("密码错误,请重试");
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
Map<String,String> parms = new HashMap<>();
|
||||
parms.put("openId",one.get("openId").toString());
|
||||
int token = new Random().nextInt(1024) +10000;
|
||||
parms.put("token",Integer.toString(token));
|
||||
BaseGlobal.getInstance().redisApp.set(RedisKey.LOGIN_TOKEN,name,token,-1, false);
|
||||
resMsg.setCode(0);
|
||||
resMsg.setMsg(returnMsg);
|
||||
resMsg.setParms(parms);
|
||||
out.print(gson.toJson(resMsg));
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
package com.ljsd.controller;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.ljsd.pojo.ResMsg;
|
||||
import com.ljsd.util.BaseGlobal;
|
||||
import com.ljsd.util.MD5Util;
|
||||
import com.ljsd.util.StringUtils;
|
||||
import com.mongodb.BasicDBObject;
|
||||
import com.mongodb.DBObject;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Random;
|
||||
|
||||
public class UserRegisterController extends HttpServlet {
|
||||
|
||||
private static final String _COLLECTION_NAME = "user_register_info";
|
||||
private static Gson gson = new Gson();
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
this.doPost(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json; charset=utf-8");
|
||||
String name = request.getParameter("userName");
|
||||
String password = request.getParameter("password");
|
||||
String repeat = request.getParameter("repeat");
|
||||
String sign = request.getParameter("sign");
|
||||
String returnMsg = "success";
|
||||
ResMsg resMsg = new ResMsg();
|
||||
resMsg.setCode(1);
|
||||
try ( PrintWriter out = response.getWriter();){
|
||||
if(StringUtils.checkIsEmpty(name) || StringUtils.checkIsEmpty(password) || StringUtils.checkIsEmpty(repeat) || StringUtils.checkIsEmpty(sign) ){
|
||||
returnMsg = "输入不可以为空";
|
||||
resMsg.setMsg(returnMsg);
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
if(!password.equals(repeat)){
|
||||
returnMsg = "两次密码输入不一致";
|
||||
resMsg.setMsg(returnMsg);
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
if(!StringUtils.checkIsNumberOrChar(name)){
|
||||
resMsg.setMsg("用户名只能是数字或英文符号");
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
if(name.length()<2 || name.length()>6){
|
||||
resMsg.setMsg("用户名长度不符合");
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
|
||||
String mySign = MD5Util.encrypByMd5(name + password + MD5Util.salt);
|
||||
if(!mySign.equals(sign)){
|
||||
resMsg.setMsg("签名错误");
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
|
||||
DBObject one = BaseGlobal.getInstance().mongoDBPool.findOne(_COLLECTION_NAME, name);
|
||||
if(one!=null){
|
||||
resMsg.setMsg("该账号已被注册");
|
||||
out.print(gson.toJson(resMsg));
|
||||
return;
|
||||
}
|
||||
|
||||
DBObject doc = new BasicDBObject();
|
||||
doc.put("_id", name);
|
||||
doc.put("password", password);
|
||||
int random = new Random(1024).nextInt();
|
||||
String openId = MD5Util.encrypByMd5(mySign + random);
|
||||
doc.put("openId", openId);
|
||||
BaseGlobal.getInstance().mongoDBPool.save(_COLLECTION_NAME, doc);
|
||||
resMsg.setCode(0);
|
||||
resMsg.setMsg(returnMsg);
|
||||
out.print(gson.toJson(resMsg));
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package com.ljsd.pojo;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class ResMsg {
|
||||
|
||||
private int code;
|
||||
|
||||
private String msg;
|
||||
|
||||
private Map<String,String> parms;
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
public void setMsg(String msg) {
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public Map<String, String> getParms() {
|
||||
return parms;
|
||||
}
|
||||
|
||||
public void setParms(Map<String, String> parms) {
|
||||
this.parms = parms;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.ljsd.redis;
|
|||
|
||||
public interface RedisKey {
|
||||
String TOKEN = "JL_TOKEN";
|
||||
String LOGIN_TOKEN = "JL_LOGIN_TOKEN";
|
||||
|
||||
/**
|
||||
* 最近登录服务器列表
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.ljsd.util;
|
||||
|
||||
import com.ljsd.controller.GetUserController;
|
||||
import com.ljsd.redis.RedisApp;
|
||||
|
||||
import java.util.Properties;
|
||||
|
|
@ -28,5 +29,6 @@ public class BaseGlobal {
|
|||
public void init() {
|
||||
mongoDBPool = new MyMongoDBPool();
|
||||
redisApp = new RedisApp();
|
||||
GetUserController.initLanState();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
package com.ljsd.util;
|
||||
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
public class MD5Util {
|
||||
|
||||
public static final String salt = "d13b3e8ef74bf72d8aafce3a1c8672a0";
|
||||
|
||||
public static String encrypByMd5(String context) {
|
||||
try {
|
||||
MessageDigest md = MessageDigest.getInstance("MD5");
|
||||
md.update(context.getBytes());//update处理
|
||||
byte [] encryContext = md.digest();//调用该方法完成计算
|
||||
|
||||
int i;
|
||||
StringBuffer buf = new StringBuffer("");
|
||||
for (int offset = 0; offset < encryContext.length; offset++) {//做相应的转化(十六进制)
|
||||
i = encryContext[offset];
|
||||
if (i < 0) i += 256;
|
||||
if (i < 16) buf.append("0");
|
||||
buf.append(Integer.toHexString(i));
|
||||
}
|
||||
|
||||
return buf.toString().toLowerCase();
|
||||
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(MD5Util.encrypByMd5("pc2222" + salt));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package com.ljsd.util;
|
||||
|
||||
public class StringUtils {
|
||||
|
||||
|
||||
public static boolean checkIsEmpty(String source){
|
||||
if(source == null || "".equals(source))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean checkIsNumberOrChar(String source){
|
||||
return source.matches("[a-zA-Z0-9]+");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -25,4 +25,6 @@ redis_maxTotal = 10
|
|||
redis_minIdle = 3
|
||||
redis_maxWaitMillis = 20
|
||||
redis_maxIdle = 5
|
||||
redis_testOnBorrow = false
|
||||
redis_testOnBorrow = false
|
||||
|
||||
isTestLan = 1
|
||||
|
|
@ -20,6 +20,36 @@
|
|||
<url-pattern>/index</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>updateNotice</servlet-name>
|
||||
<servlet-class>com.ljsd.controller.RoutePublishNoticeController</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>updateNotice</servlet-name>
|
||||
<url-pattern>/updateNotice</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>publishNotice</servlet-name>
|
||||
<servlet-class>com.ljsd.controller.PublishNoticeController</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>publishNotice</servlet-name>
|
||||
<url-pattern>/publishNotice</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>getNotice</servlet-name>
|
||||
<servlet-class>com.ljsd.controller.GetNoticeController</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>getNotice</servlet-name>
|
||||
<url-pattern>/getNotice</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>getServerList</servlet-name>
|
||||
<servlet-class>com.ljsd.controller.GetServerListController</servlet-class>
|
||||
|
|
@ -50,6 +80,27 @@
|
|||
<url-pattern>/getUserInfo</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>registerUser</servlet-name>
|
||||
<servlet-class>com.ljsd.controller.UserRegisterController</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>registerUser</servlet-name>
|
||||
<url-pattern>/registerUser</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
|
||||
<servlet>
|
||||
<servlet-name>userLogin</servlet-name>
|
||||
<servlet-class>com.ljsd.controller.UserLoginController</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>userLogin</servlet-name>
|
||||
<url-pattern>/userLogin</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>serverList</servlet-name>
|
||||
<servlet-class>com.ljsd.controller.ServerListController</servlet-class>
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
<div id="login">
|
||||
<h1 style="color: #000000" onresize="50">《戒灵》添加服务器</h1>
|
||||
<div id="form">
|
||||
<form action="regist" method="post">
|
||||
<form action="regist" method="post" accept-charset="UTF-8">
|
||||
<p>name: <input type="text" name="name" placeholder="请输入游戏服务器名字" required /></p>
|
||||
<p>ip: <input type="text" name="ip" pattern="(\d+)\.(\d+)\.(\d+)\.(\d+)" placeholder="请输入服务器IP地址" required /></p>
|
||||
<p>port: <input type="text" value="9000" name="port" pattern="[0-9]{0,6}" placeholder="请输入端口号" required /></p>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<html>
|
||||
<STYLE type="text/css">
|
||||
#publish {
|
||||
width: 400px;
|
||||
height: 280px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 20%;
|
||||
margin-left: -200px;
|
||||
margin-top: -140px;
|
||||
border: 1px;
|
||||
/* background-color: #befff1;*/
|
||||
align: center;
|
||||
}
|
||||
|
||||
#form {
|
||||
width: 300px;
|
||||
height: 160px;
|
||||
position: relative;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -150px;
|
||||
margin-top: -80px;
|
||||
}
|
||||
</STYLE>
|
||||
|
||||
<head>
|
||||
<title>《戒灵》发布公告</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="publish">
|
||||
<h1 style="color: #000000" onresize="50">《戒灵》发布公告</h1>
|
||||
<div id="form">
|
||||
<form action="publishNotice" method="post" accept-charset="UTF-8">
|
||||
<p>name: <input type="text" name="title" placeholder="游戏公告标题" required /></p>
|
||||
<p>name: <input type="text" name="content" placeholder="游戏公告内容" required /></p>
|
||||
<input type="submit" value="Submit"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue