[Tutorial]Wie mache ich eine Registration mit PHP und Mysql?

02/23/2012 19:00 IchbinGerd#1
Hallo und Willkommen zum ersten Tutorial von mir.
Vorne Weg ich bin nicht der beste in Rechtschreibung aber ich versuche euch alles verständlich zu erklären.

Fangen wir an ich setze jetzt mal voraus das ihr HTML beherrscht für Formulare etc.

Grundlagen:
PHP fängt immer mit <?php an und hört mit ?> auf mit // Kommentiert man Zeilen aus sprich der PHP Parser ignoriert diese.Mit echo gibt man ein "Spruch" aus und mit exit beendet man den Script!

Dann Fangen wir an :) als erstes machen wir die Verbindung auf eurem Mysql-Server oder z.b. bei co.de (Hoster).
Dazu braucht ihr Lediglich die FTP-Zugangsdaten.
Das wichtigste ist das ihr nur Benutzername und Passwort ändert und die Datenbank!

So sieht das dann aus bei Mysql:

PHP Code:
$serververbindung mysql_connect("localhost""Benutzername" "Passwort")
or die(
"Fehler aufgetreten!!!!"); 
mysql_select_db("Eure Datenbank") or die ("Datenbank nicht gefunden"); 
So nun müssen wir erstmal die Daten vom Formular auf den PHP übertragen.Das machen wir mit $_POST.
Wir sagen mal wir haben jetzt Username , Email , Emailwdhl , Password , Passwordwdhl .Und damit ihr mal ein paar Extras seht lassen wir die IP rausfinden und das Registerdatum rausfinden.

PHP Code:
$username $_POST["username"]; // Der Username
$password $_POST["password"]; // Password
$password2 $_POST["password2"]; // Passwordwiederholung
$email $_POST["email"]; // email 
$email2 $_POST["email2"]; // emailwiederholung
$ip $_SERVER['REMOTE_ADDR']; // rausfinden der IP
$datum =date("d.m.Y"); // datum Y = Year m = monat D = Day 
Nun haben wir das , aber was ist wenn jemand nicht das gleich passwort eingibt ? Dann gibts Probleme :/ also wurde die funktion If eingefügt ;).
Variablen werden immer als $variablenname definiert!

!= Bedeutet ungleich
== Gleich
== "" wenn es leer ist
und bitte benutzt anstatt OR ( ist für einen neuen Befehl) immer || es ist schneller im Script!

