Guten Tag,
Ich habe mir vor einiger Zeit das Buch PHP 5.3 und MySQL 5.5 gekauft und versuche nun das dort beschriebene cms nachzucoden.
Mein problem ist, das mir immer errors ausgeworfen werden, daher würde ich darum bitten das mir mal jemand sagt was da falsch ist, ich hab den code selbst schon zig mal überprüft und finde keine fehler!
Standartverzeichnis
-common.php
[PHP]<?php
#Projektpfade (Web und lokaler Pfad)
include(__DIR__.'/paths.php');
#Datenbanksettings und weitere systemweite Einstellungen
require_once PROJECT_DOCUMENT_ROOT.'/settings.php';
#Alle Basis-Klassen einbinden
require_once PROJECT_DOCUMENT_ROOT."/inc/includeAllClasses.php";
#Datenbankobjekt erstellen (wenn nicht bereits erstellt)
if(!isset($GLOBALS['DB']))
$DB = new System\Database\MySQL(DB_SERVER,DB_USER, DB_PASSWORD,DB_
NAME,DB_PORT);
#global verfügbares Session-Objekt.
new System\SessionHandler();
?>[/PHP]
-paths.php
[PHP]<?php
//Definieren des Systempfades
define('PROJECT_DOCUMENT_ROOT',__DIR__);
//Projektname
$project = str_replace($_SERVER['DOCUMENT_ROOT'], '',
str_replace("\\", "/",__DIR__));
//Protokoll der Verbindung (HTTP oder HTTPS)
(!isset($_SERVER['HTTPS']) OR $_SERVER['HTTPS']=='off') ?
$protocol = 'http://' : $protocol = 'https://';
//PROJECT Pfad (für die Verwendung im Web)
define('PROJECT_HTTP_ROOT',
$protocol.$_SERVER['HTTP_HOST'].$project);
?>
[/PHP]
-settings.php
[PHP]<?php
//Fehlerreporting
//error_reporting(E_ALL);
//DEBUG-MODUS (wenn true, wird die Debug-Konsole angezeigt)
define('DEBUG',true);
//DATENBANKVERBINDUNGS-DATEN
define('DB_SERVER',"localhost");
define('DB_PORT',"3306");
define('DB_NAME',"");
//Datenbankbenutzer
define('DB_USER',"");
//Benutzerpasswort
define('DB_PASSWORD',"");
//HTML-TITEL
define('HTML_TITLE',"X-Coding - Welcome");
//seit PHP 5.3 sollte die Zeitzone gesetzt werden
date_default_timezone_set('Europe/Berlin');
?>[/PHP]
-index.php
[PHP]<?php
require_once "common.php";
//Backslashes entfernen
System\Security::globalStripSlashes();
//Name zunächst leer
$name = "";
//Wenn der GET-Parameter gesetzt ist: Name übernehmen
if(isset($_GET['name']))
{
$name = $_GET['name'];
}
//Formular
echo "<form action='' method='get'>";
echo "Name:";
echo "<input type='test' name='name' value='".$name."'>";
echo "<input type='submit' name='submit' value='sumbit'>";
echo "</form>";
?>[/PHP]
inc verzeichnis
-includeAllClasses.php
[PHP]<?php
//Datenbankklasse
require_once PROJECT_DOCUMENT_ROOT."/inc/classes/DB/
class.MySQL.php";
//HTML-Klasse
require_once PROJECT_DOCUMENT_ROOT."/inc/classes/HTML/
class.HTML.php";
//Sicherheitsklasse
require_once PROJECT_DOCUMENT_ROOT."/inc/classes/Security/
class.Security.php";
//Sitzungsklasse
require_once PROJECT_DOCUMENT_ROOT."/inc/classes/Session/
class.SessionHandler.php";
?>[/PHP]
inc/classes verzeichnis
class.login.php
[PHP]Public function printLoginFprm($checkScript=null)
{
?>
<fieldset style="padding:2px;width:180px;border:1px; street blue;">
<legend>Quick Login</legend>
<form id="noSpaces" action="<?php echo $checkScript ?>"method="POST">
Login:<br />
<input type="text" class="standardField" name="login" size="30" maxLength="100"><br />
<input type="password" class="standardField" neme="password" size="30" maxLength="100"><br />
<input type="Submint" onFocus="blur();" class="standardSubmint" name="doLogin" value="Anmelden">
<input type="reset" onFocus="blur();" class="standardSubmint" name="reset" value="Löschen">
</form>
</fieldset>
<?php
}
public function checkLoginData()
{
$firstChar=substr($_POST['login'].0.1);
$sql= "SELECT password.login FROM user".'WHERE login LIKE'".$firstChar."%'";
$result= $GLOBALS['DB']->query($sql);
$login= trim(substr($_POST['login'].0.100));
$password= trim(substr($_POST['password'].0.100));
foreach($result as $combi)
{
if(($login==$combi['login'])&& (md5($passwort== $combi['password']))
{
return true;
}//ENDIF
}//ENFOR
return false;
}
?>[/PHP]
inc/classes/db
class.mysql.php
[PHP]<?php
public function __construct($server, $user,
$password, $db, $port="3306")
{
//Erstellen eines MySQLi-Objektes
$this->MySQLiObj = new \mysqli($server, $user,
$password, $db, $port);
//Prüfen, ob ein Fehler aufgetreten ist.
if (mysqli_connect_errno())
{
echo "Keine Verbindung zum MySQL-Server möglich.";
trigger_error("MySQL-Connection-Error", E_USER_ERROR);
die();
}
//Characterset der Verbindung auf UTF-8 setzen:
$this->query("SET NAMES utf8");
}
public function __destruct()
{
$this->MySQLiObj->close();
}
public function query($sqlQuery,$resultset = false)
{
//Letztes SQL-Statement speichern
$this->lastSQLQuery = $sqlQuery;
//Hier kann später die Protokoll-Methode doLog()
//aktiviert werden
//$this->doLog($sqlQuery);
$result = $this->MySQLiObj->query($sqlQuery);
//Das Ergebnis ggf. als MySQL-Result "plain" zurückgeben
if($resultset == true)
{
//Status setzen
if ($result == false)
{
$this->lastSQLStatus = false;
}
else
{
$this->lastSQLStatus = true;
}
return $result;
}
$return = $this->makeArrayResult($result);
return $return;
}
public function lastSQLError()
{
return $this->MySQLiObj->error;
}
private function makeArrayResult($ResultObj)
{
if ($ResultObj === false)
{
//Es trat ein Fehler auf
$this->lastSQLStatus = false;
return false;
}
else if ($ResultObj === true)
{
//UPDATE,INSERT etc. es wird nur TRUE zurückgegeben.
$this->lastSQLStatus = true;
return true;
}
else if ($ResultObj->num_rows == 0)
{
//Kein Ergebnis bei einem SELECT-, SHOW-,
//DESCRIBE- oder EXPLAIN-Statement
$this->lastSQLStatus = true;
return array();
}
else
{
$array = array ();
while($line = $ResultObj->fetch_array(MYSQL_ASSOC))
{
//Alle Bezeichner in $line kleinschreiben
array_push($array, $line);
}
//Status der Abfrage setzen
$this->lastSQLStatus = true;
//Array zurückgeben
return $array;
}
}[/PHP]
inc/classes/html
class.html.php
[PHP]public static function printHead()
{
//Workaround für Browser, die ansonsten Darstellungsprobleme
//mit UTF-8-codierten Seiten bekommen (bspw. Google Chrome)
header('Content-Type: text/html; charset=UTF-8');
//Head ausgeben
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">';
echo '<html>'
echo '<head>'
echo '<title>'.HTML_TITLE.'</title>'
echo '<meta http-equiv="content-type" content="text/html;
charset=UTF-8">'."\n";
echo '<link rel="stylesheet" type="text/css" href="'.
PROJECT_HTTP_ROOT.'/inc/css/default.css.php">';
echo '<script src="'.PROJECT_HTTP_ROOT.'/inc/js/default.js"
type="text/javascript"></script>';
}
public function printBody($css = null)
{
echo '</head>';
echo '<body';
if($css!=null)
{
echo ' style="'.$css.'"';
}
echo '>';
}
public function printFoot()
{
echo "</body></html>";
}[/PHP]
inc/classes/security
class.security.php
[PHP]public static function globalStripSlashes()
{
if (get_magic_quotes_gpc() == 1)
{
$_GET = array_map(
array($this,'recursiveStripSlashes'),
$_GET);
$_POST = array_map(
array($this,'recursiveStripSlashes'),
$_POST);
}
}
private static function recursiveStripSlashes($value)
{
//Prüfen, ob der Wert ein Array ist
if (is_array($value))
{
//Rekursiver Aufruf dieser Methode
return array_map(
array($this,'recursiveStripSlashes'), $value);
}
else
{
//Rückgabe des berichtigten Wertes
return stripslashes($value);
}
}[/PHP]