Lionstarrs Linux Blog

Ein Blog über Linux und die Welt

Loginsystem per PHP

Jeder PHP-Einsteiger stolpert früher oder später über das Thema: Ein Login-System programmieren. Was sich ersteinmal sehr kompliziert anhört, lässt sich – danke der PHP-Session-Funktionalität – sehr einfach verwirklichen.
Zuerst einmal sollte man sich Gedanken über die Benutzer-Tabelle machen, die in diesem Beispiel mit MySQL realisiert wird. Auf jeden Fall braucht ein Benutzer einen Namen und ein Passwort. Um das Einloggen möglich zu machen benötigen wir zusaätzlich ein Feld, welches die Session speichert, die der Benutzer gerade nutzt. Natürlich darf in keiner SQL-Tabelle der Primary-Key, die id fehlen! Und da haben wir auch schon die Struktur der Tabelle:


[Hier klicken um die Tabelle zu sehen]

Diese Tabelle kann mit dem folgenden SQL erzeugt werden:


[Hier klicken um das SQL zu sehen]

Dieses SQL kann man nun z.B. mit PHPMyAdmin ausführen, um die Tabelle user zu erhalten, mit der das Skript arbeiten wird. Nun bringt einem eine Tabelle an sich natürlich noch wenig – als wird jetzt das Login-Skript geschrieben. Nun ist es so, dass man – meiner Meinung nach – immer am weitesten in PHP kommt, wenn man den Code in Module fasst. So hat fast jedes meiner Projekte gleich mehrere Dateien. Hier ein Beispiel:

  • index.php – Hier wird die Variable action ausgewertet,
    um die richtige Include-Datei auszuführen.
  • config.inc.php – Alle Konfigurations-Variablen werden hier per define als Konstanten festgesetzt.
  • mysql.inc.php – Die Verbindung zu MySQL wird hier gestartet.
  • functions.inc.php – Alle selbstgeschriebenen Funktionen, z.B. zum Einloggen oder Registrieren eines Benutzers finden hier ihren Platz.

In diesem Projekt werden wir zusätzlich zu den hier aufgelisteten Dateien noch eine Datei zum Login, eine zum Logout und eine für den Member-Bereich benötigen.
Wie man sieht, benutzt dieses Projekt Smarty, welches downgeloaded werden muss.
Hier ersteinmal das Herzstück des Projektes, die index.php:


[Hier klicken um die Datei index.php zu sehen]

Was hier geschieht ist schnell erklärt: Erst werden alle benötigten Dateien eingebunden und eine Session gestartet (1-6). Dann wird der Wert der GET/POST-Variable action abgefragt und entschieden, was zu tun ist (8-22). Passend zur aktuellen Aktion wird daraufhin eine Datei eingebunden, die auf jeden Fall die Variablen $title und $content setzen sollte! Zwischen Zeile 25 und 30 wird zusätzlich geprüft, ob der Benutzer eingeloggt ist, um passenderweise den Link zum Ein- oder Ausloggen anzuzeigen. Diese Variablen werden dann an das Smarty-Template weitergerreicht. Das Template ist relativ einfach gehalten und ich habe Teile davon von der Seite CSS4YOU:


[Hier klicken um die login.tpl zu sehen]

Wie man sieht, macht hier die CSS-Datei die eigentliche Arbeit. Diese findet man im Download des Projektes, da das ja nicht unbedingt relevant ist!

Nun benötigen wir natürlich noch die Dateien config.inc.php, mysql.inc.php und smarty.inc.php. Die functions.inc.php werden wir als letztes besprechen.
Hier also nun die Dateien:


[Hier klicken um die config.inc.php zu sehen]

[Hier klicken um die smarty.inc.php zu sehen]

[Hier klicken um die mysql.inc.php zu sehen]

Ich denke, dass die Dateien eigentlich selbsterklärend sind. Man könnte die Dateien natürlich auch in einer Verbinden, aber so ist das noch ein bisschen übersichtlicher.

