Antworten auf deine Fragen:
Neues Thema erstellen

PHP-Login mit Templates, wie geht das?

RedDef

Noch nicht viel geschrieben

Hallo Leute

Ich bin daran, mit php etwas grösseres zu programmieren. Ich will ein Login machen. Jetzt habe ich in den Foren gesehen, dass auf ein sehr gutes Tutorial ist. Ich habe die Anweisungen befolgt und den Code geschrieben.
Doch da ist noch die Rede von Templates. Ich habe mir auch das Tutorial dazu angeschaut und mich im Internet darüber informiert. Ich habe noch immer keine Ahnung wie das gehen soll. Ich arbeite mit dem Dreamweaver und weiss nicht wie ich die Datei anlegen muss, damit sie danach die Endung *.tpl hat.
Das andere Problem welches ich nun habe ist, dass ich nicht recht begreife, was nun in das Template hinein muss und was nicht.

Mein Quellcode sieht folgendermassen aus:
PHP:
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
	if (getUserID($db)) {
		return 'Sie sind bereits eingeloggt.';
	}
	$ret = array();
	$ret['filename'] = 'login.tpl';
	$ret['data'] = array();
	if ('POST' == $_SERVER['REQUEST_METHOD']) {
		if (!isset($_POST[{'Username'}, $_POST['Password'], $_POST['formaction'])) {
			return INVALID_FORM;
		}
		if ((''==$Username = trim($_POST['Username'])) OR
			(''==$Password = trim($_POST['Password']))) {
				return EMPTY_FORM;
		}
		$sql = 'SELECT
					ID
				FROM
					User
				WHERE
					Username = ?';
		$stmt = $db->prepare($sql);
		if (!$stmt) {
			return $db->error;
		}
		$stmt->bind_param('s', $Username);
		if (!$stmt->execute()) {
			return $stmt->error;
		}
		$stmt->bind_result($UserID);
		if (!$stmt->fetch()) {
			return 'Es wurde kein Benutzer mit den angegebenen Namen gefunden.';
		}
		$stmt->close();
		$sql = 'SELECT
					Password
				FROM
					User
				WHERE
					ID = ? AND
					Password = ?';
		$stmt = $db->prepare($sql);
		if (!$stmt) {
			return $db->error;
		}
		$Hash = md5(md5($UserID).$Password);
		$stmt->bind_param('is', $UserID, $Hash);
		if (!$stmt->execute()) {
			return $stmt->error;
		}
		$stmt->bind_result($Hash);
		if (!$stmt->fetch()) {
			return 'Das eingegebene Passwort ist ungültig.';
		}
		$stmt->close();
		setcookie('UserID', $UserID, strtotime("+1 month"));
		setcookie('Password', $Hash, strtotime("+1 month"));
		$_COOKIE['UserID'] = $UserID;
		$_COOKIE['Password'] = $Hash;
		return showInfo('Sie sind un eingeloggt.');
		function getUserId($db) {
			if(!is_object($db)) {
				return false;
			}
			if (!($db instanceof MYSQLi)) {
				return false;
			}
			if (!isset($_COOKIE['UserID'], $_COOKIE['Password'])) {
				return false;
			}
			$sql = 'SELECT
						ID
					FROM
						User
					WHERE
						ID = ? AND
						Password = ?';
			$stmt = $db->prepare($sql);
			if(!$stmt) {
				return $db->error;
			}
			$stmt->bind_param('is', $_COOKIE['UserID'], $_COOKIE['Password']);
			if (!$stmt->execute()) {
				return $stmt->error;
			}
			$stmt->bind_result($UserID);
			if (!$stmt->fetch()) {
				return false;
			}
			return $UserID;
		}
	}
return $ret:
?>

<form action="index.php?section=login" methode="post">
	<fieldset>
		<legend>Einloggen</legend>
		<label>Benutzername: <input type="text" name="Username" /></label>
		<label>Passwort: <input type"password" name="Password" /></label>
		<input type="submit" name="formaction" value="Einloggen" />
	</fieldset>
</form>
</body>
</html>
Ich habe ihn nun so in einer Datei.
Um ihn in die Website einzubinden habe ich das Formular herausgenommen und in die Website eingefügt:
PHP:
[...]
<div id="login">
<div id="sub-login">
<form avtion="index.php?section=login" methode="post">
	<fieldset>
		<legend style="font-size:15px;font-weight:bold;text-align:left;">Login</legend>
		<label style="text-align:center;">Benutzername: <input type="text" name="Username" /></label>
		<label style="text-align:center;">Passwort: <input type"password" name="Password" /></label>
		<input type="submit" name="formaction" value=" Einloggen " />
	</fieldset>
</form>
</div>
[...]
wie muss ich nun vorgehen, damit der erwähnte PHP-Code auf das Formular zugreift? Wie muss ich was in einer externen Datei anlegen?

Ich hoffe ich habe mich verständlich ausgedrückt und hoffe auf hilfreiche Antworten. Vielen Dank schon im voraus für eure Hilfe.

RedDef
 
Zuletzt bearbeitet:

sokie

Mod | Web

AW: PHP-Login mit Templates, wie geht das?

Ich arbeite mit dem Dreamweaver und weiss nicht wie ich die Datei anlegen muss, damit sie danach die Endung *.tpl hat.
Es ist ziemlich egal welches Programm man nun als Editor benutzt, wenn Du Dateien mit der Endung .tpl haben willst, kannst du eine beliebige Textdatei benutzen und sie nach xxx.tpl umbenennen. Die Endung .tpl hat keinen zwingenden Bezug zum Inhalt, sondern ist eher eine Dateinamenkonvention wonei gleich klar ist, dass es hier um eine Template Datei geht
Das andere Problem welches ich nun habe ist, dass ich nicht recht begreife, was nun in das Template hinein muss und was nicht.
in eineTemplate Datei muss das hinein, was nach deinem Entwurf der Programmierung da hinein gehört. Hier ist es nicht möglicheine allgemeine Aussage zu machen. Ein paar Anhaltspunkte gibt es ja auf derselben Seite .
 

Chriss1987

me.drinkCoffee();

AW: PHP-Login mit Templates, wie geht das?

Hi,

sokie hat dir ja schon einen hilfreichen Link gegeben.
Hier hätte ich noch einen weiteren, mit nem ganz simplen Template-System, vielleichts hilft es ja:

Bitte poste das nächste mal den Quelltext in den entsprechenden Tags, also mit [php ][/php ], dann ist es wesentlich einfacher den Quelltext zu überblicken! Danke!

Schöne Grüße aus dem Sauerland!
Chriss
 

RedDef

Noch nicht viel geschrieben

AW: PHP-Login mit Templates, wie geht das?

sokie hat dir ja schon einen hilfreichen Link gegeben.
Hier hätte ich noch einen weiteren, mit nem ganz simplen Template-System, vielleichts hilft es ja:

@Chriss1987: Danke erst mal für deinen Link. Ich habe dort die Tutorials durchgeführt. Ich bin jedoch noch kein Prozent weiter. Ich weiss immer noch nicht wie ich die Templates schreiben soll, was dort hineingehört, wie es hineingehört, etc. Zudem ist mir nicht klar, wie ich mich mit den Templates auf etwas anderes beziehen kann. Ich weiss nicht ob ich einfach zu dumm bin und es anders versuchen sollte.

Wenn mir jedoch noch jemand einen Tipp hat wäre ich sehr dankbar.

Danke nochmals für eure Hilfe

RedDef
 

Chriss1987

me.drinkCoffee();

AW: PHP-Login mit Templates, wie geht das?

@Chriss1987: Danke erst mal für deinen Link. Ich habe dort die Tutorials durchgeführt. Ich bin jedoch noch kein Prozent weiter. Ich weiss immer noch nicht wie ich die Templates schreiben soll, was dort hineingehört, wie es hineingehört, etc. Zudem ist mir nicht klar, wie ich mich mit den Templates auf etwas anderes beziehen kann. Ich weiss nicht ob ich einfach zu dumm bin und es anders versuchen sollte.

Wenn mir jedoch noch jemand einen Tipp hat wäre ich sehr dankbar.

Danke nochmals für eure Hilfe

RedDef

Hi,

ich sehe grade, dass der Link, den ich dir gepostet habe, nicht der Link ist, den ich dir eigentlich posten wollte. Kurz: versuchsmal hiermit
Weiter unten ist die Klasse und auch ein Beispiel inkl. Template usw.

Die Klasse ist relativ einfach zu verstehen, wenn du noch Fragen haben solltest, melde dich einfach!

Schöne Grüße aus dem Sauerland!
Chriss
 

saila

Moderatorle

AW: PHP-Login mit Templates, wie geht das?

Hi,

also ohne den Thread nun durchgelesen zu haben. Warum wird hier z.B. nicht auf Smarty-Template-Engine verwiesen?

Ist die meist verwendete T-Engine und hat darüber hinaus auch eine Menge an Informationen, wie diese zu verwenden ist.

Eines muss man sich allerdings immer im klaren sein. Eine Template-Engine bildet in der Regel PHP nach. Sprich - all das was man mit einer Template-Engine bewirken will, kann man auch ohne diese.

Der Hauptvorteil ist, dass man lediglich Platzhalter für xhtml, html, tpl, xml - Dateien setzen kann. Allerdings kann man dies auch ohne großen Aufwand einer Template-Engine per PHP. Man muss sich nur die entsprechende Klasse schreiben. Alles was mit Schleifen zusammenhängt, lässt man ausserhalb eines Templates zusammensetzen und übergibt lediglich den Rest in das Template.

So und nun noch der große Hauptvorteil der Smarty-Template-Engine. Diese hat einen sehr einfachen Weg zur Implementierung und hat eines oder das beste Caching!

Zur Eingangsfrage/n:
Nachdem du Variablen für ein Template definiert hast wie z.B. $username bzgl. der login.tpl, kannst du im Grunde am Ende der login.php z.b. folgendes tun:
PHP:
<?php
/**
* dein code
* folgendes in absoluter kurzform und so auch nicht zu übernehmen!!
* dient lediglich als Beispiel
*/
$loginFormPath = $_SERVER['HTTP_HOST'] .'/login.php';


$username = '';

if(isset($_POST['username'])) {
 $username = $_POST['username'];
}

require_once('login.tpl');
?>
in der login.tpl ist nun z.B. folgender Inhalt:
Code:
<form method="post" action="<?php echo $loginFormPath; ?>">
<input type="text" name="username" value="<?php echo $username; ?>"/>
</form>
Dieses Beispiel verdeutlicht das Template. Allerdins ist ja der Sinn und Zweck von Templates, HTML und ScriptCode getrennt zu halten. Somit wäre eigentl. das absolute Beispiel wiederum bei Smarty-Template-Eingine zu finden.

Alles natürlich vorausgesetzt ich treffe mit meiner Vermutung die Fragestellung :)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben