maxi-koch-de
Mitglied
Hallo liebe Tutorialjaner,
Ich habe folgendes Problem mit dem Tutorial:
Ich habe wie es im Tutorial Teil 1 die PHP codes in Einer datei erstellt der Erste fehler war schnell behoben da in zeile 43 (Login in die Datenbank) ein Passwort vorhanden sein muss! So danach kamm leider eine lehre zeile habe alles mit XAMPP auf meinem PC (Also imprinziep Home server) hoch geladen.
Jetzt kommt aber eine leere seite im quell text steht leider NIX drin:
Vielen dank Schon mal in voraus!
SRY wegen den schreib fehlern musste es sehr schnell tippen da ich eine ganze seite noch fertigen muss mfg
maxi-koch-de
maxi-koch.de
Ich habe folgendes Problem mit dem Tutorial:
Ich habe wie es im Tutorial Teil 1 die PHP codes in Einer datei erstellt der Erste fehler war schnell behoben da in zeile 43 (Login in die Datenbank) ein Passwort vorhanden sein muss! So danach kamm leider eine lehre zeile habe alles mit XAMPP auf meinem PC (Also imprinziep Home server) hoch geladen.
Jetzt kommt aber eine leere seite im quell text steht leider NIX drin:
PHP:
<?php
class Game {
/**
* Id des Nutzers
*/
private $Id = NULL;
/**
* Name des Nutzers
*/
private $Name = NULL;
/**
* Die aktuelle Goldmenge im Besitz des Nutzers
*/
private $CurGold = NULL;
/**
* Die neu hinzugekommene Goldmenge
*/
private $NewGold = NULL;
/**
* Die Erfahrung des Nutzers
*/
private $Xp = NULL;
/**
* Das Level des Nutzers
*/
private $Level = NULL;
/**
* Die benötigte Erfahrung bis zum jeweils nächsten Level
*/
private $XpToNextLevel = array(1 => 3000,2 => 10000,3 => 25000,4 => 55000,5 => 87000,6 => 125000,7 => 200000,8 => 250000,9 => 500000);
/**
* Konstruktor der Klasse, Initialisiert die nötigen Variablen und stellt eine Verbindung zur Datenbank her
* @param $Name Der Name des Nutzers
*/
public function __construct($Name) {
@mysql_connect(localhost, root, **********) OR die('Verbindungsaufbau zu MySQL Fehlgeschlagen!');
@mysql_select_db(bg) OR die('Verbindungsaufbau zur Datenbank Fehlgeschlagen!');
$this->GetUserByName($Name);
}
/**
* Ließt einen Nutzer anhand seines Namens aus der Datenbank aus
* @param $Name Der Name des Nutzers
*/
private function GetUserByName($Name) {
// Leerzeichen entfernen am Anfang und Ende
$Name = trim($Name);
// Sollte ein leerer String übergeben worden sein, FALSE zurückgeben
if(empty($Name))
return FALSE;
// Den Nutzer in der Datenbank suchen, per name
$MySQLResult = @mysql_query('SELECT * FROM user_data WHERE name = "'.mysql_real_escape_string($Name).'" LIMIT 1');
// Wenn der Nutzer nicht vorhanden ist, FALSE zurückgeben
if(!mysql_num_rows($MySQLResult))
return FALSE;
// Die Daten in eine Variable speichern
$Entry = mysql_fetch_object($MySQLResult);
// Die Daten der Speicherfunktion übergeben
$this->SaveData($Entry);
return TRUE;
}
/**
* Speichert die Daten eines Nutzers aus der Datenbank in das Objekt
* @param $Data Die zu speichernden Daten
*/
private function SaveData($Data) {
$this->Id = $Data->id;
$this->Name = $Data->name;
$this->CurGold = $Data->gold;
$this->Xp = $Data->xp;
$this->Level = $Data->level;
return TRUE;
}
/**
* Die Hauptfunktion, durch diese werden alle nötigen Funktionen für das Spiel aufgerufen
*/
public function Game() {
if($this->CheckIp(86400)) { // Wird nur ausgeführt wenn die Ip nicht gebannt ist (Zeitsperre)
// Das neue Gold wird errrechnet (Zufall)
$this->SetGold(1, 100);
// Die neue Xp wird errechnet (PLUS Zufall)
$this->SetXp(300, 1500);
// Prüfen ob Level erhöht werden muss, ggf erhöhen
$this->SetLevel(10);
// Alle Daten speichern
$this->SaveDataToDB();
return TRUE;
} else {
return FALSE;
}
return FALSE;
}
/**
* Errechnet ein zufälligen Wert abhängig vom Level des Nutzers, das zusätzliche Gold des Nutzers
* @param $Min Der Mindestwert an erhaltenem Gold
* @param $Max Der Maximalwert an erhaltenem Gold
*/
private function SetGold($Min, $Max) {
// Einen zufälligen Wert generieren
$this->NewGold = mt_rand($Min, $Max) * $this->Level;
// Die Goldmenge erhöhen
$this->CurGold += $this->NewGold;
return TRUE;
}
/**
* Setzt die Xp des Nutzers um einen zufälligen Wert nach oben
* @param $Min Der Mindestwert an erhalterner Erfahrung
* @param $Max Der Maximalwert an erhaltener Erfahrung
*/
private function SetXp($Min, $Max) {
$this->Xp += mt_rand($Min, $Max);
return TRUE;
}
/**
* Setzt das Level des Nutzers fest, anhand eines vorher initialisierten arrays
* @param $MaxLevel Das höchste erreichbare Level
*/
private function SetLevel($MaxLevel) {
if(($this->Level < $MaxLevel) && ($this->Xp >= $this->XpToNextLevel[$this->Level]))
$this->Level++;
return TRUE;
}
/**
* Prüft ob die Ip des aktuellen Besuchers bereits in der Datenbank gespeichert ist, ggf wird sie vorher gelöscht
* @para $DeleteAfter Nach wie vielen Sekunden die Ips gelöscht werden
*/
private function CheckIp($DeleteAfter) {
if($this->GetIps($DeleteAfter))
return FALSE; // Wenn GetIps TRUE zurück gibt, ist die Ip vorhanden
else
return TRUE; // Wenn GetIps FALSE zurück gibt, ist die Ip nicht vorhanden
}
/**
* Sucht die Ips des aktuellen Besuchers in der Datenbank
* @param $DeleteAfter Nach wie viele Sekunden die Ips gelöscht werden
*/
private function GetIps($DeleteAfter) {
// Die alten Ips zurerst löschen
$this->DeleteOldIps($DeleteAfter);
// Zeile(n) mit der Ip des aktuellen Besuchers auslesen
$MySQLResult = @mysql_query('SELECT * FROM ip_ban WHERE ip_adress = "'.mysql_real_escape_string($_SERVER['REMOTE_ADDR']).'"');
if(mysql_num_rows($MySQLResult))
return TRUE; // Wenn mindestens 1 Zeile vorhanden ist, TRUE zurückgeben
else
return FALSE; // Wenn keine Zeile vorhanden ist (0) FALSE zurückgeben
}
/**
* Löscht Ips die länger als die vorgegebene Zeit in der Datenbank stehen
* @param $DeleteAfter Nach wie viele Sekunden die Ips gelöscht werden
*/
private function DeleteOldIps($DeleteAfter) {
$MySQLResult = @mysql_query('DELETE FROM ip_ban WHERE ((update_time + '.(int)$DeleteAfter.') < NOW());');
return TRUE;
}
/**
* Bannt eine Ip, dh speichert sie in die Datenbank
*/
private function BanIp() {
$MySQLResult = @mysql_query('INSERT INTO ip_ban (ip_adress) VALUE ("'.mysql_real_escape_string($_SERVER['REMOTE_ADDR']).'")');
return TRUE;
}
/**
* Speichert alle Daten in die Datenbank
*/
private function SaveDataToDB() {
// Die Ip des aktuellen Besuchers bannen (in die Datenbank speichern)
$this->BanIp();
// Die Daten in der Klasse speichern
$MySQLResult = @mysql_query('UPDATE user_data SET gold = '.(int)$this->CurGold.', xp = '.(int)$this->Xp.', level = '.(int)$this->Level.' WHERE id = '.(int)$this->Id);
return TRUE;
}
/**
* Zum ausgeben der Privaten Variablen, magische Methode, wird nicht direkt aufgerufen
* @param $Name der Name der auszugebenen Variablen
*/
public function __get($Name) {
return $this->$Name;
}
}
?>
Vielen dank Schon mal in voraus!
SRY wegen den schreib fehlern musste es sehr schnell tippen da ich eine ganze seite noch fertigen muss mfg
maxi-koch-de
maxi-koch.de