Jetzt geht’s aber an das richtig wichtige: Hier sind die Dateien, die in der index.php includiert werden, eine nach der anderen:


[Hier klicken um die register.inc.php zu sehen]

In der register.inc.php kann der Benutzer sich – wie der Name schon sagt – registrieren. Er wird direkt nach der Registrierung ohne jegliche Email-Aktivierung o.Ä. aktiviert und kann sich einloggen. Zeilen 7-32 behandeln den Fall, dass der User bereit’s registrieren gedrückt hat und prüfen die Daten auf eventuelle Fehler. Wenn alles korrekt ist, wird die Funktion register aufgerufen, die das eigentliche Registrieren des Users übernimmt. Hier nun die nächste Datei:


[Hier klicken um die login.inc.php zu sehen]

Ebenfalls eigentlich selbsterklärend: Erst wird geprüft, ob der Benutzer bereits eingeloggt ist. Ist er das nicht und hat schon Login gedrückt wird er auf Existenz überprüft und dann eingeloggt. Andernfalls (Der Button “Login” wurde noch nicht betätigt) wird ein Formular zum einloggen ausgegeben. Wenn der Benutzer bereits eingeloggt ist, wird er darauf hingwiesen. Nach dem Login kommt der Logout:


[Hier klicken um die logout.inc.php zu sehen]

Der Benutzer darf sich nur ausloggen, wenn er bereits eingeloggt ist. Ist er das, wird er auf seinen Wunsch hin durch die Funktion logout ausgeloggt. Hier schließlich noch die Datei memberarea.inc.php:


[Hier klicken um die memberarea.inc.php zu sehen]

Diese Datei ist mehr als Platzhalter gedacht. Hier können alle Funktionen platziert werden, die nur angemeldeten Benutzern zur Verfügung stehen. Schließlich die Datei functions.inc.php:


[Hier klicken um die functions.inc.php zu sehen]

Hier sieht man, dass das eigentliche Einloggen nur das Speicher der aktuellen Session ID im Datensatz des Benutzers ist. So kann man den Benutzer auf jeder Seite leicht erkennen. Zum Ausloggen löscht man einfach das SESSION Feld im Datensatz. Ob der Benutzer eingeloggt ist kann man einfach überprüfen, indem man die Tabelle nach allen Datensätzen mit der aktuellen Session ID abfragt.

Die Sessions machen es einem sehr einfach, sachen wie Login-Systeme in PHP zu verwirklichen. Ich hoffe, in diesem Tutorial sind keine Fehler oder Unschönheiten versteckt, wenn dies doch so ist, oder sie einen Verbesserungsvorschlag/Kritik äußern möchten: Hinterlassen sie soch einfach einen Kommentar. Vielen Dank für ihr Interesse! Das Skript kann man übrigens hier herunterladen!

In: ,
— March 24, 2008


Ferien

Nun sind Ferien und ich fahre für 2 Wochen ins Ferienhaus, deswegen wird in diesen hier nichts erscheinen. Ich wünsche allen Besuchern schöne und erholsame Ferien.

In: No tag for this post. — March 8, 2008


Neue MacBook’s im Sommer?

Kaum sind die neuen MacBook’s und MacBook Pro’s von Apple herausgekommen, geht die rästelraterei schon weiter. Laut MacRumors sollen nämlich schon im Juni, spätestens aber im Sommer wieder neue Geräte released werden. Die Seite berichtet weiterhin, dass Apple wohl von Intel dazu gebracht wurde, die Serien-Notebooks auf die neuen Prozessoren upzugraden und das das eigentliche Update – dann nämlich auf Montevina – uns erst im Juni bevorsteht.

Leider ist das ja noch ein bisschen hin, aber mal sehen, was sich tut. Leider waren die momentanen Updates ja wirklich eine Enttäuschung, zumindest für MacBook Pro -nutzer. Meine Wunschliste fürs Nächste Upgrade: Highres auch beim 15″, Blueray Laufwerk und vielleicht eine SSD/HDD – Hybrid-Festplatte.

In:
— March 1, 2008


