Einfaches PHP Login{14}
Hallo
Ich möchte euch zeigen, wie man mit PHP ein simples Loginscript mit MySQL erstellt. Ich setze voraus, dass ihr ein bisschen PHP und HTML könnt, da es sich sonst sehr in die Länge ziehen würde.
Ausserdem übernehme ich keine Garantie und keine Haftung für die Scripte und ihre Sicherheit sowie Funktionsfähigkeit.
Unser Script wird sich in folgende Dateien aufteilen:
- login.php
- loginform.php
- checker.php
- connect.php
- config.php
Fangen wir mit der login.php an. Sie soll die Daten von der loginform.php empfangen und überprüfen. Es empfängt die Daten, verbindet sich zur Datenbank, überprüft den Code auf Schadcode und vergleicht die Werte. Wenn sie ok sind, registriert es die Session.
login.php
<?php include('connect.php'); $username=$_POST['username']; $password=$_POST['password']; $query=mysql_query("SELECT username, password FROM users WHERE username ='".$username."'") or die("konnte nicht selecten!!!"); mysql_real_escape_string($username); mysql_real_escape_string($password); $result=mysql_fetch_array($query); if(!$result['username']){ echo "Username oder Passwort falsch!"; header('location:loginform.php'); die(); } if($password != $result['password']){ echo "Username oder Passwort falsch!"; header('location:loginform.php'); die(); } session_register('username'); echo "Du bist erfolgreich registriert!"; ?>
Die loginform.php soll die Daten vom User entgegennehmen, also dort, wo man die Daten eingibt.
loginform.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Einfaches Loginscript -Tutorial</title> </head> <body> Deine Benutzerdaten:<br> <form action="login.php" method="post" > Benutzername: <input name="username" type="text" size="35"><br> Passwort: <input name="password" type="password" size="35"><br> <input type="submit" value="Login"> </form> </body> </html>
Der checker.php soll auf jeder Seite überprüfen, ob der User bereits eingelogt ist. Wenn nicht, soll er ihn zum Login weiterleiten.
checker.php
<?php session_start(); if(!session_is_registered('username')){ echo "Du hast keinen Zutritt!"; header('location:loginform.php'); die(); } ?>
Die connect.php soll die Verbindung zur Datenbank vereinfachen, in dem sie die Funktion in eine Datei vereint, die jedes Script includen kann ohne den Befehl dauernd wiederholen zu müssen.
connect.php
<?php include('config.php'); mysql_connect("$dbhost", "$dbuser", "$dbpassword") OR die("Konnte keine Verbindung aufbauen."); mysql_select_db("$dbdatenbank") OR die("Konnte keine Verbindung aufbauen."); ?>
Die config.php speichert alle Daten zur Datenbank verbindung ab.
config.php
<?php $dbhost="localhost"; $dbuser="user"; $dbpassword="passwort"; $dbdatenbank="Datenbankname"; ?>
Nun muss man in der config.php die Daten der MySQL Datenbank angeben. Dann kann man in der Datenbank eine neue Tabelle mit dem Namen users erstellen. In diese gibt man drei Felder ein: id, username und password. Die id stellt man auf Primary Key und auf Auto Increment.
Nun kann man zwei Werte eintragen und sich im loginform.php anmelden. Auf jede zu schützende Seite bindet man als erstes die checker.php ein.
Wenn man das Script ernsthaft verwenden will, muss man unbedingt noch mit einer Verschlüsselung der Daten arbeiten.
Falls es Probleme mit den Scripts gibt oder wenn ihr einen Fehler entdeckt, bitte ich euch einen Kommentar zu schreiben.
Jun 10, 2009 @ 14:29:09
Danke für diese nützliche Infos, die werden mir bestimmt viel helfen.Da ich immer noch einen Anfänger im Bereich PHP bin…:) Danke.
Jun 10, 2009 @ 16:40:26
Hi
Es freut mich, dass das Tutorial gefallen gefunden hat.
mfg
Jun 15, 2009 @ 22:59:39
können sie mir ihre email geben ich habe da probleme mit der mysql database. es hat sehr viele felder in denen ich noch was eintragen könnte. und er meldet mir immer den fehler
Fehler
SQL-Befehl:
CREATE TABLE `users` (
`id` VARCHAR( 128 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 128 ) NOT NULL ,
`password` VARCHAR( 128 ) NOT NULL
) ENGINE = MYISAM
MySQL meldet:
#1063 – Incorrect column specifier for column ‘id’
ich musste da irgend einen wert eintragen (128) dennoch meldet er mir fehler bitte um hilfe
Jun 16, 2009 @ 09:21:56
Hi
Versuchen Sie es einmal so:
Für die id sollten Sie INT nehmen und 10 Stellen müssten eigentlich reichen.
mfg
Jul 05, 2009 @ 13:23:55
Ich hab vor, das Skript zu verwenden, aber wie krieg ich das mit der Verschlüsselung der Daten hin?
Jul 05, 2009 @ 14:02:50
Außerdem kommt bei mir folgende Fehlermeldung:
Username oder Passwort falsch!
Warning: Cannot modify header information – headers already sent by (output started at …/login.php:12) in …/login.php on line 13
…
if(!$result['username']){
echo “Username oder Passwort falsch!”;
header(‘location:loginform.php’);
die();
}
…
Ich hoffe du kannst mir helfen.
Jul 08, 2009 @ 15:12:54
Need help i make all like your Tutorial but after that he said that “konnte nicht selecten!!!”
Why plz help me!!!
Jul 11, 2009 @ 14:34:32
Nettes Tutorial, übersichtlich und nicht zu lang.
@Fredi: Ich würde dir das WordPress Plugin “WP-Syntax” empfehlen, durch das Highlighting lässt sich dann der Quelltext um einiges besser lesen.
Jul 12, 2009 @ 14:26:28
Hallo
@Sebastian Meinst du die md5 Verschlüsselung des Passwort?
@Brain Da solltest du nochmals nachschauen, ob die Daten der Datenbank korrekt eingetragen wurden.
@Tarik Danke für den Tipp.
mfg
Jul 19, 2009 @ 14:06:14
Ihr habt das EVA Prinzip nicht beachtet, deshalb kommt der Headers already send error.
Ganz an Anfang der Seite muss ein ob_start(); und ans ende ein ob_end_flush();
Chris
Dez 15, 2009 @ 15:47:35
Danke für die Anleitung. Leider sehe ich die SQL-Abfragen nicht, sodass ich die Tabellen anlegen könnte
Danke nochmals.
Dez 15, 2009 @ 23:13:03
Hi
Welche MySQL Abfragen meinst du? Du musst einfach die Tabellen anlegen.
mfg
PHP Login mit AJAX | testX
Jan 03, 2010 @ 14:26:50
[...] habe bereits in diesem Artikel erklärt, wie man ein PHP Login mit einer MySQL Datenbank erstellt. Nun möchte ich in [...]
Mrz 10, 2010 @ 22:05:50
Hallo Liebe Leute,
Zuerst habe eine frage,ich bib anfänger und seit kurztem beschäftige mich mit php.
Jetzt wolte ganz einfach mit Login.php anfangen. meine fragen
1- <?php
include('connect.php');
$username=$_POST['username'];muss ich auch hier user anlegen.
$password=$_POST['password'];muss ich auch hier password anlegen.
2- DB habe mit phpmyadmin angelegt
CREATE TABLE `members` (
`member_id` int( 11 ) unsigned NOT NULL AUTO_INCREMENT ,
`voorname` varchar( 100 ) default NULL ,
`nachname` varchar( 100 ) default NULL ,
`user id` varchar( 100 ) NOT NULL default '',
`password` varchar( 32 ) NOT NULL default '',
PRIMARY KEY ( `member_id` )
) TYPE = MYISAM ;
(frage wo liege ich meine sql datei auf meine server an)
und php.code
$sql = "CREATE TABLE `members` (\n"
. " `member_id` int(11) unsigned NOT NULL auto_increment,\n"
. " `vorname` varchar(100) default NULL,\n"
. " `Nachname` varchar(100) default NULL,\n"
. " `User ID` varchar(100) NOT NULL default \'\',\n"
. " `password` varchar(32) NOT NULL default \'\',\n"
. " PRIMARY KEY (`member_id`)\n"
. ") TYPE=MyISAM;";
5- config.php
?>
wäre dankbar um Hilfe
mfg
Enrico