Handle mysqli errors

- Handle mysql errors that are no longer silenced per default for new php versions
- Handled error when log file cannot be created
This commit is contained in:
foin137
2023-11-05 15:44:24 +01:00
parent 77b11c0ac2
commit 93b38cfc47
2 changed files with 78 additions and 46 deletions

View File

@@ -143,8 +143,14 @@ p#liste {
else else
{ {
//Schauen, ob es auch einen Eintrag zu diesem Spiel in der Datenbank gibt... //Schauen, ob es auch einen Eintrag zu diesem Spiel in der Datenbank gibt...
$alleres = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); $spiel_existiert = True;
if(isset($alleres->num_rows)) try{
$alleres = $mysqli->Query("SELECT * FROM $spielID"."_spieler");
}
catch (Exception $e) {
$spiel_existiert = False;
}
if($spiel_existiert && isset($alleres->num_rows))
{ {
//Schauen, ob es auch mich als Spieler gibt und meine verifizierungsnr stimmt //Schauen, ob es auch mich als Spieler gibt und meine verifizierungsnr stimmt
$spielerResult = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID AND verifizierungsnr = ".(int)$_COOKIE['verifizierungsnr']); $spielerResult = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $eigeneID AND verifizierungsnr = ".(int)$_COOKIE['verifizierungsnr']);
@@ -1513,8 +1519,14 @@ p#liste {
} }
$spielID = rand(10000,99999); $spielID = rand(10000,99999);
//nachschauen, ob ein Spiel mit dieser Nummer bereits existiert //nachschauen, ob ein Spiel mit dieser Nummer bereits existiert
$res = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); $existiert = False;
if(isset($res->num_rows)){ try {
$res = $mysqli->Query("SELECT * FROM $spielID"."_spieler");
}
catch (mysqli_sql_exception $e){
$existiert = True;
}
if(!$existiert && isset($res->num_rows)){
//Tabelle existiert //Tabelle existiert
}else{ }else{
@@ -1635,8 +1647,14 @@ p#liste {
if ($_POST['ihrName'] != "" && strpos($_POST['ihrName'],"$")===false && strpos($_POST['ihrName'],";")===false && strpos($_POST['ihrName'],'"')===false && strpos($_POST['ihrName'],"'")===false && strpos($_POST['ihrName'],"=")===false) if ($_POST['ihrName'] != "" && strpos($_POST['ihrName'],"$")===false && strpos($_POST['ihrName'],";")===false && strpos($_POST['ihrName'],'"')===false && strpos($_POST['ihrName'],"'")===false && strpos($_POST['ihrName'],"=")===false)
{ {
//Name wurde eingegeben. Existiert auch ein Spiel dieser Nummer? //Name wurde eingegeben. Existiert auch ein Spiel dieser Nummer?
$res = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); $existiert = False;
if(isset($res->num_rows)) try{
$res = $mysqli->Query("SELECT * FROM $spielID"."_spieler");
}
catch(mysqli_sql_exception $e){
$existiert = True;
}
if(!$existiert && isset($res->num_rows))
{ {
//Ein Spiel dieser Nummer existiert! //Ein Spiel dieser Nummer existiert!
$verboteneNamen = array("niemanden","niemand","keinen","keiner","dorfbewohner","werwolf","seher","seherin","hexe","hexer","jäger","amor","beschützer","paranormaler ermittler","lykantroph","lykantrophin","spion","spionin","mordlustiger","mordlustige","pazifist","pazifistin","alter mann","alter","alte","alte frau","die alten","alten"); $verboteneNamen = array("niemanden","niemand","keinen","keiner","dorfbewohner","werwolf","seher","seherin","hexe","hexer","jäger","amor","beschützer","paranormaler ermittler","lykantroph","lykantrophin","spion","spionin","mordlustiger","mordlustige","pazifist","pazifistin","alter mann","alter","alte","alte frau","die alten","alten");
@@ -1645,6 +1663,7 @@ p#liste {
$stmt->bind_param('s',$_POST['ihrName']); $stmt->bind_param('s',$_POST['ihrName']);
$stmt->execute(); $stmt->execute();
$nameRes = $stmt->get_result(); $nameRes = $stmt->get_result();
$stmt->close();
if ($nameRes->num_rows <= 0 && !in_array(strtolower($_POST['ihrName']),$verboteneNamen)) if ($nameRes->num_rows <= 0 && !in_array(strtolower($_POST['ihrName']),$verboteneNamen))
{ {
//Name gültig //Name gültig
@@ -1696,7 +1715,6 @@ p#liste {
{ {
echo "<p class='error' >Der angegebene Name ist bereits vorhanden oder ungültig</p>"; echo "<p class='error' >Der angegebene Name ist bereits vorhanden oder ungültig</p>";
} }
$stmt->close();
} }
else else
{ {

View File

@@ -30,8 +30,14 @@ function loescheAlteSpiele($mysqli)
for ($i = 10000; $i<= 99999; $i++) for ($i = 10000; $i<= 99999; $i++)
{ {
$alleres = $mysqli ->Query("SELECT * FROM $i"."_game"); $existiert = True;
if(isset($alleres->num_rows)) try{
$alleres = $mysqli ->Query("SELECT * FROM $i"."_game");
}
catch (mysqli_sql_exception $e){
$existiert = False;
}
if($existiert && isset($alleres->num_rows))
{ {
$temp = $alleres->fetch_assoc(); $temp = $alleres->fetch_assoc();
if ($temp['letzterAufruf'] < $zeitpunkt) if ($temp['letzterAufruf'] < $zeitpunkt)
@@ -1658,41 +1664,45 @@ function writeGameToLog($mysqli)
$spielID = $_COOKIE['SpielID']; $spielID = $_COOKIE['SpielID'];
$fileName = "log/Werwolf_log_".date("Y_m").".log"; $fileName = "log/Werwolf_log_".date("Y_m").".log";
$myfile = fopen($fileName, "a"); $myfile = fopen($fileName, "a");
fwrite($myfile,"\n--- SPIEL BEENDET --- \n"); if ($myfile){
fwrite($myfile,"SpielID: $spielID \n"); fwrite($myfile,"\n--- SPIEL BEENDET --- \n");
fwrite($myfile,"SpielEnde: ".date("d.m.Y, H:i:s")."\n"); fwrite($myfile,"SpielID: $spielID \n");
//Alle Spieler hineinschreiben: fwrite($myfile,"SpielEnde: ".date("d.m.Y, H:i:s")."\n");
fwrite($myfile,"Spieler:\n"); //Alle Spieler hineinschreiben:
$playerQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler"); fwrite($myfile,"Spieler:\n");
while ($temp = $playerQ->fetch_assoc()) $playerQ = $mysqli->Query("SELECT * FROM $spielID"."_spieler");
{ while ($temp = $playerQ->fetch_assoc())
fwrite($myfile,$temp['name']."\n"); {
} fwrite($myfile,$temp['name']."\n");
fwrite($myfile,"Spielverlauf:\n"); }
$gameAssoc = gameAssoc($mysqli); fwrite($myfile,"Spielverlauf:\n");
$mitUmbruch = str_replace("<br>","\n",$gameAssoc['log']); $gameAssoc = gameAssoc($mysqli);
fwrite($myfile,$mitUmbruch); $mitUmbruch = str_replace("<br>","\n",$gameAssoc['log']);
fwrite($myfile,$mitUmbruch);
//Schreibe noch die Überlebenden //Schreibe noch die Überlebenden
fwrite($myfile,"Die Überlebenden:\n"); fwrite($myfile,"Die Überlebenden:\n");
$lebendQuery = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1"); $lebendQuery = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE lebt = 1");
while ($temp = $lebendQuery->fetch_assoc()) while ($temp = $lebendQuery->fetch_assoc())
{ {
fwrite($myfile,$temp['name']."(".nachtidentitaetAlsString($temp['nachtIdentitaet'],$mysqli).")\n"); fwrite($myfile,$temp['name']."(".nachtidentitaetAlsString($temp['nachtIdentitaet'],$mysqli).")\n");
}
fwrite($myfile,"--- ENDE DES SPIELLOGS ---\n");
fclose($myfile);
} }
fwrite($myfile,"--- ENDE DES SPIELLOGS ---\n");
fclose($myfile);
} }
function writeGameToLogSpielErstellen($mysqli, $spielID, $name) function writeGameToLogSpielErstellen($mysqli, $spielID, $name)
{ {
$fileName = "log/Werwolf_log_".date("Y_m").".log"; $fileName = "log/Werwolf_log_".date("Y_m").".log";
$myfile = fopen($fileName, "a"); $myfile = fopen($fileName, "a");
fwrite($myfile,"\n--- NEUES SPIEL ERSTELLT --- \n"); if ($myfile){
fwrite($myfile,"SpielID: $spielID \n"); fwrite($myfile,"\n--- NEUES SPIEL ERSTELLT --- \n");
fwrite($myfile,"Zeit: ".date("d.m.Y, H:i:s")."\n"); fwrite($myfile,"SpielID: $spielID \n");
fwrite($myfile,"Name des Erstellers: $name \n"); fwrite($myfile,"Zeit: ".date("d.m.Y, H:i:s")."\n");
fclose($myfile); fwrite($myfile,"Name des Erstellers: $name \n");
fclose($myfile);
}
} }
function checkeSiegbedingungen($mysqli) function checkeSiegbedingungen($mysqli)
@@ -1813,11 +1823,13 @@ function setBereit($mysqli,$spielerID,$bereit)
function gameAssoc($mysqli) function gameAssoc($mysqli)
{ {
$spielID = $_COOKIE['SpielID']; $spielID = $_COOKIE['SpielID'];
if ($gameRes = $mysqli->Query("SELECT * FROM $spielID"."_game")) try{
{ if ($gameRes = $mysqli->Query("SELECT * FROM $spielID"."_game"))
$gameA = $gameRes->fetch_assoc(); {
return $gameA; $gameA = $gameRes->fetch_assoc();
} return $gameA;
}
}catch(mysqli_sql_exception $e) {}
return false; return false;
} }
@@ -1835,11 +1847,13 @@ function getName($mysqli, $spielerID)
//Gibt den Namen des Spielers mit der $spielerID zurück //Gibt den Namen des Spielers mit der $spielerID zurück
$spielID = $_COOKIE['SpielID']; $spielID = $_COOKIE['SpielID'];
$spielerID = (int)$spielerID; $spielerID = (int)$spielerID;
if ($res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $spielerID")) try{
{ if ($res = $mysqli->Query("SELECT * FROM $spielID"."_spieler WHERE id = $spielerID"))
$temp = $res->fetch_assoc(); {
return $temp['name']; $temp = $res->fetch_assoc();
} return $temp['name'];
}
} catch(mysqli_sql_exception $e) {}
return "Unknown"; return "Unknown";
} }