Added PHP

This commit is contained in:
MasterGordon 2018-04-13 00:18:05 +02:00
parent 62f982a2b0
commit 0c43dc4efd
13 changed files with 412 additions and 31 deletions

95
css/login.css Normal file
View File

@ -0,0 +1,95 @@
body {
background-image: url("../images/wool.jpg");
}
#login {
position: fixed;
width: 520;
background-color: floralwhite;
font-family: 'Electrolize', sans-serif;
padding-top: 10px;
padding-bottom: 10px;
border-color: #35170B;
border-width: 5;
border-style: solid;
}
#register {
position: fixed;
width: 520;
background-color: floralwhite;
font-family: 'Electrolize', sans-serif;
padding-top: 10px;
padding-bottom: 10px;
border-color: #35170B;
border-width: 5;
border-style: solid;
}
#login_button {
font-family: 'Electrolize', sans-serif;
background-color: #35170B;
color: white;
cursor: pointer;
}
#register_button {
font-family: 'Electrolize', sans-serif;
background-color: #35170B;
color: white;
cursor: pointer;
}
p {
display: block;
text-align: center;
font-size: 1.5em;
color: #35170B;
}
.change {
margin-top: 5px;
display: block;
text-align: center;
font-size: 1em;
color: #35170B;
cursor: pointer;
}
.change:hover {
display: block;
text-align: center;
font-size: 1em;
color: #FF6E35;
}
.form {
width: 400;
margin-left: 60;
font-size: 1.5em;
text-align: center;
border-color: #35170B;
border-width: 1;
border-style: solid;
color: #35170B;
}
.logo {
width: 500;
margin-left: 10;
}
body {
-webkit-touch-callout: none;
/* iOS Safari */
-webkit-user-select: none;
/* Safari */
-khtml-user-select: none;
/* Konqueror HTML */
-moz-user-select: none;
/* Firefox */
-ms-user-select: none;
/* Internet Explorer/Edge */
user-select: none;
/* Non-prefixed version, currently supported by Chrome and Opera */
}

View File

@ -39,6 +39,14 @@ body {
padding: 4;
}
#playerinfo {
position: fixed;
width: 100%;
text-align: right;
top: 0;
color: floralwhite;
}
#selectItem {
position: fixed;
border: 1px, solid, black;

View File

@ -1,7 +1,7 @@
<html>
<head>
<title>Factory</title>
<title>Factory Master</title>
<!-- Google Font -->
<link href="https://fonts.googleapis.com/css?family=Electrolize" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/cssreset.css">
@ -53,7 +53,7 @@
??? Dollar
</span>
<span style="position: fixed;color: white" id="speed"></span>
<div style="margin-left: 250px"><textarea id="textarea"></textarea><button id="save">save</button><button id="load">load</button></div>
<div id="playerinfo"><span id="lastsave">Last Save 10Min ago</span><br><button id="forcesave">Force Save</button><button id="logout">Logout</button></div>
</body>
</html>

93
index.html Normal file
View File

@ -0,0 +1,93 @@
<html>
<head>
<title>Factory Master</title>
<!-- Google Font -->
<link href="https://fonts.googleapis.com/css?family=Electrolize" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/cssreset.css">
<link rel="stylesheet" type="text/css" href="css/login.css">
<link rel="stylesheet" href="jquery-ui/jquery-ui.min.css">
<!-- Libs -->
<script src="js/libs/jquery.js"></script>
<script src="js/libs/copyCSS.js"></script>
<script src="js/libs/js.cookie.js"></script>
<script src="jquery-ui/jquery-ui.min.js"></script>
<!-- Own scripts-->
</head>
<body>
<div id="login">
<img class="logo" draggable="false" src="images/logo.svg"><br><br>
<p>Username:</p><input class="form" id="login_username"></input><br><br>
<p>Password:</p><input class="form" id="login_password" type="password"></input><br><br>
<button class="form" id="login_button">Login</button>
<p class="change">Register?</p>
</div>
<div id="register">
<img class="logo" draggable="false" src="images/logo.svg"><br><br>
<p>Username:</p><input class="form" id="register_username"></input><br><br>
<p>Password:</p><input class="form" id="register_password1" type="password"></input><br><br>
<p>Repeat Password:</p><input class="form" id="register_password2" type="password"></input><br><br>
<button class="form" id="register_button">Register</button>
<p class="change">Login?</p>
</div>
<script>
$(window).resize(function() {
style();
})
$(document).ready(function() {
style();
$("#register").hide()
})
function style() {
var loginMarginTop = (window.innerHeight - $('#login').outerHeight()) / 2
var loginMarginLeft = (window.innerWidth - $('#login').outerWidth()) / 2
$('#login').css('margin-top', loginMarginTop)
$('#login').css('margin-left', loginMarginLeft)
var registerMarginTop = (window.innerHeight - $('#register').outerHeight()) / 2
var registerMarginLeft = (window.innerWidth - $('#register').outerWidth()) / 2
$('#register').css('margin-top', registerMarginTop)
$('#register').css('margin-left', registerMarginLeft)
}
$("#login_button").click(function() {
$.get("php/login.php?username=" + $("#login_username").val() + "&password=" + $("#login_password").val(), function(data) {
if (JSON.parse(data).status == "error") {
$("#login").css("background-color", "red")
} else {
$("#login").css("background-color", "green")
window.location.replace("game.html")
}
})
})
$("#register_button").click(function() {
$("#register_username").css("background-color", "white")
$("#register_password1").css("background-color", "white")
$("#register_password2").css("background-color", "white")
$.get("php/register.php?username=" + $("#register_username").val() + "&password1=" + $("#register_password1").val() + "&password2=" + $("#register_password2").val(), function(data) {
if (JSON.parse(data).status == "error") {
$("#register").css("background-color", "red")
} else if (JSON.parse(data).status == "succes") {
$("#login").css("background-color", "green")
window.location.replace("game.html")
} else {
$("#register_" + JSON.parse(data).status).css("background-color", "red")
}
})
})
$(".change").click(function() {
$("#login").toggle()
$("#register").toggle()
})
$(document).keypress(function(e){
if(e.which == 13){
$("button:visible").click()
}
})
</script>
</body>
</html>

