[PHP] Wie erstelle Ich mein eigenes User Control Panel? [How-TO]

  • Weitere Teile folgen nach Anfrage per PN oder im Thread


    Herzlich Willkommen Brotfische!
    In dem Tutorial möchte Ich auf Grund Anfragen ein Tutorial schreiben wie ihr euer eigenes Control Panel coden könnt.
    Vorerst entschuldige ich mich auf Rechtschreibfehler. Falls im Tutorial etwas falsch beschrieben wurde oder sonstiges könnt ihr gerne hier drunter schreiben.
    Das UserCP wird kein Design besitzen, dafür seid ihr selber zuständig.


    Ich werde alles in Parts schreiben. In diesem Teil geht es um folgendes:
    > MySQL Verbindung
    > Login


    Fangen wir mal direkt an.


    Teil 1.0 > MySQL & Login

    Spoiler anzeigen

    Zur erst benötigen wir ein Webspace, ich verwende das Programm "XAMPP" da ich auf localhost code.
    Könnt ihr gerne auch falls nicht getan installieren, oder auf dem Server wo auch immer.

    Spoiler anzeigen
    Zuerst legen wir im Webspace folgende Dateien an:
    > global.php (Hier kommen die Sachen rein wie zum Beispiel die Mysql Verbindung, oder Benutzerdaten auslesen etc.)
    > index.php (Dies wird unsere Login Seite)
    > logout.php (Hier wollen wir den Spieler später ausloggen)
    > home.php (Hier listen wir die Statistiken des Spielers)
    Nun haben wir den ersten Schritt. Zunächst öffnen wir die global.php mit einem Editor (Ich benutze Notepad++) und schreiben folgendes rein:

    PHP
    <?php	// Wir starten ein Session für den Benutzer/Besucher	session_start();	// Wir verbinden uns mit MySQL	mysql_connect('localhost', 'root', '123456');	// Wir wählen die Datenbank aus, aus dem wir unsere Daten auslesen wollen	mysql_select_db('sampserver');	// Wir überprüfen ob der Benutzer eingeloggt ist, falls ja lesen wir die Felder in der Tabelle von den Benutzer des Benutzers aus	if(isset($_SESSION['username'])) { $SpielerInfo = mysql_fetch_object(mysql_query("SELECT * FROM users WHERE username = '".$_SESSION['username']."'")); }	/* Nun können wir Beispiel mit >echo $SpielerInfo->username< den Name des Benutzers ausgeben. */?>

    Spoiler anzeigen
    Nun haben wir schonmal den Mysql Teil und können uns mit Mysql verbinden.
    Jetzt benötigen wir das Login, dazu öffnen wir die login.php und schreiben folgendes rein:

    PHP
    <?php	// Wir includen die global.php somit haben wir die Funktionen in global.php auch auf dieser Seite.	require_once('global.php');	// Wir überprüfen ob der Spieler schon eingeloggt ist, falls ja leiten wir in direkt zur Statistikseite (home.php)	if(isset($_SESSION['username'])) { header('Location: home.php'); }	// Wir überprüfen ob das Login Formular abgesendet wurde	if(isset($_POST['submit']))	{		// Formular wurde abgesendet, nun erstellen wir 2 Variablen		// Mit $_POST['username'] können wir den Inhalt des Textfeldes auslesen, 		// mit mysql_real_escape_string verhindern wir Sql Injection und haben mehr Sicherheit.		$Username = mysql_real_escape_string($_POST['username']);  		// Genau das selbe wie oben, falls die Passwörter md5 verschlüsselt sind, 		// schreiben wir >$Password = md5($_POST['username']);< 		// Hier benötigen wir kein mysql_real_escape_string da wir das Passwort schon verschlüsselt haben.		$Password = mysql_real_escape_string($_POST['password']);  		// Nun überprüfen wir ob ein Benutzer mit den angegebenen Daten in der Datenbank existiert		if(mysql_num_rows(mysql_query("SELECT id FROM users WHERE username = '$Username' AND password = '$Password'")) == 1)		{			// Es existiert ein Benutzer mit den angegebenen Daten, somit sind die Daten korrekt und wir loggen den Spieler ein....			// Wir setzen nun eine Session für den Benutzer, damit wir später abfragen können ob der Spieler eingeloggt ist,			// oder nicht, oder um Daten des Spielers aus der Datenbank auszulesen.			$_SESSION['username'] = $Username;			// Nun wurde die Session gesetzt und der Spieler gillt als eingeloggt.			// Jetzt leiten wir den Spieler auf die home.php			header('Location: home.php');		} else {			// Es existiert kein Benutzer, somit sind die Daten falsch und wir geben eine Fehlermeldung aus			echo 'Falsche Zugangsdaten';		}	}?><!DOCTYPE html><html>	<head>		<title>Mein Samp UCP</title>	</head>	<body>		<form method="POST">			Benutzername: <input type="text" name="username" /><br />			Passwort: <input type="password" name="password" /><br />			<input type="submit" name="submit" value="Einloggen" /><br />		</form>	</body></html>

    Spoiler anzeigen
    Nun brauchen wir auch die logout.php damit sich der Benutzer auch ausloggen kann. Dazu öffnen wir nun die logout.php und schreiben folgendes rein:

    PHP
    <?php	// Wir starten eine Session falls, falls keine session gestartet wurde und wir auf die Datei zugreifen bekommen wir ansonnsten	// eine Fehlermeldung.	session_start();	// Nun löschen wir die ganzen Sessions damit der Spieler ausgeloggt werden kann	session_destroy();	// Nun leiten wir den Spieler nach dem Ausloggen zur Startseite (Login)	header('Location: index.php');?>

    Spoiler anzeigen
    Nun haben wir das meiste schon hinter uns, der Spieler kann sich einloggen und ausloggen. Jetzt benötigen wir die Home Seite,
    damit der Spieler seine Statistik sehen kann. Dazu öffnen wir die home.php und schreiben folgendes rein:

    PHP
    <?php 	// Wir includen die global.php somit haben wir die Funktionen in global.php auch auf dieser Seite.	require_once('global.php');	// Wir überprüfen ob der Spieler eingeloggt ist, falls nicht leiten wir in zurück zur Login Seite.	if(!isset($_SESSION['username'])) { header('Location: index.php'); }?><!DOCTYPE html><html>	<head>		<title>Mein SampUCP - <?php echo $SpielerInfo->username; ?></title>	</head>	<body>		<h1>Willkommen, <?php echo $SpielerInfo->username; ?></h1>		<a href="logout.php">Ausloggen</a>	</body></html>

    Spoiler anzeigen
    Und fertig sind wir mit dem ersten Teil unseres User Control Panels ^^


    Teil 1.1 > Mehr Statistiken einfügen, Skin anzeigen

    Spoiler anzeigen
    In diesem Teil geht es darum wie wir dem User mehr Statistiken seines Accounts anzeigen können.
    Fangen wir doch mal mit dem Skin an. Für die Skins benötigen wir erstmal ein Ordner
    wo die Skins nach der ID alle abgespeichert sind.
    (Ihr könnt den Skin Ordner von meinem UCP nehmen (templates/images/skins/) Zum UCP).
    Die Skins sollten am besten in einem Ordner sein, der Ordner sollte im Verzeichnis des UCP's liegen (Bsp: http://ucp-link/skins/).
    Meine Skins sind wie folgt abgespeichert "Skin_ID.PNG".
    So nun seid ihr schonmal etwas informiert. Wir öffnen zuerst die home.php und schreiben über

    PHP
    <h1>Willkommen, <?php echo $SpielerInfo->username; ?></h1>

    Spoiler anzeigen

    folgenden Code:

    PHP
    <img src="skins/Skin_<?php echo $SpielerInfo->skin; ?>.PNG" />

    Spoiler anzeigen

    rein. In der Benutzertabelle sollte eine Spalte für den Benutzer Namens "skin" geben (kann auch anders heißen).
    So nun zeigen wir den Skin des Spielers auf der home.php.

    Spoiler anzeigen
    Nun kommen wir zu mehr Statistiken einfügen. Um mehr Statistiken einzufügen wie Level oder
    Geld machen wir folgendes: Wir schreiben folgenden Code unter

    PHP
    <h1>Willkommen, <?php echo $SpielerInfo->username; ?></h1>

    PHP
    Level: <?php echo $SpielerInfo->level; ?><br />Geld: <?php echo $SpielerInfo->geld; ?><br />

    Spoiler anzeigen
    Ihr müsst die Struktur nach eurem anpassen. zum Beispiel kann bei euch die Struktur "geld" auch "money" heißen.
    Falls ihr dort Probleme habt schreibt einfach hier im Thread eine Nachricht.

    Spoiler anzeigen
    So nun haben wir mehr Statistiken und den Skin eingefügt.
    Auf Anfrage folgen weitere Teile :)


    Für Fragen und Verbesserungsvorschläge bin ich jederzeit offen. Hoffe es hat euch gefallen und geholfen.
    MfG

    5 Mal editiert, zuletzt von $ecure.x3 ()

  • Schön,
    habe nur die Frage, wann der 2te Teil kommt,
    möchte ja auch was bei lernen :D
    Evtl. kannst du ja eine Art Adminpanel machen ^^


    Habe heute zuviele Kundenanfragen bekommen und bin erst vor einpaar Minuten damit fertig Sie alle zur berarbeiten.
    Ich werde es versuchen morgen zu schreiben. Ideen können gerne welche genannt werden :D

  • vom Fachlichen her sehr gut aber ein stink normales Copy & Past Tutorial deshalb nur 5/10 Punkten.
    // Edit: finde auch gut das du mal fetch_object zeigst & nicht wie sonst überall üblich fetch_assoc bzw fetch_array

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • jemand der das sieht schnappt sich z.b Notepad++, kopiert den Text fügt ihn ein und sacht "Fertig" ohne dabei was gelernt zu haben. In diesem Sinne C & P

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • jemand der das sieht schnappt sich z.b Notepad++, kopiert den Text fügt ihn ein und sacht "Fertig" ohne dabei was gelernt zu haben. In diesem Sinne C & P


    Kann ich zwar zustimmen, aber Tutorials sind da damit sich die User auch einpaar Minuten Zeit nehmen und es sich durchlesen.
    Wer etwas lernen will, wird sich das sicherlich durchlesen, der rest lernt halt nichts daraus, ist aber dann eigene Schuld.

    Da hast du Recht G-Mac, jedoch lernen viele Leute unter anderem ich, durch C & P.
    Auch wenn es schwer zu glauben ist... :)


    Sehr schöner erster Teil, ich hoffe auf gute weitere!


    Beste Grüße,
    Chris


    Vielen Dank ^^

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Da hast du recht, wenn man das nicht weis sollte man keinen Server eröffnen.

  • Optionale Abkürzung für:

    PHP
    <h1>Willkommen, <?php echo $SpielerInfo->username; ?></h1>


    hier:

    PHP
    <h1>Willkommen, <?=$SpielerInfo->username;?></h1>


    Ist vom Prinzip her das gleiche, doch ist im endeffekt kürzer :D


    Ansonsten soweit ganz gutes tutorial, du solltest den 'gesamten code' nicht zusammen schreiben, weil
    newbies würden einfach C&P und dann zack ich habe ein UCP usw usw.

  • Wie wärs mal mit Klassen und PDO? Würdest damit nicht 50% der Login/Register Tutorials wiederspiegeln.

    Normalerweiße arbeite ich mit Klassen, jedoch reicht das für Anfänger.

    PHP
    <h1>Willkommen, <?php echo $SpielerInfo->username; ?></h1>


    hier:

    PHP
    <h1>Willkommen, <?=$SpielerInfo->username;?></h1>

    Shortcuts werden nur akzeptiert wenn es eingestellt ist, wollte mal Fragen von den Schüler vermeiden.

    Ansonsten soweit ganz gutes tutorial, du solltest den 'gesamten code' nicht zusammen schreiben, weil
    newbies würden einfach C&P und dann zack ich habe ein UCP usw usw.

    Vielen Dank für das Feedback. Zum C&P habe ich ja schon etwas gesagt.