Neue MacBook (pros) – Tatsächlich

Es gab schon viele Gerüchte um die neuen MacBook Pros, die auf jeden Fall diese Woche erscheinen würden. Da schienen sich alle sicher. Und tatsächlich:

Es gibt nicht nur neue MacBook Pros sondern auch neue MacBooks. Zuerst einmal die Neuerungen bei den MacBook Pros:

  • Der 17-Zöller hat nun auch eine LED-Hintergrundbeleuchtung
  • Alle MacBook Pros haben jetzt MultiTouch-Trackpads, wie man sie schon aus dem MacBook Air kennt
  • Die Festplattenkapazität wurde erhöht. Die Grundkonfiguration ist nun 200GB für das kleine, und 250GB für das große MacBook Pro.
  • Der VRAM der NVIDIA8600 wurde erhöht: 256MB für das kleine, 512MB für die großen Modelle.
  • Der Prozessor ist nun auf 2.4 GHz beim kleinen und 2.5 GHz beim großen getacktet. Beeindruckend: Die 6MB L2 Cache des 2.5 GHz Prozessors.

Und hier die neuerungen der MacBooks:

  • Schnellerer Prozessor: 2.1 GHz das Einstiegsmodell, 2.4 GHz die großen
  • Größere Festplatte: Von 120GB (klein), über 200GB (mittel) bis zu 250GB (schwarz)
  • Das mittlere und große MacBook haben nun auch 2GB RAM.

Alles in allem hatte ich mir vom Update eigentlich mehr erwartet (BlueRay Laufwerk), aber immerhin. Sehr auffallend: Die MacBooks haben jetzt sehr hohe Specs., fast so gut, wie die MBPs.

In: ,
— February 26, 2008


Coole Gadgets

Frisch entdeckt und sehr witzig:

  1. Der Geek-Test:58% Geek
  2. Schnellschreiben:56 Wörter
In: ,
— February 19, 2008


Welche Programmiersprache? Eine kurze Einführung!

Eine oft gestellte Frage von Programmieranfängern ist: Welche Programmiersprache ist gut? Was soll ich zuerst lernen? Hier eine kleine Liste mit Programmiersprachen und welche Erfahrungen ich mit ihnen gemacht habe.

  1. Java: Ich halte Java für die beste Programmiersprache für Einsteiger. Java zwingt einen gerade zu Objekt-Orientiert zu programmieren. Außerdem kann man in Java sehr schnell und einfach grafische Sachen programmieren. Ich persönlich habe Programmieren mit Java gelernt, die Sprache allerdings später wegen ihrer Langsamkeit nie wieder angerührt.
  2. C / C++: C ist sicher eher im low-level Bereich anzusiedeln. Einmal gelernt, leider kaum noch genutzt, obwohl ich C / C++ für eine der besten Programmiersprachen halte. Wenn man sich einmal ansieht, wieviel in C programmiert wurde, wird einem klar, dass die Sprache einfach gut sein muss. Für die nicht-system-Programmierer würde ich allerdings doch C++ empfehlen.
  3. Perl: Perl ist meine absolute Lieblings-Programmiersprache, wenn man das so sagen kann. Trotz oder gerade wegenn der sehr komplizierten Syntax ist Perl eine sehr mächtige Sprache. Hervorragend zum Programmieren von kleinen Helfer-Tools unter Linux/Unix, aber auch als CGI-Sprache sehr zu empfehlen. Übrigens: Ich habe schon mehrere Posts über kleine Helferchen in Perl gemacht, alle unter dem Tag perl zu finden. So z.B. auch das LWP-Tutorial.
  4. PHP: Wer Webprogrammierung lernen will, sollte auf jeden Fall PHP als Einstiegs-Sprache lernen. Relativ einfache Syntax, trotzdem sehr mächtig (wenn auch nicht ganz so, wie Perl), Perfekt für den Einsteiger.
  5. Python: Eine Sprache, die ich gerade erst kennen gelernt habe: Python. In Python lassen sich sehr gut GUIs für z.B. andere Programme schreiben, und die Syntax ist intuitiv.