View File

@ -5,6 +5,7 @@ var money = 100
var items = []
var time = 0
var gametime = 0
var timestep = 1000 / 48
var delta = 0
var lastFrameTimeMs = 0
@ -22,14 +23,21 @@ var mode = "none"
var renderItems = true
var playername = "Player"
var lastsave = 0
$(document).ready(function() {
$("#save").click(function() {
$("#forcesave").click(function() {
save()
$("#textarea").val(JSON.stringify(game))
})
$("#load").click(function() {
game = JSON.parse($("#textarea").val())
loadGameData()
$("#logout").click(function() {
$.get("php/logout.php", function(data) {
window.location.replace("index.html")
})
})
$.get("php/playerdata.php", function(data) {
if (JSON.parse(data).status == "nologin")
window.location.replace("index.html")
})
loadGameData()
loadItems()
@ -47,6 +55,7 @@ $(window).on("beforeunload", function() {
function save() {
game = {}
game.money = money
game.gametime = gametime
game.inventory = []
for (var i = 0; i < inventory.items.length; i++) {
game.inventory.push(inventory.items[i].id)
@ -81,16 +90,39 @@ function save() {
}
}
Cookies.set("game", JSON.stringify(game))
$.ajax({
url: 'php/savegame.php',
type: 'POST',
data: {
gamedata: JSON.stringify(game),
"gametime": gametime
},
success: function(result) {
console.log(result)
if (JSON.parse(result).status == "succes") {
lastsave = new Date().getTime()
}
}
});
}
function loadGameData() {
lastsave = new Date().getTime()
//Keine Save Vorhanden
factorys.push(new Factory())
inventory = new Inventory()
//game = Cookies.get("game")
$.get("php/playerdata.php", function(data) {
if (JSON.parse(data).gametime != undefined) {
game = JSON.parse(data)
} else {
game = 0
}
if (game != 0) {
//game = JSON.parse(game)
console.log("Loading Game")
money = game.money
gametime = game.gametime
inventory = new Inventory()
factorys = []
for (var i = 0; i < game.inventory.length; i++) {
@ -115,6 +147,7 @@ function loadGameData() {
}
}
}
});
}
function loadItems() {
@ -177,6 +210,7 @@ var tick = []
function gametick(timestep) {
//time gibt an in den Wievielten von 40 Ticks man sich befindet
time++
gametime++
time = time % 48
//Wird 40 mal in einer Sekunde aufgerufen
for (var i = 0; i < factorys.length; i++) {
@ -189,6 +223,9 @@ function gametick(timestep) {
tick = tick.splice(1)
$("#speed").text("Game Speed: " + ((tick[47] - tick[0] + 30) / 10) + "%")
}
if (Math.round((new Date().getTime() - lastsave) / 60000) > 5 && lastsave != 0) {
save()
}
}
function render() {
@ -293,6 +330,7 @@ function render() {
if (mode == "showmore") {
drawBigInventory(inventory)
}
$('#lastsave').text("last save " + Math.round((new Date().getTime() - lastsave) / 60000) + "min ago")
}
function getItemFormId(id) {

View File

@ -253,7 +253,7 @@ class Quarry extends Tile {
this.hasNoInventory = true
this.cost = [{
"id": 0,
"count": 10000
"count": 5000
}, {
"id": 2,
"count": 50

View File

@ -12,7 +12,11 @@ $(document).ready(function() {
})
function style() {
var screenMarginTop = window.innerHeight - 912
var top = 0
if (window.innerHeight < 910) {
top = 43
}
var screenMarginTop = window.innerHeight - 912 + top
var screenMarginLeft = (window.innerWidth - 1200) / 2
var itemCountMarginTop = screenMarginTop + 624
var infoMarginLeft = screenMarginLeft + 768

View File

@ -47,6 +47,8 @@ function infoDrawRotatedImage(image, x, y, angle) {
}
function formatCount(c) {
if (c == 0)
return 0
for (var pow = 0; pow < lang.numbers.length; pow++) {
if (c / Math.pow(10, pow * 3) >= 1 && c / Math.pow(10, pow * 3) < 1000) {
return round(c / Math.pow(10, pow * 3), 3) + lang.numbers[pow]

View File

@ -1,7 +1,36 @@
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include "mysqldata.php"
?>
<?php
session_start();
$username = $_GET['username'];
$passwort = $_GET['password'];
if( isset($_GET['username']) && isset($_GET['password']) ){
$conn = new mysqli($GLOBALS["sqlservername"], $GLOBALS["sqlusername"], $GLOBALS["sqlpassword"], $GLOBALS["sqldatabase"]);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT password FROM users WHERE username='".$_GET['username']."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if(password_verify($_GET['password'],$row["password"])){
$_SESSION["login"] = "true";
$_SESSION["username"] = $_GET['username'];
echo '{"status": "succes"}';
}else{
//Wrong PW
echo '{"status": "error"}';
}
}
} else {
//Wrong Username
echo '{"status": "error"}';
}
} else {
echo '{"status": "error"}';
}
?>

5
php/logout.php Normal file
View File

@ -0,0 +1,5 @@
<?php
session_start();
session_unset();
session_destroy();
?>

24
php/playerdata.php Normal file
View File

@ -0,0 +1,24 @@
<?php
//error_reporting(E_ERROR | E_WARNING | E_PARSE);
session_start();
include "mysqldata.php";
if(isset($_SESSION["login"])){
if($_SESSION["login"]=="true"){
$conn = new mysqli($GLOBALS["sqlservername"], $GLOBALS["sqlusername"], $GLOBALS["sqlpassword"], $GLOBALS["sqldatabase"]);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT gamedata FROM users WHERE username='".$_SESSION["username"]."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo $row["gamedata"];
}
}
}
}else{
echo '{"status": "nologin"}';
}
?>

48
php/register.php Normal file
View File

@ -0,0 +1,48 @@
<?php
session_start();
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include "mysqldata.php";
$pdo = new PDO('mysql:host=' . $GLOBALS["sqlservername"] . ';dbname=' . $GLOBALS["sqldatabase"], $GLOBALS["sqlusername"], $GLOBALS["sqlpassword"]);
$error = false;
$username = $_GET['username'];
$passwort = $_GET['password1'];
$passwort2 = $_GET['password2'];
if(strlen($username) == 0 || strlen($username) > 15) {
echo '{"status":"username"}';
$error = true;
}
if(strlen($passwort) == 0 && !$error) {
echo '{"status":"password1"}';
$error = true;
}
if($passwort != $passwort2 && !$error) {
echo '{"status":"password2"}';
$error = true;
}
if(!$error) {
$statement = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$result = $statement->execute(array('username' => $username));
$user = $statement->fetch();
if($user !== false) {
echo '{"status":"username"}';
$error = true;
}
}
if(!$error) {
$passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
$statement = $pdo->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
$result = $statement->execute(array('username' => $username, 'password' => $passwort_hash));
if($result) {
$_SESSION["login"] = "true";
$_SESSION["username"] = $_GET['username'];
echo '{"status":"succes"}';
} else {
echo '{"status":"error"}';
}
}
?>

35
php/savegame.php Normal file
View File

@ -0,0 +1,35 @@
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
session_start();
include "mysqldata.php";
$gamedata = $_POST["gamedata"];
$gametime = $_POST["gametime"];
if(isset($_SESSION["login"])){
if($_SESSION["login"]=="true"){
$conn = new mysqli($GLOBALS["sqlservername"], $GLOBALS["sqlusername"], $GLOBALS["sqlpassword"], $GLOBALS["sqldatabase"]);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT gametime FROM users WHERE username='".$_SESSION["username"]."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if( intval($row["gametime"]) < intval($gametime) ){
$sql = "UPDATE users SET gamedata = '". $gamedata ."' WHERE username = '".$_SESSION["username"]."'";
$result = $conn->query($sql);
$sql = "UPDATE users SET gametime = '". $gametime ."' WHERE username = '".$_SESSION["username"]."'";
$result = $conn->query($sql);
echo '{"status": "succes"}';
die();
} else {
echo '{"status": "old"}';
}
}
} else {
//Wrong Username
echo '{"status": "error"}';
}
}
}
?>