Sehr Gut!
Weiter so!
Vielen Dank.
Sehr Gut!
Weiter so!
Vielen Dank.
./ Editiert => 2 \.
Guten Abend Community.
Ich habe ein sehr simples Installationsskript geschrieben, auch wenn der Code Stil nicht das beste ist,
kann man etwas damit anfangen.
Was macht das Skript?
Das Skript erstellt nach dem Absenden des Formular's eine "config.inc.php", die wie folgt aussieht;
<?php
define("MYSQL_HOST", "127.0.0.1");
define("MYSQL_PORT", "3306");
define("MYSQL_USER", "Benutzer");
define("MYSQL_PASS", "Passwort");
define("MYSQL_DATA", "Datenbank");
define("SITE_PATH", "http://127.0.0.1");
define("SITE_NAME", "Installationsvorlage");
?>
Die Werte werden durch die abgegebenen Daten ersetzt.
Nach dem erstellen der config.inc.php, wird die install.php gelöscht und man wird auf die index.php weitergeleitet.
Ich hoffe es kann den Anfänger etwas helfen, was alles aus Langeweile entstehen kann
Pastebin: Install.php
Pastebin: Style.css
Ich werde eventuell bei Interesse weitere kleinere Codeschnipsel veröffentlichen.
Hi, ich kenne mich mit beidem aus. Und jetzt? o0
Schön, dass ihr euch immer so explizit artikulieren könnt, wenn ihr Hilfe benötigt.
Kann ich nur zustimmen.
Ich würde für die Anmeldung nicht mit Cookies (außer bei "Eingeloggt bleiben" Funktion) verwenden,
da es eine Sicherheitslücke währe.
Mach es mit Sessions.
Alles anzeigenIch verstehe schon was du meinst.
Nur mMn. bringt die Klasse keinen Unterschied zur mysqli-Klasse.
"Deine" Klasse connected einfach nur und mysqli connected, query'd, fetched Results.
Zumal die mysql_... Funktionen irgendwann deprecated sind und nicht mehr in
neueren PHP-Releases auftauchen.
Ich mein, Ich will das Tutorial nicht schlecht reden, Ich finds gut.
Nur das ist mir halt aufgefallen
Da hast du vollkommen recht, sollte auch schon für Personen sein, die etwas PHP Kentnisse haben.
$PlayerInfo = mysql_fetch_object(mysql_query("SELECT * FROM user_tabelle WHERE username = '".$_SESSION['username']."' LIMIT 1");
Sessions lassen sich leicht manipulieren, und bieten hier ein wunderbares ziel. Ausserdem solltest du in Query's immer backticks nutzen.
Hi,
Sieht nicht schlecht aus,
nur eine Frage:
Wenn du die prozedualen mysql_.... Funktionen in eine Klasse wrappst.
Warum nicht direkt die mysqli Klasse?
Weil die Funktion für die Verbindung "privat" bleiben soll.
Das heißt, dass die Funktion nur in der Klasse "MySQL" aufgerufen werden kann.
Lies das Tutorial und wenn du weitere Fragen hast, kannst du gerne fragen.
Falls du jemanden brauchst, der deine Design's codet, kannst du dich bei mir per private Nachricht melden.
Allerdings code ich nur HTML/CSS, sprich keine Woltlab Designs
Meiner ist übersichtlich gestaltet
./ Editiert: => 2 \.
In dieser Anleitung geht es darum, wie ein einfaches jedoch sicheres Loginsystem
mit MySQL und SESSIONS programmiert / gecodet wird.
Bevor Wir mit der Anleitung loslegen, möchte ich die Vorraussetzungen auflisten;
> Du musst die Grundlagen wie Variablen und Funktionen.. beherschen.
> Du musst ein Webspace besitzen, was PHP und MySQL unterstützt.
> Du musst eine MySQL Datenbank besitzen.
> Du solltest lust und viel Zeit zum Lesen haben.
Die Vorraussetzungen sind nun erfüllt und es kann los legen.
Du benötigst für die Anleitung folgende Dateien, die du später für das Loginsystem auf dem Webspace hochladen musst.
Die benötigten Dateien;
Wir fangen mit den einfachsten an, undzwar mit der Datei "logout.php".
Wir öffnen die Datei "logout.php" und schreiben zu erst den PHP Tag, damit unser Browser erkennt,
dass Wir mit PHP beginnen.
Dazu schreiben Wir folgendes in die Datei "logout.php" rein;
Nun weiß unser Browser, hier beginnt PHP. Alle Funktionen von PHP muss zwischen den PHP Tags rein.
Da Wir mit Sessions arbeiten, müssen Wir eine Session starten, um es auch wieder zu löschen denn,
wenn Wir eine Session starten, gillt diese Session solange, bis Wir unseren Browser geschlossen haben, auf unserer
Seite.
Dazu schreiben Wir folgendes zwischen den PHP Tags;
Nun haben Wir eine Session gestartet und müssen es auch wieder löschen, damit der Benutzer ausgeloggt wird.
Dazu schreiben Wir folgendes zwischen den PHP Tags;
Nun haben Wir den Benutzer ausgeloggt. Damit der Benutzer nach dem Ausloggen, auf die Startseite weitergeleitet
wird, schreiben Wir folgendes zwischen den PHP Tags;
Nun haben Wir den Spieler ausgeloggt und leiten ihn auf die Datei/Seite "index.php".
Mit dem Ausloggen sind Wir nun fertig.
Nun öffnen Wir die Datei "class.php" und schreiben auch dort den PHP Tag.
Wir erstellen nun eine Klasse Namens "MySQL", dazu schreiben Wir folgendes zwischen den PHP Tags;
Nun haben Wir eine Klasse, jedoch ohne Funktionen. Wir definieren zu erst die benötigten Informationen,
was für eine MySQL Verbindung wichtig ist.
Wir definieren diese Funktionen in der "privat" Methode, da Wir diese Variablen in der gesammten Klasse verwenden
wollen.
Nun haben Wir die Klasse für "MySQL", jedoch fehlt uns die Funktion.
Um die Funktion zu erstellen, schreiben Wir folgendes in die Klasse;
Nun haben Wir auch die Funktion.
Diese Funktion ist public, dies bedeutet, dass die Funktion auch außerhalb der Klasse verwendet werden kann.
Wir wollen aber die MySQL Verbindung nur in der Klasse erlauben, dafür rufen Wir die Funktion "MySQLConnect"
in der "MySQL" Funktion auf und definieren hier nochmals die Variablen, damit Wir sie auch in der "MySQLConnect"
Funktion verwenden können;
$this->Hostname = $Hostname;
$this->Username = $Username;
$this->Password = $Password;
$this->Database = $Database;
$this->MySQLConnect();
Okey, Wir haben jetzt zwar paar Funktionen, jedoch können Wir keine MySQL Verbindung aufbauen.
Für das Aufbauen einer MySQL Verbindung, brauchen Wir nun die Funktion "MySQLConnect", diese ist in der "privat" Methode,
da Wir sie nicht außerhalb der Klasse aufrufen wollen.
Um die Funktion zu erstellen, schreiben Wir nun folgendes unter der "MySQL" Funktion;
Und nun bauen Wir eine Verbindung auf, in dem Wir folgendes in die Funktion "MySQLConnect" schreiben;
$this->Connect = mysql_connect($this->Hostname, $this->Username, $this->Password);
$this->SelectDB = mysql_select_db($this->Database, $this->Connect);
if(!$this->Connect || !$this->SelectDB)
{
die('MySQL Fehler ist aufgetreten!');
}
Nun können Wir durch das Aufrufen der "MySQL" Klasse/Funktion, eine MySQL Verbindung aufbauen.
Bevor Wir mit dem Loginsystem anfangen, benötigen Wir noch in der MySQL Datenbank, eine Tabelle wo die
Benutzerdaten gespeichert sind.
Ich benutze "NaviCat", da es übersichtlicher und schneller zu bedienen ist.
Wir erstellen eine Tabelle mit folgender Struktur;
Nun können Wir einen Benutzer einfügen und später uns mit den Daten einloggen.
Für das Loginsystem wechseln Wir nun in die Datei "index.php" und schreiben auch hier zu erst die
PHP Tags;
.
Wir includen die Datei "class.php", damit Wir die Funktionen aus der class.php auslesen können.
Dazu schreiben Wir folgendes zwischen den PHP Tags;
Es gibt viele Methoden um eine Datei zu includen. Als Standart wird "include '';" verwendet,
Wir verwenden "require_once('');". Der Unterschied ist, dass bei "require_once('');" die Datei die Wir includen,
vorhanden MUSS und falls nicht, gibt der Browser / Server uns eine Fehlermeldung aus.
Nun starten wir eine Session für den Benutzer;
Und bauen eine Verbindung zu unserer MySQL Datenbank;
Nun überprüfen Wir ob das Loginformular abgesendet wurde, dies geht wie folgt;
Nun überprüfen Wir zwar ob das Formular abgesendet wurde, jedoch fehlt uns noch das Überprüfen der Benutzerdaten.
Dazu definieren Wir erstmal folgende Variablen, für den Benutzernamen und Passwort;
$Username = mysql_real_escape_string($_POST['username']);
$Password = mysql_real_escape_string($_POST['password']);
Wir escapen die Variablen, um bestimmte Sicherheitslücken zu decken.
Nun definieren Wir einen Query, damit Wir später Abfragen können, ob die Daten stimmen.
Dies funktioniert wird folgt;
$CheckAcc = mysql_query("SELECT id FROM user_tabelle WHERE username = '$Username' AND password = '$password' LIMIT 1");
Mit dieser Query tun Wir folgendes;
Wir suchen in der MySQL Tabelle "user_tabelle" nach einer Spalte die eine ID, den Benutzernamen und Passworts der Eingegebenen Daten.
Falls der Server eine Spalte findet, der den Benutzernamen und Passwort hat, den Wir eingegeben haben,
wollen Wir, dass der Server den Benutzer einloggt und eine Session für diesen setzt, falls nicht, geben wir eine
Fehlermeldung aus, dass die Daten nicht stimmen.
Dies funktioniert wird folgt;
if(mysql_num_rows($CheckAcc) == 1)
{
// Der Benutzer hat richtige Daten angegeben..
} else {
// Der Benutzer hat falsche Daten angegeben..
}
Nun überprüfen Wir, ob der Benutzer richtige Daten angegeben hat, falls ja, tun wir folgendes;
Wir setzen eine Session für den Benutzer, und leiten den Benutzer auf die "home.php".
Falls der Benutzer falsche Daten angegeben hat, geben wir ihn eine Fehlermeldung aus;
Was ich noch vergessen habe, wir fügen unter
Eine Zeile, was überprüft, ob der Benutzer schon bereits eingeloggt ist, falls ja, leiten wir sie vor dem Einloggen
noch auf die "home.php".
Wir brauchen noch ein Formular, den wir den Benutzer zeigen, damit der Benutzer sich einloggen kann.
Dies machen wir mit HTML, also schreiben wir UNTER den PHP Tags;
<html>
<head>
<title>Loginsystem</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" />
</form>
</body>
</html>
Alles anzeigen
Nun kann der Spieler sich einloggen, jetzt wechseln wir in die Datei "home.php", und starten auch dort den
PHP Tag;
Wir includen auch hier die Datei class.php;
Nun starten wir auch hier die Session für den Benutzen;
Nun überprüfen Wir, ob der Benutzer eingeloggt ist, falls nicht, leiten wir den Benutzer zum Loginformular;
Ist der Spieler jedoch eingeloggt, geben wir den Benutzer seine Daten aus.
Dafür schreiben Wir folgendes;
$PlayerInfo = mysql_fetch_object(mysql_query("SELECT * FROM user_tabelle WHERE username = '".$_SESSION['username']."' LIMIT 1");
Nun sind wir auch schon fast am Ende der Anleitung.
Wir schreiben UNTER den PHP Tags nun unseren HTML Teil;
<html>
<head>
<title>Willkommen, <?php echo $PlayerInfo->username; ?></title>
</head>
<body>
Willkommen, <?php echo $PlayerInfo->username; ?><br />
<a href="logout.php">Ausloggen</a>
</body>
</html>
Wir können mit der Funktion...
...bestimmte Felder (Informationen) des eingeloggten Spielers auslesen/ausgeben.
Nun haben wir ein kleines Loginsystem, was auf MySQL und Sessions basiert.
Fragen und Probleme können gerne im Thread geschrieben werden.
Ein Feedback, Kritik oder Verbesserungsvorschlag, währe auch erwünscht.
Ich hoffe ich könnte den meisten hier helfen.
#Peace.
Ist das UCP privat oder zusammengebastelt?
Ansonsten, wenn du möchtest,
Kannst du mir mal den Source per PN schicken und Ich entbugg dir das ganze mal.
Schwachsinn, was ist denn mit den, die die Suchfunktion benutzen?
@ Zu der Warnung;
Füge diese Zeile ein
Du kannst mit der Spoiler Funktion das Menü verstecken/anzeigen.
Dafür erstellst du einen Div Container der eine Position "absolute" hat und positionierst es direkt unter
"Mehr". Bei einem Klick auf "Mehr" kannst du dann die Spoiler Funktion aufrufen.
Backspace kannst du mir mal bitte erklären was du da jetzt gemacht hast und was das ## heist?
Ich habe den Code kürzer gestalltet und den Query verschnellert.
Wenn du bei dem Query "SELECT *" schreibst, sucht er in jeder Spalte bzw. jedes Feld, da du nur ein Feld auslesen willst, reicht der Feldname.
Mit "mysql_fetch_object" zu arbeiten ist besser und übersichtlicher.
Die "##" Zeichen sind Kommentare. Ich habe die definierten Variablen auskommentiert, du musst die Textboxnamen bei dem "$_POST['..'];" ersetzen und die Kommentarzeichen entfernen.
Bei weiteren Fragen kannst du dich per Skype bei mir unter dem Namen "BackSpace.xL" melden.
./ Editiert \.
## $uname = $_POST['username'];
## $pw = $_POST['password'];
$loggedin = mysql_fetch_object(mysql_query("SELECT * FROM accounts WHERE Benutzername='$uname' AND Passwort='$pw' LIMIT 1"));
if($loggedin->LoggedIn >= 1)
{
echo '<label id="FehlerLabel2">Der Benutzer ist bereits eingeloggt!</label>';
} else {
$_SESSION['Benutzername'] = $uname;
$_SESSION['Passwort'] = $pw;
header("Location: index.php");
}
Alles anzeigen