Das war’s ersteinmal. Fallen euch noch mehr Programmiersprachen ein, die hier erwähnt werden sollten? Welche Erfahrungen habt ihr mit den oben genannten gemacht? Schreibt doch einfach einen Kommentar und gebt eure Meinung ab!

In: , , ,
— February 17, 2008


Kleine Probleme mit der Seite

Nach denen es kleine Probleme mit dem Blog gab, sollte jetzt wieder alles funktionieren wie vorher! Falls noch Fehler auftreten sollten, bitte ich alle, mir unverzüglich eine email an lionstarr [{at}] googlemail PuNkT com zu senden! Danke sehr!

In: No tag for this post. — February 16, 2008


Truecrypt 5.0 – GUI für Linux, MacOS X Version, WDE

Da haben die Entwickler von TrueCrypt echt was geschafft. Die Version 5.0 des bekannten Festplatten-Verschlüsselungs Tools besitzt nämlich gleich mehrere seit langem erwartete und erhoffte neue Features. Hier ein kurzer Überblick:

  • GUI für Linux: Lange mussten sich die Linux-Benutzer von TrueCrypt mit der Kommandozeile rumschlagen. Das klingt zwar weniger Schlimm, eine GUI ist aber doch für viele Leute eine wichtige Verbesserung. Nebenbei und nicht so groß angekündigt: Die neue Unabhängigkeit TrueCrypt’s vom Linux Kernel. Das verhindert solch kryptische Fehlermeldungen in Zukunft, die einen zwangen, den Kernel wieder “downzugraden”.
  • MacOS X Version: Nur wenige Wochen, nachdem OsXCrypt eine inoffizielle Version TrueCrypt’s für MacOS X veröffentlicht hat, zieht nun das Original durch. Sogar eine GUI gibt es von Anfang an. Es bleibt zu erwarten, welche Lösung sich durchsetzen wird, wobei ich hier eher auf das Original tippen würde.
  • Windows WDE + Features: Hinter dem Kürzel WDE versteckt sich Whole Disk Encryption, zu deutsch Komplettverschlüsselung. So kann man nun unter Windows sogar Systempartitionen verschlüsseln, und wird vor dem eigentlichen Start des eigentlichen Betriebssystemes nach dem Passwort gefragt. Dies ist ein Features, was nur wenige komerzielle Produkte besitzen. Dazu kann man nur sagen: Genial gemacht, und hoffentlich wird es bald auf Linux und MacOS X portiert! Andere Neuerungen unter Windows sind…
    • …pipelined operations, eine Technologie, welche sowohl die Lese- als auch die Schreibgeschwindigkeit um bis zu 100% verbessern soll.
    • …eine neue Art der Verschlüsselung, die schneller und besser als LRW sein soll. (Ja, ich spreche von XST)
    • …SHA-512 als neuer Hash-Algorithmus

