Show sourcecode
The following files exists in this folder. Click to view.
admin.php
bilder/
checkUpdates.php
confirmPassword.php
confirmSignIn.php
createadmin.php
endScreen.php
getBoard.php
getChat.php
getHand.php
getTurnPlayer.php
lobbies.php
logIn.php
play.php
playCard.php
signIn.php
start.php
startsida.php
style.css
tables.php
update.php
updatePassword.php
waitInfo.php
waitingRoom.php
waitingRoom.php
179 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
<?php
/** @var PDO $dbconn */
include ("start.php");
// Sparar spelarens id
$playerid = $_COOKIE["playerid"];
function addGamePlayer(&$dbconn, $playerid, $gameid) {
// Hämta spelargränsen för spelet
$sql = "SELECT * FROM JassGames WHERE gameid=?";
$stmt = $dbconn->prepare($sql);
$data = array($gameid);
$stmt->execute($data);
if ($res = $stmt->fetch(PDO::FETCH_ASSOC)) {
$maxplayers = $res["maxplayers"];
// Beräkna hur många spelare som finns i spelet
$playerAmount = 0;
$sql = "SELECT * FROM GamePlayers WHERE gameid=?";
$stmt = $dbconn->prepare($sql);
$data = array($gameid);
$stmt->execute($data);
while ($stmt->fetch(PDO::FETCH_ASSOC)) {
$playerAmount++;
}
if ($playerAmount < $maxplayers) {
// Lägger till spelaren i spelet om det finns plats
$sql = "INSERT INTO GamePlayers (playerid, gameid)
VALUES (?, ?)";
$stmt = $dbconn->prepare($sql);
$data = array($playerid, $gameid);
$stmt->execute($data);
} else {
// Annars omdirigeras spelaren till startsidan
header("location: startsida.php");
}
}
}
// Bestämmer om spelaren redan är i ett spel
function isPlaying(&$dbconn, $playerid) {
$sql = "SELECT * FROM GamePlayers WHERE playerid=?";
$stmt = $dbconn->prepare($sql);
$data = array($playerid);
$stmt->execute($data);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
// Körs om användaren försöker skapa en lobby
if (isset($_POST["create"]) && isset($_POST["maxplayers"])) {
$maxplayers = $_POST["maxplayers"];
// isprivate är 1 om den är privat, annars är den 0
$isprivate = 0;
if (isset($_POST["isprivate"])) {
$isprivate = 1;
}
// Genererar en slumpmässig kod
$code = htmlspecialchars(rand(0, 999999));
try {
if (!isPlaying($dbconn, $playerid)) {
// Skapa lobbyn om användaren inte har en annan lobby
$sql = "INSERT INTO JassGames (maxplayers, trumf, isprivate, ownerid, code)
VALUES (?, ?, ?, ?, ?)";
$stmt = $dbconn->prepare($sql);
$data = array($maxplayers, "0", $isprivate, $playerid, $code);
$stmt->execute($data);
$gameid = $dbconn->lastInsertId();
// Lägg till användaren i GamePlayers
addGamePlayer($dbconn, $playerid, $gameid);
}
} catch (PDOException $e) {
echo $e->getMessage();
}
} else if (isset($_POST["join"]) && isset($_POST["id"])) {
// Om spelaren vill joina ett spel
$gameid = $_POST["id"];
$sql = "SELECT * FROM JassGames WHERE gameid=?";
$stmt = $dbconn->prepare($sql);
$data = array($gameid);
$stmt->execute($data);
// Finns spelet och spelaren inte tillhör ett spel, lägg till användaren i GamePlayers
if ($game = $stmt->fetch(PDO::FETCH_ASSOC) && !isPlaying($dbconn, $playerid)) {
addGamePlayer($dbconn, $playerid, $gameid);
}
} else if (isset($_POST["code"])) {
// Om spelaren vill joina ett spel med en kod
$formCode = htmlspecialchars($_POST["code"]);
$sql = "SELECT * FROM JassGames WHERE code=?";
$stmt = $dbconn->prepare($sql);
$data = array($formCode);
$stmt->execute($data);
// Finns spelet och spelaren inte tillhör ett spel, lägg till användaren i GamePlayers
if ($game = $stmt->fetch(PDO::FETCH_ASSOC) && !isPlaying($dbconn, $playerid)) {
$gameid = $game["gameid"];
addGamePlayer($dbconn, $playerid, $gameid);
} else {
// Annars omdirigeras spelaren till startsidan
header("location: startsida.php");
}
}
try {
$sql = "SELECT * FROM GamePlayers
LEFT JOIN JassGames ON GamePlayers.gameid=JassGames.gameid
WHERE playerid=?";
$stmt = $dbconn->prepare($sql);
$data = array($playerid);
$stmt->execute($data);
if ($res = $stmt->fetch(PDO::FETCH_ASSOC)) {
$id = $res["gameid"];
$code = $res["code"];
$gameid = $res["gameid"];
// Bestämmer om knappen för att lämna endast ska lämna spelet eller ta bort det
$formAction = "exitgame";
$text = "Leave";
if ($res["playerid"] == $res["ownerid"]) {
$formAction = "deletegame";
$text = "Delete";
}
echo "<form method='post' action='startsida.php'>
<input type='hidden' name='gameid' value='$gameid'>
<input type='submit' name='$formAction' value='$text game'>
</form>";
}
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
<p>Kod: <?= $code ?></p>
<div id="updateDiv"></div>
<script>
async function update() {
object = await fetch("waitInfo.php?gameid=<?= $id ?>&playerid=<?= $playerid ?>");
text = await object.text();
if (text == "1") {
window.location.replace("play.php");
} else if (text == "2") {
window.location.replace("startsida.php");
} else {
document.getElementById("updateDiv").innerHTML = text;
}
}
setInterval(update, 1000);
update();
</script>
</body>
</html>