PHP Code:
if($password != $password2 || $username == "" || $password == "" ||
$password2 == "" || $email == "" || $email2 == "" || $email != $email2)
    {
    echo 
"Bitte Fülle alles richtig aus !"// Gibt den Text aus wenn Fehler
    
exit; // Beendet den Script wenn Fehler!
    

Als nächstes muss man das Passwort verschlüsseln damit es keiner mehr Lesen kann dies dient zur Sicherheit ! Gibt auch noch andere Verschlüsselungstypen!

PHP Code:
$passwort md5($passwort); 

Aber was machen wir wenn es einen Username bereits gibt?Wir müssen das mit einem Query lösen und mit Where abfragen wenn es Gleich ist
PHP Code:
$result mysql_query("SELECT username FROM logintabelle WHERE username = '$username'"); // wenn username aus logintabelle gleich wie username der sich neu Registrieren will gibts ein error
$menge mysql_num_rows($result); // Das ist nur für ein Rückgabewert 
So jetzt sind wir schon ziemlich weit ^^ .Doch wir müssen die Daten ja noch eintragen^^.
Dazu müssen wir erstmal testen ob der Username nicht vorhanden ist!

PHP Code:
if($menge == 0// 0 steht für True  1 für Falsch also wenn Username nicht vorhanden dann eintragen 
    
{
    
$eintrag "INSERT INTO logintabelle (username, password, password2, email, email2, ip , datum) VALUES ('$username', '$password', '$password2', '$email', '$email2', '$ip', '$datum')"//Erst müssen wir angeben welche Spalten es gibt und dann welche Value (Variable) dazu gehört.
    
$eintragen mysql_query($eintrag);

    if(
$eintragen == true// wird nochmal ueberprueft der query
        
{
        echo 
"Du wurdest Registriert $username ! ";
        }
    else 
// falls eintragen nicht true dann gibt es das aus
        
{
        echo 
"Fehler.";
        }


    } 
Ich hoffe das TuT konnte euch Helfen :) Sorry falls ich fehler gemacht habe bin auch noch Lehrling und wer es gut findet soll mir ein Thanks geben ^^ mache ab jetzt mehrer Tuts wenn ihr wollt!
Datein kommen in Paar minuten als Anhang.

Bis zum nächsten TuT ;)

Links zum Lernen:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Editor:
[Only registered and activated users can see links. Click Here To Register...]

Zum Testen der Codes:
[Only registered and activated users can see links. Click Here To Register...]
02/23/2012 20:23 galaxyo#2
1. Anstatt mit einem Leerstring abzugleichen solltest du empty() verwenden.
2. preg_match zum überprüfen verwenden.
3. Escapen // Query absichern.
4. mysql_num_rows zählt die Zeilen die aus der DB ausgelesen werden. Du solltest schon richtig erklären.
5. Heutzutage ist die E-Mail bestätigung nicht mehr wegzudenken.
6. Username mindestens 5 Zeichen lang und Passwort mindestens 6?
7. Enthält der Username unerlaubte Zeichen?

... und so weiter.

Das Grundprinzip ist ok, aber nicht das gelbe vom Ei.

Der letzte Part kommt mir sehr bekannt vor. Qulle vergessen? Ich bin mal so freundlich:

[Only registered and activated users can see links. Click Here To Register...]

Ich persönlich finde es gut wenn sich Leute die Mühe machen. Du solltest das nächste mal allerdings besser erklären. Dadurch festigst du dein eigenes Wissen und bringst anderen etwas bei. Etwas oberflächlich zu erklären macht keinen Sinn. C&P 2 Minuten angeguckt und dann wirds wieder vergessen.
02/25/2012 10:14 JacK le chilla#3
nicht exit verwenden du willst doch das die seite nicht einfach abgebrochen wird (facepalm)
02/25/2012 15:18 IchbinGerd#4
Ähm klar oder soll es wenn die daten falsch sind weiterleiten im script?:O
02/25/2012 21:30 galaxyo#5
Quote:
Originally Posted by IchbinGerd View Post
Ähm klar oder soll es wenn die daten falsch sind weiterleiten im script?:O
Poah, red nicht so einen stuss.

Verwende eine anständige Kontrollstruktur und du brauchst so einen schwachsinn nicht. Außerdem wird in deinem Script an keiner Stelle weitergeleitet. Spätestens wenn du das Script auf einer vollständigen Webseite verwendest und den Error in der Mitte der Seite ausgibst wirst du Probleme haben da beispielsweise der Footer auf deiner Seite nicht mehr auftaucht.

PHP Code:

if($bla == "") {

   
// Wenn if zutrifft d.h $bla leer ist.
   
echo $fehler;
   
// Script wird hier beendet

}else{

   
//Wenn if nicht zutrifft d.h $bla nicht leer ist.
   
$query mysql_query("SELECT * FROM db");
   
//Script wird beendet



//ANDERES BEISPIEL


PHP Code:

if($bla == "") {

   
// Wenn if zutrifft d.h $bla leer ist.
   
echo $fehler;
   
// Script wird hier beendet

}else{

   
//Wenn if nicht zutrifft d.h $bla nicht leer ist.
   
$query mysql_query("SELECT * FROM db");

   if(
$query == true) {

      echo 
"True";
      
//Script wird erst hier beendet.

   
}else{

      echo 
"False";
      
//Script wird hier beendet.

   
}



Wenn man keine Ahnung hat sollte man auch keine Tutorials machen. Ganz einfach.
02/27/2012 15:50 vony#6
Jeder Userinput, jeder(!), muss escaped und gestriped werden, mysql_real_escape_string und stripslashes

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]