Hallo.
Ich bin noch neu hier und beim googeln durch euer Forum erst auf besagtes Tutorial von Quakenet aufmerksam geworden.
Also meine Kenntnisse reichen bisher von SelfHtml, CSS und eben bis zum Tut von Quakenet.
So nun mal zu meiner Frage
Ich versteh nicht ganz die Logik zum Templatesystem dort. Wie navigiere ich auf eine Login oder Registerseite? Es kann ja nicht gemeint sein das man alle Formulare einzigst über die Index.php angezeigt bekommt.
Hab ich da was nicht recht verstanden oder welcher Teil des Scriptes entscheidet darüber das das Registrierformular geladen wird und nicht das Loginformular?
Wie könnte eine Navi dazu aussehen so das Header, Footer, Navi gleich bleiben nur der Content(Inhalt) sich ändert?
Ich hoffe ich konnte mich als Laie in etwa klar ausdrücken wenn nicht dann fragt bitte.
Danke für eure Hilfe
(auch wenns mir wiederstrebt abgestempelt zu werden: Hier meine Seite bisher http://zahnrad.kilu.de/index.php )
------------------
Also ich steig da nicht durch probiere mich nun schon bestimmt ne Woche daran.
Ich habe nun meine Navi zum Registrieren wie folgt umgesetzt:
Die Navi befindet sich in der Header.php
Auszug:
Die Index.php soll nun beim Seitenaufruf das Formular anzeigen und die Daten verarbeiten.
Index.php:
Die register1.php sieht wie folgt aus:
Die Dateien welche includet werden können stehen in der Variables.php:
Und zum Schluss hier noch die register.tpl.php:
Wenn ich nun in der Navi auf Register1 klicke kommt die Meldung die Datei Register1.php kann nicht includet werden.
Aber Warum? wie kann man das besser lösen?
Ich bin noch neu hier und beim googeln durch euer Forum erst auf besagtes Tutorial von Quakenet aufmerksam geworden.
Also meine Kenntnisse reichen bisher von SelfHtml, CSS und eben bis zum Tut von Quakenet.
So nun mal zu meiner Frage
Ich versteh nicht ganz die Logik zum Templatesystem dort. Wie navigiere ich auf eine Login oder Registerseite? Es kann ja nicht gemeint sein das man alle Formulare einzigst über die Index.php angezeigt bekommt.
Hab ich da was nicht recht verstanden oder welcher Teil des Scriptes entscheidet darüber das das Registrierformular geladen wird und nicht das Loginformular?
Wie könnte eine Navi dazu aussehen so das Header, Footer, Navi gleich bleiben nur der Content(Inhalt) sich ändert?
Ich hoffe ich konnte mich als Laie in etwa klar ausdrücken wenn nicht dann fragt bitte.
Danke für eure Hilfe
(auch wenns mir wiederstrebt abgestempelt zu werden: Hier meine Seite bisher http://zahnrad.kilu.de/index.php )
------------------
Also ich steig da nicht durch probiere mich nun schon bestimmt ne Woche daran.
Ich habe nun meine Navi zum Registrieren wie folgt umgesetzt:
Die Navi befindet sich in der Header.php
Auszug:
PHP:
<div id="navi">
<ul class="navi">
<li><a href="index.php" class="navi<? if($aktiv == "index") echo "_aktiv"; // Mit der If-Abfrage wird ?berpr?ft, ob die Variable auf jeder Seite einem bestimmten Wert entspricht. Trifft dies zu, so wird '_aktiv' an die Klasse angeh?gt ?>">Startseite</a></li>
<li><a href="login.php" class="navi<? if($aktiv == "login") echo "_aktiv"; ?>">Login</a></li>
<li><a href="index.php?section=register1" class="navi<? if($aktiv == "register1") echo "_aktiv"; ?>">register1</a></li></ul>
</div>
Die Index.php soll nun beim Seitenaufruf das Formular anzeigen und die Daten verarbeiten.
Index.php:
PHP:
<? include("counter.php"); ?>
<? readfile("inc.doctype.php"); ?>
<meta name="description" content="Endzeit" />
<meta name="keywords" content="Browsergame" />
<title>End of Time</title>
<? $aktiv="index"; include("inc.header.php"); ?>
<div class="links" style="width: 350px;">
<h1>Am Anfang</h1>
<p>Genau hier ensteht ein neues Browsergame. Es ist alles noch am Anfang und bisher alles noch reine Grafik und Layoutspielerei.
Wenn es soweit ist wird genau hier ein völlig andres Layout stehen. Dies ist das erste und vorangingste Ziel.
Auch wenn schon ein paar Navipunkte rechts da sind so werden die Funktionen erst später aufgeschalten. </p>
<!-- Bild zerstörte Stadt im Context
<img src="img/BrokenCity.jpg" alt="Magie Kampf Items" -->
</div>
<div class="rechts" style="width: 258px;">
<div class="news">
<h1>Neuigkeiten</h1>
<?php
include 'variables.php';
include 'constants.php';
$db = @new MySQLi('localhost', '***', '***', '***');
if (mysqli_connect_errno()) {
die('Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldete: '.mysqli_connect_error());
}
$ret = 1; // speichert den rückgabewert von include, standardwert 1
/*
* Die Include-Datei muss eine return Anweisung enthalten mit folgenden
* Werten:
* - Bei normaler Ausführung
* Array('filename' => string, -- Dateiname vom Template
* 'data' => Array()) -- Array mit Daten für das Template
* - Bei einem Fehler
* string -- Die Fehlermeldung die angezeigt werden soll.
*/
if (isset($_GET['section'], $dateien[$_GET['section']])) {
if (file_exists('includes/'.$dateien[$_GET['section']])) {
$ret = include 'includes/'.$dateien[$_GET['section']];
} else {
$ret = "Include-Datei konnte nicht geladen werden: 'includes/".$dateien[$_GET['section']]."'";
}
} else {
// default bereich laden, news
$ret = include 'includes/'.$dateien['news'];
}
if (is_array($ret) and isset($ret['filename'], $ret['data']) and
is_string($ret['filename']) and
is_array($ret['data'])) {
// Gültiger return-Wert
if (file_exists($file = 'templates/'.$ret['filename'])) {
$data = $ret['data'];
// speicher die Arraydaten in eine Variable $data
// die dann im Template verwendet werden kann.
include $file;
} else {
// Datei existiert nicht, eine Fehlermeldung anzeigen.
$data = array();
$data['msg'] = 'Templatedatei "'.$file.'" ist nicht vorhanden.';
include 'templates/error.tpl';
}
} else if (is_string($ret)) {
// include-Datei lieferte eine String zurück, welches eine Fehlermeldung sein soll
$data = array();
$data['msg'] = $ret;
include 'templates/error.tpl';
} else if (1 === $ret) {
// return-Anweisung wurde vergessen
$data = array();
$data['msg'] = 'In der Include-Datei wurde die return Anweisung vergessen.';
include 'templates/error.tpl';
} else {
// überhaupt ein ungültiger return-Wert
$data = array();
$data['msg'] = 'Die Include-Datei hat einen ungültigen Wert zurückgeliefert.';
include 'templates/error.tpl';
}
?>
<h2>Links</h2>
<p class="news_text or">Hier könnte ihr Link stehen<br />kontaktieren sie mich </p>
<div class="ta_r">
<h2>Besucher: <? echo $gcc_hits; ?></h2>
</div>
</div>
</div>
<br class="clear" />
<? include("inc.footer.php"); ?>
Die register1.php sieht wie folgt aus:
PHP:
<?php
$ret = array();
$ret['filename'] = 'register.tpl.php';
$ret['data'] = array();
if ('POST' == $_SERVER['REQUEST_METHOD']) {
if (!isset($_POST['Username'], $_POST['Password'], $_POST['Email'],
$_POST['Antwort'], $_POST['formaction'])) {
return INVALID_FORM;
}
if (!is_array($_POST['Password']) OR count($_POST['Password']) != 2) {
return INVALID_FORM;
}
if ($_POST['Password'][0] != $_POST['Password'][1]) {
return 'Bitte geben sie das gleiche Password ein.';
}
if (($Username = trim($_POST['Username'])) == '' OR
($Password = trim($_POST['Password'][0])) == '' OR
($Email = trim($_POST['Email'])) == '' OR
($Antwort = trim($_POST['Antwort'])) == '') {
return EMPTY_FORM;
}
if ('' != $Antwort) { // entsprechend anpassen
return 'Bitte geben sie die richtige Antwort an.';
}
if (!preg_match('~\A\S{3,30}\z~', $Username)) {
return 'Der Benutzername darf nur aus 3 bis 30 Zeichen bestehen und '.
'keine Leerzeichen enthalten.';
}
$sql = 'SELECT
ID
FROM
User
WHERE
Username = ?
LIMIT
1';
$stmt = $db->prepare($sql);
if (!$stmt) {
return $db->error;
}
$stmt->bind_param('s', $Username);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows) {
return 'Der Username wird bereits verwendet.';
}
if ($stmt->num_rows) {
return 'Der Username wird bereits verwendet.';
}
$stmt->close();
$sql = 'INSERT INTO
User(Username, Email)
VALUES
(?, ?)';
$stmt = $db->prepare($sql);
if (!$stmt) {
return $db->error;
}
$stmt->bind_param('ss', $Username, $Email);
if (!$stmt->execute()) {
return $stmt->error;
}
$UserID = $stmt->insert_id;
$sql = 'UPDATE
User
SET
Password = ?
WHERE
ID = ?';
$stmt = $db->prepare($sql);
if (!$stmt) {
return $db->error;
}
$Hash = md5(md5($UserID).$Password);
$stmt->bind_param('si', $Hash, $UserID);
if (!$stmt->execute()) {
return $stmt->error;
}
return showInfo('Der Benutzer wurde hinzugefügt. Sie können sich nun anmelden.');
}
return $ret;
?>
Die Dateien welche includet werden können stehen in der Variables.php:
PHP:
<?php
$dateien = array();
$dateien['news'] = '../news.php';
$dateien['register1'] = '../register1.php';
?>
Und zum Schluss hier noch die register.tpl.php:
PHP:
<form action="register.php?section=register" method="post">
<fieldset>
<legend><h2>Registieren</h2></legend>
<label><p>Username: </p><input type="text" name="Username" /></label>
<label><p>Password: </p><input type="password" name="Password[]" /></label>
<label><p>Bestätigung: </p><input type="password" name="Password[]" /></label>
<label><p>Email: </p><input type="text" name="Email" /></label>
<label><p>{FRAGE}: </p><input type="text" name="Antwort" /></label>
<input type="submit" name="formaction" value="Registieren" />
</fieldset>
</form>
Wenn ich nun in der Navi auf Register1 klicke kommt die Meldung die Datei Register1.php kann nicht includet werden.
Aber Warum? wie kann man das besser lösen?
Zuletzt bearbeitet: