Hallo, Gast! (Anmelden Registrieren)

[TUT] Loginscript
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5

Antwort schreiben 


Xtr3m Offline
Junior Member
**


Beiträge: 46
Registriert seit: May 2010
Bewertung 7
Beitrag #1
[TUT] Loginscript
Hallo Leute,

was möchte jeder Webmaster auf kurz oder lang haben ? -> registrierte User Damit man sich auch auf deiner Site registrieren, einloggen und ausloggen kann, zeige ich euch in diesem TUT, wie man ein einfaches Loginscript in php mit mysql anbindung bastelt wink


Schwierigkeit: Fortgeschritten / Amateur
Scriptsprachen: PHP/Mysql/HTML
Dauer: ca. 30-40 Minuten


Wir benötigen dazu:
  • 1x Webhoster (free oder paid)
  • 1x Mysql Datenbank
  • HTML / php Grundkenntnisse


//Achtung: Da das Script wirklich fuer Anfänger gedacht ist, führe ich die PHP Sessions / und Sicherheitsmerkmale nicht in weitem Maße aus.

Teil 1 : Die Datenbank

Im ersten Teil behandeln wir das Thema Datenbank.
Dazu müssen wir uns überlegen: "Was wollen wir von unseren Usern wissen ?"
Danach bauen wir unsere Struktur in der Datenbank auf. Zu jeder erleichterten Mysql-Administration, die normalerweise über "PhphMyAdmin" gehandhabt wird, empfehle ich immer wieder mit Freuden den Mysqldumper.
-> Download <-

Ansonsten genügt natürlich phpmyadmin.

Nehmen wir an, wir wollen nur die wichtigsten Daten des Users wissen. Username, Passwort, emailadresse (ist natürlich immer um Felder erweiterbar). Also legen wir mal in der Datenbank mal eine Tabelle mit dem namen "user" an. In dieser Tabelle legen wir die Felder (username[TEXT],passwort[TEXT],email[TEXT])

Wir definieren zur vereinfachung username,passwort & email als TEXT.

Code:
Struktur:
--- user
-username
-passwort
-email

So, nun haben wir in der Datenbank eine Tabelle, wo wir die userdaten reinspeichern können. Nun brauchen wir noch ein Formular, welches die userdaten hier reinspeichert, welches logischerweise das Registrierungsformular der User darstellt. Somit kommen wir zum Teil 2 - die Registrierung.

Teil 2 : Die Registrierung

Dass sich user registrieren können, brauchen wir ein Html-Formular, wo die user ihre gewünschte Daten eingeben (form.html) und eine php-Datei, welche die eingegebenen Daten verarbeitet (in unserem beispiel die register.php):

Code:
form.html:

<form action="register.php" action="POST">
<table border="1" align="center">
<tr>
  <td>Username:</td>
  <td><input type="text" name="username"></td>
</tr>
<tr>
  <td>Passwort:</td>
  <td><input type="password" name="passwort"></td>
</tr>
<tr>
  <td>email:</td>
  <td><input type="password" name="email"></td>
</tr>
<tr>
  <td colspan="2" align="center"><input type="submit" value="registrieren !"></td>
</tr>
</table>
</form>

Zur Erklärung:
Dass der <form> Tag, ein Formular ankündigt, muss ich wohl nicht erwähnen. Hierbei ist das Attribut "action=POST" wichtig. Man kann sich das so vorstellen, dass die Werte, die der user eingibt, der nächsten Form "gepostet" werden, ohne sie in den Link zu schreiben (würde eine sicherheitslücke darstellen z.B.)...
Die 2. methode ist "GET" ... Hier werden die Werte im Link mitgesandt und die php-datei, an die die Werte geschickt werden per Link übergeben (das ist, wenn der link z.B. so aussieht: http://www.xyz.de/reg.php?user=xxx&pw=xxx ... hier kann man die daten in der php per $_GET['user'] z.B. abrufen.
Zurück zum Thema:
Nun brauchen wir die "register.php", welche uns die Daten verarbeitet.
Zuerst müssen wir eine verbindung zu unserer Datenbank aufbauen, wo wir die Daten reinspeichern wollen, diese können wir einfach per include(datei.php) in eine andre Datei schreiben und include'n oder ganz oben hin:

PHP-Code:
<?
//MYSQL Daten
$mysqlhost="localhost"// Dein Mysql Host (Standart:localhost)
$mysqluser="xxx"// MySQL-User
$mysqlpwd="xxx"// Passwort

//Connection String 
$connection=mysql_connect($mysqlhost$mysqluser$mysqlpwd) or die
(
"Verbindungsversuch fehlgeschlagen");

$mysqldb=""// Datenbank
mysql_select_db($mysqldb$connection) or die("Konnte die Datenbank nicht
waehlen."
);
?>

Die Datenbank kann auch erst danach in jeder datei verschieden angegeben werden, aber wir greifen ja nur auf eine zu (sollte man bei projekten der übersicht halber auch tun)...

So, jetzt besteht mal die verbindung zu unserer Datenbank, als nächster wollen wir die Daten vom Formular empfangen und sicher gehen, ob der user alle Daten eingegeben hat. Dazu nutzen wir einfacherhalber die Funktion empty() .. Wenn der User alle Daten eingegeben hat, dann danken wir ihm für die registrierung, ansonstenschicken wir ihn wieder zurück.

PHP-Code:
<?
// Daten übergen:
$username $_POST['username'];
$passwort$_POST['passwort'];
$email$_POST['email'];

//checken ob alle felder eingegeben wurden:
if(empty($username) || empty($passwort) || empty($email)){
echo 
"<script>alert(\"Bitte alle Daten eingeben !\");</script>";
echo 
"<meta http-equiv='refresh' content='1; URL=form.html'>";
}else{
//wenn ja, dann speichern wir die Daten in die DB:
mysql_query("INSERT INTO user(username,passwort,email)VALUES('$username','$passwort','$email')");
echo 
'Lieber'.$username.', herzlichen Dank für die Registrierung !';
}
?>

Erklärung:
Hierbei bedarf es nicht viel erklärung mehr. Wenn die Daten alle eingegeben wurde, speichern wir diese in die Felder in der Dtaenbank mittels der mysql_query (PHP FUNKTION) "INSERT INTO" (MYSQL SYNTHAX) ...
Wir haben das Passwort einfacherhalber per Reintext übergeben, natürlich kann man dies mittels der php md5() Funktion verschlüsseln/codieren.
Der User ist nun in der Datenbank gespeichert und kann sich nun in unsere Website mittels dem (noch nicht vorhandenem Loginscript tongue) einloggen.


Teil 3 : Das Login
So, der User in der Datenbank vorhanden, er hat sich erfolgreich registriert und möchte sich nun einloggen. Dazu brauchen wir ein Loginformular und eine Datei, die die Daten wieder verarbeitet. Um euch die GET-Methode auchein bisschen näherzubringen, schreiben wir die login-funktion und die logoutfunktion in eine Datei namens "function.php". Aber zuerst zur Loginform:

Code:
<form action="function.php?ac=login" method="POST">
<table border="1" align="center">
<tr>
  <td>Username:</td>
  <td><input type="text" name="user"></td>
</tr>
<tr>
  <td>Passwort:</td>
  <td><input type="password" name="pass"></td>
</tr>
<tr>
  <td colspan="2"><input type="submit"value="login"></td>
</tr>
</table>
</form>
Erklärung:
Wir übergeben hier im <form tag> im Link ein Attribut, welches ich mal "ac" (für acttion) genannt habe. Das können wir im php Teil dann per $_GET abrufen. Alle anderen eingegebenen Daten rufen wieder per "$_POST" ab...
Kommen wir zur "function.php", wo die Daten verarbeitet werden und die Session entsteht:

PHP-Code:
//Datenbankverbindung aufbauen
<?
//MYSQL Daten
$mysqlhost="localhost"// Dein Mysql Host (Standart:localhost)
$mysqluser="xxx"// MySQL-User
$mysqlpwd="xxx"// Passwort

//Connection String 
$connection=mysql_connect($mysqlhost$mysqluser$mysqlpwd) or die
(
"Verbindungsversuch fehlgeschlagen");

$mysqldb=""// Datenbank
mysql_select_db($mysqldb$connection) or die("Konnte die Datenbank nicht
waehlen."
);
?>

<?
// Wir holn uns mal mit dem "ac" aus dem link, was wir tun wollen
$action $_GET['ac'];

//Jetzt werten wir die variable aus und handeln dementsprechend
if($action == "login"){
//wir rufen die Funktion "login" auf
login();
}else{
logout();
}
?>

Erklärung: In diesem Teil der "function.php" übergeben wir mal den Wert "ac" aus dem Link. In deisem Falle ist er "login" . Wir schrieben uns 2 Funktionen (login und logout). Falls die Form "login" übergibt, rufen wir die function "login" auf, falls logout, dann die function "logout", die wir unmittelbar darunter der formhalber ausprogrammieren:

PHP-Code:
<?
function login(){
//die variablen übergeben:
$username $_POST['user'];
$passwort $_POST['pass'];

//Jetzt checken wir, ob der user mit dem pw in der datenbank vorhanden ist
$usercheck mysql_query("SELECT username, passwort FROM user WHERE username = '$username' AND passwort='$passwort'");
$user mysql_fetch_object($usercheck);
if(
$username != $user->username && $passwort != $user->passwort){
        echo 
"<script>alert(\"Userdaten stimmen nicht ueberein !\");</script>";
        exit();
}
if (
mysql_num_rows ($usercheck) > 0

  
// Hier erstellen wir die Sessionvariablen und registrieren diese 
  
$_SESSION["user_nickname"] = $user->username
  
$_SESSION["user_password"] = $user->passwort;
//weiterleitung, user ist nun eingeloggt !
echo "<meta http-equiv='refresh' content='1; URL=../index.php'>";
    }
}
?>
Erklärung:
Die "login" function stellt sicher, dass Passwort mit username in der datenbank vorhanden und richtig eingegeben worden sind. Wenn ja, speichert der Server in den Browser die Session-Variablen mittels Cookie, die nach erfolgreichem login bzw. databasecheck erstellt werden. User ist somit eingeloggt. Natürlich lassen sich sessions ausbauen und erweitern mit sessions Codes etc... [CLICK] ... Damit sich der User per Link auch wieder ausloggen kann, fügen wir eine logout function hinzu: (in die function.php darunter):

PHP-Code:
<?
function logout(){
ob_start (); 
session_start (); 
session_unset (); 
session_destroy ();
header ("Location: index.php"); 
ob_end_flush (); 
}
?>
Erklärung: Hier gibt es nicht viel zu erklären. Das Script zerstört die Browser-Session und der user ist ausgeloggt.

In einer php Datei können jetzt die Browser userdaten abgerufen werden, und zwar per:

PHP-Code:
//z.B. der username: 
$_SESSION["user_nickname"

Hiebei muss ein "session_start" der Datei vorangehen. Will man jetzt eine Seite schützen und nur für mitglieder / eingeloggte user ersichtlich machen, fügt man folgendes am Anfang der ! PHP Datei ! ein:

PHP-Code:
//Prüfen ob User eine gültige Session besitzt bzw. eingeloggt ist:
if(!isset ($_SESSION["user_nickname"])){
echo 
"<script>alert(\"Du musst registriert sein !\");</script>";
echo 
"<meta http-equiv='refresh' content='1 URL=login.html'>";    


und schon hast auch du eine geschützte seite wink

Das ist jetzt die einfachste Form eines login /register scripts. Natürlich kann man dies noch viel weiter ausbauen, aber fürn anfang zum testen reichts mal wink

Wenn ihr etwas nicht versteht, dann bitte hier in den Thread schreiben, beantworte euch gerne eure Fragen !

Hoffe das Tutorial ist einigermaßen für Anfänger geeignet, von ein bisschen selbstinitiative und grundwissen, muss man bei solchen Dingen aber davon ausgehen...

[TUT © by XTR3M]

Lg,

Xtr3m alias Xeption

+ PHP Loginscript TUT (Fortgeschritten / Amateur)
+ PHP PN System TUT (Fortgeschritten / Amateur)
+ PHP Mysql Database beginner (Anfänger/Fortgeschritten)
+ PHP-Mailer (Anfänger)
+ MyBB Login per vb.NET - Form (Fortgeschritten / Amateur (!))
[Mein devBlog]
Ich würde ja die Welt verändern, aber Gott gibt mir den Sourcecode nicht Huh
(Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2010 18:54 von Xtr3m.)
02.05.2010 23:43
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
ironie Offline
Super Moderator
*****


Beiträge: 209
Registriert seit: Oct 2008
Bewertung 16
Beitrag #2
RE: [TUT] Loginscript
kleine anmerkung von mir:
passwörter nie als klartext spiechern

ja ich halte nichts von gross und kleinschreibung, bei word drücke ich immer F9 damit alles richtig wird, ich bin halt entwickler .... und hab nen längeren ..... Lebenslauf wink
04.05.2010 18:43
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
GodFather Offline
Posting Freak
*****


Beiträge: 1.866
Registriert seit: Dec 2008
Bewertung 9
Beitrag #3
RE: [TUT] Loginscript
da hat ironie nicht ganz unrecht. in php gibt es die funktion md5($string);
die verschlüsselt den string md5.

ansonsten top :-)

Mit freundlichen Grüßen / best regards
GodFather
04.05.2010 18:51
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Xtr3m Offline
Junior Member
**


Beiträge: 46
Registriert seit: May 2010
Bewertung 7
Beitrag #4
RE: [TUT] Loginscript
... und darum steht in meinem tut auch

Zitat:"Wir haben das Passwort einfacherhalber per Reintext übergeben, natürlich kann man dies mittels der php md5() Funktion verschlüsseln/codieren."

Cool

Danke,

lg,

xtr3m!

+ PHP Loginscript TUT (Fortgeschritten / Amateur)
+ PHP PN System TUT (Fortgeschritten / Amateur)
+ PHP Mysql Database beginner (Anfänger/Fortgeschritten)
+ PHP-Mailer (Anfänger)
+ MyBB Login per vb.NET - Form (Fortgeschritten / Amateur (!))
[Mein devBlog]
Ich würde ja die Welt verändern, aber Gott gibt mir den Sourcecode nicht Huh
04.05.2010 19:13
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


DruckenSendenNewsTwitterTwitterAnfang
Gehe zu:

Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste