PHP Semantik, Bug fixes setup script

selberbauer

Captain
Registriert
Juni 2009
Beiträge
3.604
Hallo,
ich habe ein setup script geschrieben, welches ich bei zukünftigen Projekten verwenden würde.
Dabei soll das Script die MySQL Benutzerdaten abfragen und diese in eine conf.php schreiben.

Momentan kämpfe ich mit folgenden Problemen:
1. Script schreibt die conf nicht mit fhandle (liegt das an den Rechten unter Unix?)
2. Wenn das schreiben der conf.php fehlschlägt, gibt er den Code aus:
2.1 Zeilenumbrüche funktionieren nicht
2.2 Er überträgt die MySQL Daten nicht ($hostname, $password, $username, $database)
2.3 Ich würde den Code gerne in einer Art "Quote" stecken, muss ich dafür mit <div> und css arbeiten?

PHP:
<?php

/** step 0 **/
if(file_exists('config.php')) {
	$step_0 = FALSE;
} else {
	$step_0 = TRUE;
}

/** step 2 **/
if(isset($_POST['hostname'], $_POST['username'], $_POST['password'], $_POST['database'])) {
	$hostname = $_POST['hostname'];
	$username = $_POST['username'];
	$password = $_POST['password'];
	$database = $_POST['database'];
	$db = new mysqli($hostname, $username, $password, $database);
	if(mysqli_connect_errno()) {
		$step_2 = FALSE;
	} else {
		$step_2 = TRUE;
		$db->close();
	}
} else {
	$step_2 = FALSE;
}

/** step 3 **/
$connection_data = "define('HOST', $hostname);\r\ndefine('USER', $username);\r\ndefine('PASS', $password);\r\ndefine('DATA', $database);";
	$handle = fopen('config.php', 'w');
	fwrite($handle, $connection_data);
	fclose($handle);
if(file_exists('config.php')) {
	$step_3 = TRUE;
} else {
	$step_3 = FALSE;
}

/** template engine **/
if(4 > $_GET['step']) {
	$step = $_GET['step'];
} else {
	$step = 0;
}

include('header.tpl');
switch($step) {
	case 0:
		if($step_0 == TRUE) {
			include('step_0a.tpl');
		} else {
			include('step_0b.tpl');
		}
		break;

	case 1:
			include('step_1a.tpl');
		break;
		
	case 2:
		if($step_2 == TRUE) {
			include('step_2a.tpl');
		} else {
			include('step_2b.tpl');
		}
		break;
	
	case 3:
		if($step_3 == TRUE) {
			include('step_3a.tpl');
		} else {
			include('step_3b.tpl');
			echo $connection_data;
		}
		break;
}
include('footer.tpl');

?>
 
Die Variablen sollen ja interpretiert werden, sodass ich folgendes in der 'conf.php' stehen habe:

PHP:
<?php

define('HOST', 'localhost');
define('USER', 'user');
define('PASS', 'pass');
define('DATABASE', 'test');

?>

Nähmlich die abgefragten Verbindungsdaten in der Config.
Oder habe ich dich missverstanden?
 
Unabhängig vom dem was der Code machen soll ein Hinweis meinerseits.

Versuch dir einen mehr OOP Ansatz zu überlegen. Bei solchen PHP code denk ich mir immer wieder typischer PHP code ohne OOP. Das ding ist langfristig schwer wart- erweiterbar.
 
An sich will ich mich auch immer mehr zu OOP hin entwickeln.
Ich habe nur total keine Ahnung:
a) Wann OOP sinnvoll ist
b) Wie ich es umsetzte.

Ich hätte so gesehen keine Idee, wie das Script auf OOP umschreibe, außer einige vorgefertigte Funktionionen in eine Klasse zu stecken.

Gruß
 
Zurück
Oben