SantaCruze
Erfahrenes Mitglied
Moin Zusammen
Also ich habe folgendes Problem. Ein bekannter hat mir seinen alten Source Code geschickt von einem BG, nun hat er eine große DB Klasse sowie alle funktionen bzw. Methoden in einer include datei reingepackt, heißt summa summaru 8500 Zeilen Code alleine an Funktionen. Nun habe ich gestern 3 Stunden lang versucht das ganze auseinander zu pflücken und die Funktionen wirklich nur für den jeweiligen Scriptaufruf einzubauen ,was allerdings scheiterte da mir die Klasse immer wieder Error Meldungen ausgespuckt hat. Ich hoffe mir kann jmd helfen das Ding wenigstens ansatzweise zu verstehen wie ich das auseinander zu bauen habe.
Ich poste hier nur einen kleinen Teil damit ihr wisst was ich meine:
Eine Script datei sähe wie folgt aus:
Was ich bereits versucht habe war, die DB Klasse (ganz oben in der großen Datei) als Include zu laden, was aber nicht geht weil ich sonst einen "Cannot Declarecl_extended_database" fehler bekomme. Dann habe ich versucht die Funktion so zu splitten das ich in jeder Seite die DB Klasse aber nur mit den funktionen für das Script habe, kam der gleiche Fehler. Ich hoffe jmd kennt sich gut genug damit aus und weiß wie man das beheben kann, notfalls auch ohne die DB Klasse und mittels einfachem db.php connect.
Also ich habe folgendes Problem. Ein bekannter hat mir seinen alten Source Code geschickt von einem BG, nun hat er eine große DB Klasse sowie alle funktionen bzw. Methoden in einer include datei reingepackt, heißt summa summaru 8500 Zeilen Code alleine an Funktionen. Nun habe ich gestern 3 Stunden lang versucht das ganze auseinander zu pflücken und die Funktionen wirklich nur für den jeweiligen Scriptaufruf einzubauen ,was allerdings scheiterte da mir die Klasse immer wieder Error Meldungen ausgespuckt hat. Ich hoffe mir kann jmd helfen das Ding wenigstens ansatzweise zu verstehen wie ich das auseinander zu bauen habe.
Ich poste hier nur einen kleinen Teil damit ihr wisst was ich meine:
PHP:
require("config.inc.php");
class cl_extended_database
{
var $started = false;
var $debug = false;
var $var_sql;
var $var_result;
var $var_error;
var $var_errno;
var $var_link;
var $db_connected = false;
var $db_selected = false;
function __construct()
{
global $CONFIG;
$this->connect($CONFIG["mysql"]["host"], $CONFIG["mysql"]["user"], $CONFIG["mysql"]["pass"]);
$this->select_db($CONFIG["mysql"]["db"]);
}
function connect($host, $user, $password)
{
if ($this->debug) {
echo "cl_database::connect('$host','$user','$password');<br>";
}
$this->var_link = mysql_connect($host, $user, $password);
$this->db_connected = true;
}
function __destruct()
{
if ($this->debug) {
echo "cl_database::__destruct();<br>";
}
@mysql_free_result($this->var_result);
@mysql_close($this->var_link);
}
function select_db($db)
{
if ($this->debug) {
echo "cl_database::select_db();<br>";
}
$db_sel = mysql_select_db($db, $this->var_link);
if (!$db_sel) {
$this->var_sql = "SELECT DB '$db';";
$this->var_error = mysql_error($this->var_link);
$this->var_errno = mysql_errno($this->var_link);
$this->var_result = false; //this->error() == true;
} else {
$this->var_sql = "SELECT DB '$db';";
$this->var_result = true; //this->error() == false;
}
$this->db_selected = !$this->var_result;
}
function query($sql)
{
if ($this->debug) {
echo "cl_database::query('$sql');<br>";
}
// echo "Query: <b>$sql</b><br>";
// echo "cl_database::query('$sql');<br>";
$db_query = new cl_extended_database;
$this->var_sql = trim($sql);
$this->var_result = mysql_query($this->var_sql, $db_query->var_link);
if (!$this->var_result) {
$this->var_errno = mysql_errno($db_query->var_link);
$this->var_error = mysql_error($db_query->var_link);
}
unset($db_query);
}
function error()
{
if ($this->debug) {
echo "cl_database::error();<br>";
}
$tmp = $this->var_result;
$tmp = (bool)$tmp;
$tmp = !$tmp;
return $tmp;
}
function geterror()
{
if ($this->debug) {
echo "cl_database::geterror();<br>";
}
if ($this->error()) {
$str = "<br>\n";
$str .= "Query: <b>" . $this->var_sql . "</b><br>\n";
$str .= "Error: <b>" . $this->var_error . "</b><br>\n";
$str .= "Error Number: <b>" . $this->var_errno . "</b><br>\n";
} else {
$str = "Error: No Error!<br>";
}
return $str;
}
function numrows()
{
if ($this->debug) {
echo "cl_database::numrows();<br>";
}
if ($this->error()) {
$return = -1;
} else {
$return = mysql_num_rows($this->var_result);
}
return $return;
}
function fetch()
{
if ($this->debug) {
echo "cl_database::fetch();<br>";
}
if ($this->error()) {
echo "<br>\nEs trat ein Fehler auf. Bitte überprüfen sie ihr";
echo "MySQL-Query.\n<br>";
$return = null;
} else {
$return = mysql_fetch_array($this->var_result);
}
return $return;
}
function err()
{
if ($this->debug) {
echo "cl_database::err();<br>";
}
if ($this->error()) {
echo $this->geterror();
}
}
function reinit()
{
$this->__destruct();
$this->__construct();
}
function dbclose()
{
$this->__destruct();
}
function start()
{
global $CONFIG;
if (!$this->started) {
if ($this->db_connected == false) {
$this->connect($CONFIG["mysql"]["host"], $CONFIG["mysql"]["user"], $CONFIG["mysql"]["pass"]);
$this->db_connected = true;
}
if ($this->db_selected == false) {
$this->select_db($CONFIG["mysql"]["db"]);
$this->db_selected == $this->error();
}
$this->started = true;
}
}
//Neuen User in die Tabelle "users" schreiben.
function user_insert($name, $password)
{
$this->query("INSERT INTO users (user,pass) VALUES ('$name','$password');");
$this->err();
return $this->error();
}
Eine Script datei sähe wie folgt aus:
PHP:
error_reporting(E_ALL);
require("config.inc.php");
$PATH=$CONFIG['internal']['path'];
require("$PATH/mysql.inc.php");
require("$PATH/config.inc.php");
define('SMARTY_DIR', $CONFIG['internal']['smarty_dir']);
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;
$smarty->assign("CONFIG_game_name",$CONFIG["game"]["name"]);
$smarty->assign("CONFIG_internal_serverpath",$CONFIG["internal"]["serverpath"]);
$smarty->assign("CONFIG_version",$CONFIG["game"]["int_version"]);
session_start();
if(isset($_POST['name']))
{
$db = new cl_extended_database;
if($_POST["name"] == $CONFIG["game"]["admin"] || $db->get_system_lock('wartung', '') == '0')
{
$id = $db->user_get_id($_POST["name"]);
if($id == -1)
{
$smarty->display("login_false.thtml");
die();
}
if($db->user_get_pass($id) != $_POST['pw'])
{
$smarty->display("login_false.thtml");
die();
}
$_SESSION["id"] = $id;
}
else
{
$smarty->display("wartung.thtml");
die();
}
}
if(isset($_SESSION["id"]))
{
if(!isset($db))
{
$db = new cl_extended_database;
}
$id = $_SESSION["id"];
if(!isset($_SESSION["name"]))
{
$_SESSION["name"] = $db->user_get_name($id);
}
if(isset($_GET['gal']) && isset($_GET['sys']) && isset($_GET['plan']))
{
$idp = $db->planets_get_userid($_GET['gal'],$_GET['sys'],$_GET['plan']);
//echo "ID: $id; IDP: $idp<br>";
if($idp == $_SESSION['id'])
{
$_SESSION['coords']['gal'] = $_GET['gal'];
$_SESSION['coords']['sys'] = $_GET['sys'];
$_SESSION['coords']['plan'] = $_GET['plan'];
}
else
{
//Cheater... :-)
echo "<br><br><br><center>Hi Cheater! Sorry - diese Lücke wurde geschlossen :-)</center>";
}
}
else
{
$_SESSION['coords'] = $db->planets_get_coords($_SESSION['id']);
}
$smarty->assign("cv",$_SESSION['coords']);
$smarty->assign("sessionname",session_name());
$smarty->assign("sessionid", session_id());
$smarty->display("login-frame.thtml");
}
else
{
$smarty->display("index.thtml");
}
Was ich bereits versucht habe war, die DB Klasse (ganz oben in der großen Datei) als Include zu laden, was aber nicht geht weil ich sonst einen "Cannot Declarecl_extended_database" fehler bekomme. Dann habe ich versucht die Funktion so zu splitten das ich in jeder Seite die DB Klasse aber nur mit den funktionen für das Script habe, kam der gleiche Fehler. Ich hoffe jmd kennt sich gut genug damit aus und weiß wie man das beheben kann, notfalls auch ohne die DB Klasse und mittels einfachem db.php connect.