Das war’s dann auch. Alles in allem kann man nur sagen: Super gemacht, TrueCrypt-Team. Weiter so!

    In: , ,
    — February 7, 2008


    Ein Filter fürs Web – Nun auch unter Windows

    Unter Linux habe ich schon immer den Privoxy Webfilter geliebt. Einmal als Proxy eingetragen, schon gehen die nervigsten Banner aus dem Web flöten. Und zusätzlich kann man sogar eigenen Filterregeln eintragen, die z.B. Seiten anders aussehen lassen oder deren Navigation verbessern.

    Nicht ganz so komplex aber dafür auch deutlich einfacher zu bedienen ist die passende Variante für Windows: Einmal Proxomitron installiert, gestartet, und im Web-Browser als Proxy 127.0.0.1:8080 eingegeben, schon wird aller Traffic gefiltert. Besonders das Hinzufuegen von Regeln gestaltet sich Privoxy gegenüber extrem komfortabel: Statt in Konfigurationsdateien rumzuarbeiten kann man einfach im Programm unter Regeln “Neue Regel” drücken, und den Test-Ausdruck direkt ausprobieren.

    In:
    — February 1, 2008


    9 Firefox-Erweiterungen, der zweite Teil

    Im ersten Teil habe ich die ersten 9 Firefox-Erweiterungen, die ich empfehlen kann, vorgestellt. Dies ist ein Follow-Up Post, indem wieder 9 Firefox Erweiterungen vorgestellt werden.

    1. Pearl Crescent Page Saver Basic: Diese Erweiterung macht es möglich, in Firefox Fotos von Webseiten – auch von der ganzen Webseite, nicht nur vom sichtbaren Bereich – zu erstellen. Das erspart einem viel Arbeit mit Gimp, wenn man einen Snapshoot einer Webseite braucht – und Blogger brauchen so was andauernd!
    2. PicLens: Diese Erweiterung ist ein Eye Candy für viele Seiten, die mit Bildern zu tun haben. Es ermöglicht einem, die Bilder wie an einem 3D-Wall an der Wand zu sehen – nur viel schicker. Abgesehen davon, dass es gut aussieht arbeitet es sogar – glaube ich, zumindest – mit Customize Google so zusammen, dass sogar im 3D-Modus automatisch die nächsten Bilder nachgeladen werden. Man muss aber vorher in CustomizeGoogle einstellen, dass die Links in der Google Bilder Suche nicht durch direkte Links zu den Bilder ersetz werden.
    3. Restart Firefox: Diese Erweiterung macht genau das, was ihr Name schon sagt: Sie ermöglicht es eine, Firefox per Knopf neuzustarten. Was sich ersteinmal sehr trivial anhört, ist im praktischen Betrieb sehr nützlich, um nicht bei jeder Neueinstellung einer Erweiterung alle geöffneten Tabs zu verlieren.
    4. Snap Links: Wer oft viele Links öffnet, wird diese Erweiterung lieben lernen. Mit gedrückter Maustaste kann man einen Kasten um alle Links ziehen, die dann in Tabs geöffnet werden.
    5. Stumble Upon: Dies ist eine Erweiterung, die es einem möglich macht, direkt im Browser die Social Bookmarking Seite Stumble Upon zu benutzen. Sehr praktisch, dadurch entdeckt man klasse Seiten. Wäre ürbigens freundlich, auch dieser Seite hier einmal ein Thumbs Up zu geben!
    6. Tab Effect: Wiedereinmal so eine kleine Spielerei. Diese Erweiterung erzeugt einen Cube-Überganseffekt beim Wechsel von Tabs. Sehr Prozessorlastig, aber auch sehr praktisch zum Angeben. Übrigens kann man in Firefox Profile-> extensions-> {0784CD66-62FE-4cef-ABF4-F8ED9B654ACC} -> content -> javascript.js, in de r Zeile TabEffect.xpcomObj.translateToNextTab(back, 24); die 24 durch eine kleiner Zahl ersetzen, um die Animation kürzer zu machen.
    7. Tab Mix Plus: Diese Erweiterung ermöglicht viele Einstellungen im Zusammenhang mit Tabs. So kann man z.B. einstellen, dass auch beim Hovern der Maus über inaktiven Tabs, diese geöffnet werden. Ein anderes Feature ist das öffnen von sämtlichen Links in einem Fenster.
    8. UnPlug: Zum Download von eingebunden Objekten (z.B. Flashfilme) kann man sehr gut diese Erweiterung benutzen!
    9. Web Developer: Diese Erweiterung ermöglicht z.B. das validieren von HTML & CSS, aber auch das in place bearbeiten des HTML-Codes. Andere Funktionen sind das Deaktivieren von Grafiken, das Hervorheben von deprecated Elementen und vieles Anderes.

    Als Abschluss dieser Reihe noch eine Theme-Empfehlung für Angeber: Pimpzilla. Dieses Theme sieht seht gut aus, aber ist vielleicht für den ein oder anderen auch ein bisschen überladen!

    In: ,
    — January 30, 2008


    Pages: Vorherige 1 2 3 ...6 7 8 9 10 ...18 19 20 Nächste


    Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien: