Rachus: MySQL Loginsystem

Beitrag lesen

Hallo nochmal,

ich habe mir jetzt wenigstens schon einmal die Konfigurationseinlesung fertiggestellt und wollte Euch jetzt einfach mal fragen, ob das so okay ist.

Insbesondere interessiert mich, ob ihr die verwendeteten Zugriffsarten und statischen Funktionen auch so angewendet hättet.
Auch würde ich gerne wissen, ob man auf statische Methoden auch anders als mit KLASSENNAME::METHODENNAME() zugreifen kann.

Dann poste ich einfach einmal meine Klasse (wie gehabt: nur das Einlesen der Konfiguration ist fertig):

<?php  
class sUserAuthSystem  
{  
	private static $settings=null;  
	private $mysql;  
	  
	public static function prepare_settings()  
	{  
		if (sUserAuthSystem::$settings==null)  
		{  
			$sections_to_escape=array('USER_TABLE', 'LOGIN_TABLE', 'LOGIN_DENIED_TABLE', 'RIGHTS_TABLE');  
			$escape_amount=4;  
			  
			sUserAuthSystem::$settings=parse_ini_file(__DIR__.'/suas.ini', true);  
			  
			for ($i=0; $i<$escape_amount; ++$i)  
			{  
				$section_length=count(sUserAuthSystem::$settings[$sections_to_escape[$i]]);  
				  
				foreach (sUserAuthSystem::$settings[$sections_to_escape[$i]] as $key => $value)  
				{  
					sUserAuthSystem::$settings[$sections_to_escape[$i]][$key]=sUserAuthSystem::escape_identifier($value);  
				}  
			}  
			  
			if (sUserAuthSystem::$settings['OTHER']['suas_relative_paths'])  
			{  
				sUserAuthSystem::path_correction(sUserAuthSystem::$settings['OUTPUT']['mysql_connection_fault_file']);  
				sUserAuthSystem::path_correction(sUserAuthSystem::$settings['OUTPUT']['login_form_file']);  
			}  
		}  
	}  
	  
	public static function escape_identifier(&$string)  
	{  
		return '`'.str_replace('`', '``', $string).'`';  
	}  
	  
	private static function path_correction(&$path)  
	{  
		$path=__DIR__.'/'.$path;  
	}  
	  
	private static function connect_error()  
	{  
		if (sUserAuthSystem::$settings['OUTPUT']['use_http_status']) header($_SERVER['SERVER_PROTOCOL'].' 500 Internal Server Error');  
		  
	}  
	  
	public function __construct()  
	{  
		$this::prepare_settings();  
		@$this->mysql=new MySQLi($this::$settings['MYSQL']['name'], $this::$settings['MYSQL']['name'], $this::$settings['MYSQL']['password'], $this::$settings['MYSQL']['database']);  
		if ($this->mysql->connect_error) $this::connect_error();  
		  
		  
	}  
}  
?>

Wie Ihr sehen könnt, habe ich auch beschlossen, das escapen der Indentifier bereits in der Einlesefunktion durchzuführen - dann muss ich bei den SQL-Anfragen nicht mehr daran denken.

Bitte sagt mir, was ihr davon haltet und klärt mich bitte auf!

Schönen Abend

Rachus