Aktuelle Zeit: Mi 24. Apr 2024, 02:30

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
Ungelesener BeitragVerfasst: Sa 26. Nov 2011, 11:14 
Offline
Pokemonzüchter
Pokemonzüchter

Registriert: Sa 25. Jul 2009, 10:31
Beiträge: 3378
Geschlecht: männlich
SG$: 5
Guides: 0
Grundkentnisse - MySQL mit PHP


Wilkommen zu meinem PHP / MYSQL tutorial.
In diesem Tutorial werde ich euch zeigen, wie ihr mit MYSQL / PHP eine Registierungsseite erstellen könnt, und eine Seite wo sich die angemeldeten User einloggen können.

Was brauche ich dafür?
Ein Webserver, der PHP & MySQL unterstürzt.
IQ > 20 :D

MYSQL Befehle mit PHP
Code:
<?php
$host = '127.0.0.1';
$user = 'username';
$pass = 'password';
mysql_connect($host, $user, $pass);
$sql = '<the sql query>';
$result = mysql_query($sql);
?>


Erklärung:

Zeile 1: PHP deklinationen ( <?php kommt immer am Anfang eines PHP-Skriptes)
Zeile 2-4: MYSQL-Daten als Variablen abspeichern
Zeile 5: Verbinden zu der Datenbank
Zeile 6: SQL Befehl in der Variable speichern
Zeile 7: SQL befehl ausführen
Zeile 8: PHP-Code ist zu ende, deswegen immer am Ende eines PHP-Skriptes "?>" setzen.

Tabelle in einer Datenbank erstellen
SQL befehl : :
Code:
CREATE TABLE `test` (`user_id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`user_id`), `username` VARCHAR(50), `password` VARCHAR(50), `salt` VARCHAR(5))


SQL befehl Erklärung

Der SQL befehl erstellt eine tabelle in der Datenbank namens "test" mit 4 Felder:
user_id: Integer, Not Null, die id eines users, es steigt automatisch bei jedem Eintrag in der Datenbank
username: maximal 50 Zeichen
password: Maximal 50 Zeichen
salt: Salt des Passwords (Verschlüssung)


Daten in einer Tabelle einfügen
SQL befehl:
Code:
INSERT INTO `test` (`username`, `password`, `salt`) VALUES ('USER_NAME', 'PASS_WURD', '!@#$%')


Erklärung:
Es fügt Daten in der Tabelle ein:
0 USER_NAME PASS_WURD !@#$%

Nun das Registierungsscript:
Code:
<?php
$host = '127.0.0.1';
$user = 'username';
$pass = 'password';
$db = 'test';
mysql_connect($host, $user, $pass);
mysql_select_db($db)
if (isset($_POST['submit'])) {
$username = addslashes($_POST['user']);
$password = addslashes($_POST['pass']);
$salt = "";
$salt_usable = "1234567890!@#$%^&*()<>?,./[]\{}|";
$i = 0;
while ($i < 5) {
$char = substr($salt_usable, mt_rand(0, strlen($salt_usable) - 1), 1);
$salt .= $char
$i++;
}
$password = md5($salt . $password);
$sql = "INSERT INTO `test` (`username`, `password`, `salt`) VALUES (\'" . $username . "\', \'" . $password . "\'. \'" . $salt . "\')";
$result = mysql_query($sql);
echo('User erstellt! Du kannst dich nun einloggen <a href="login.php">hier</a>.');
} else {
echo('<html><head><title>Anmelden</title></head><body><form action="" method="POST"><input type="text" name="user" value="Username" /><br /><input type="password" name="pass" value="Password" /><br /><input type="submit" name="submit" value="Register" /></form></body>');
}
?>


Erklärung:

Zeile 1-6: Siehe letzte Erklärung
Zeile 7: Datenbank auswählen
Zeile 8: Es wird gprüft, ob der User auf absenden geklickt hat.
Zeile 9-10: Speichert die eingegebenen Daten (WICHTIG: addslashes() schützt vor SQL-injectionen!)
Zeile 11: Salt-Variable erstellen
Zeile 12: Erlaubte Zeichen setzen
Zeile 14: Eine einfache While-Schleife
Zeile 15: Zufallszeichen in dem Column salt_usable variabe
Zeile 16: Zufallszeichen zu dem Salt-String einfügen
Zeile 17: Schutz gegen unendliche Schleife
Zeile 18: Schleife beenden
Zeile19: Passwort mit md5 verschlüsseln
Zeile 20: SQL-Befehl erstellen
Zeile 21: SQL befehl ausfühern
Zeile 22: User informieren, dass die Registierung erfolgreich war :D
Zeile 23: Wenn keine Daten eingegeben worden sind,...
Zeile 24: werden die Felder erneuert angezeigt.
Zeile 25: End if statement

Daten von einer Datenbank anzeigen
SQL befehl:
Code:
SELECT `salt`, `password` FROM `test` WHERE `username`='USER_NAME'


Erklärung
Der Befehl sucht in der Tabelle ein Eintrag wo Username = user_name und password = test ist

PHP beispiel
login.php:
Code:
<?php
$host = '127.0.0.1';
$user = 'username';
$pass = 'password';
$db = 'test';
mysql_connect($host, $user, $pass);
mysql_select_db($db)
if (isset($_POST['submit'])) {
$username = addslashes($_POST['user']);
$password = addslashes($_POST['pass']);
$sql = "SELECT `salt`, `password` FROM `test` WHERE `username`=\'" . $username . "\'";
$result = mysql_query($sql);
$return = mysql_fetch_array($result);
if ($return(0) == "") {
echo('User nicht gefunden!!!!!);
} else {
$salt = $return(0);
$real_pw = $return(1);
$password = md5($salt . $password);
if ($real_pw != $password) {
echo('Incorrect password.');
} else {
echo('erfolgreich eingeloggt als' . $username);
}
}
} else {
echo('<html><head><title>Login</title></head><body><form action="" method="POST"><input type="text" name="user" value="Username" /><br /><input type="password" name="pass" value="Password" /><br /><input type="submit" name="submit" value="Login" /></form></body>');
}
?>


PHP Erklärung:

Zeile 1-10: Siehe letzte Erklärung
Zeile 11: Unser SQL-Befehl erstellen
Zeile 12: SQL befehl ausführen
Zeile 13: Datensatz anfordern
Zeile 14: wenn keine daten "erhalten"
Zeile 15: User wird mitgeteilt, dass Login fehlgeschlagen ist.
Zeile 16: Wenn die Daten gefunden worden sind
Zeile 19: Passwort mit md5 verschlüsseln
Zeile 20: Wenn die passwörter nicht überreinstimmen
Zeile 21: es wird ausgegeben, dass das Passwort falsch ist.
Zeile 22: Wenn das Passwort überrein stimmt.
Zeile 23: User wurde erfolgreich eingeloggt; es wird ein text gezeigt, dass er sich erfolgreich eingeloggt hat.
Zeile 24-29: bereits erklärt :D


Ich hoffe euch gefiel mein Tutorial, wenn ihr noch Fragen habt, stellt sie hier ruhig!

Und wenn ihr überhaupt nichts wisst über PHP, dann könnt ihr natürlich das Tutorial nicht verstehen, das Tutorial ist nicht nämlich für komplette Newbies :)

Das tutorial ist selbstgeschrieben von mir, vTasker.
Bitte nicht kopieren!

Danke fürs lesen, und Kommentare sind erwünscht!


Zuletzt geändert von vTasker am Di 3. Jul 2012, 13:51, insgesamt 3-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
Verfasst: Sa 26. Nov 2011, 11:14 


Nach oben
  
 
Ungelesener BeitragVerfasst: Sa 26. Nov 2011, 14:09 
Offline
Pokemonforscher
Pokemonforscher
Benutzeravatar

Registriert: Di 22. Jun 2010, 16:48
Beiträge: 2247
Wohnort: Zürich
Geschlecht: männlich
SG$: 83
Guides: 0
Seite gefunden durch: Metroid
Gutes Tutorial, kurz, prägnant und alles wichtige vorhanden. Daher erst mal ein grosses Lob und ein Dankeschön für dieses Tutorial. ^-^
Aber natürlich darf auch Kritik nicht fehlen:
Ich konnte mit diesem Tutorial was anfangen, aber ich habe nicht nur schon mit PHP-Programmiert, ich wurde auch in der Schule bereits in Datenbanken und dessen Sprache eingeführt,
und ohne das hätte ich das Tutorial nie und nimmer anwenden können. Viele unterschätzen mySQL, ist auch nicht wirklich kompliziert, aber auch das muss einem erst einmal ausführlich erklärt werden,
zusammen mit den Funktionsweisen und den verschiedenen Typen an Datenbanken die es gibt. Und das fehlt mir in deinem Tutorial völlig, doch gerade der Teil ist unverzichtbar, um Datenbanken richtig verwenden zu können.

Noch zwei Fragen:
Zitat:
Daten von einer Datenbank anzeigen
SQL befehl:
Code:
SELECT `salt`, `password` FROM `test` WHERE `username`='USER_NAME'


Erklärung
Der Befehl sucht in der Tabelle ein Eintrag wo Username = user_name und password = test ist

Wäre es nicht eher:
Liest die Werte der Spalten "salt" und "passwort" der Tabelle "test" aus, die in der Zeile liegen wo die Spalte "username" USER_NAME entspricht?

Zitat:
CREATE TABLE `test` (`user_id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`user_id`), `username` VARCHAR(50), `password` VARCHAR(50), `salt` VARCHAR(5))

1) Wieso soll user_id nicht Null sein? Du hast ja später sogar noch ein Beispiel gegeben in dem die user_id Null ist.
2) Was bedeutet "PRIMARY KEY(`user_id`),"? Für mich sieht das atm eher nach einer fünften Spalte aus. :I

Hoffe auf Antworten. ^-^
LG


Nach oben
 Profil Position des Users auf der Mitgliederkarte  
Mit Zitat antworten  
Ungelesener BeitragVerfasst: Fr 9. Dez 2011, 17:51 
Offline
Pokemonzüchter
Pokemonzüchter

Registriert: Sa 25. Jul 2009, 10:31
Beiträge: 3378
Geschlecht: männlich
SG$: 5
Guides: 0
Hopfel hat geschrieben:
Gutes Tutorial, kurz, prägnant und alles wichtige vorhanden. Daher erst mal ein grosses Lob und ein Dankeschön für dieses Tutorial. ^-^
Aber natürlich darf auch Kritik nicht fehlen:
Ich konnte mit diesem Tutorial was anfangen, aber ich habe nicht nur schon mit PHP-Programmiert, ich wurde auch in der Schule bereits in Datenbanken und dessen Sprache eingeführt,
und ohne das hätte ich das Tutorial nie und nimmer anwenden können. Viele unterschätzen mySQL, ist auch nicht wirklich kompliziert, aber auch das muss einem erst einmal ausführlich erklärt werden,
zusammen mit den Funktionsweisen und den verschiedenen Typen an Datenbanken die es gibt. Und das fehlt mir in deinem Tutorial völlig, doch gerade der Teil ist unverzichtbar, um Datenbanken richtig verwenden zu können.

Noch zwei Fragen:
Zitat:
Daten von einer Datenbank anzeigen
SQL befehl:
Code:
SELECT `salt`, `password` FROM `test` WHERE `username`='USER_NAME'


Erklärung
Der Befehl sucht in der Tabelle ein Eintrag wo Username = user_name und password = test ist

Wäre es nicht eher:
Liest die Werte der Spalten "salt" und "passwort" der Tabelle "test" aus, die in der Zeile liegen wo die Spalte "username" USER_NAME entspricht?
Oh ja, du hast Recht. Hab mich hier irgendwie vertan :o Danke für die Meldung. Werd ich sofort korrigieren.

Zitat:
CREATE TABLE `test` (`user_id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`user_id`), `username` VARCHAR(50), `password` VARCHAR(50), `salt` VARCHAR(5))

1) Wieso soll user_id nicht Null sein? Du hast ja später sogar noch ein Beispiel gegeben in dem die user_id Null ist.
Das "INT NOT NULL" bewirkt, dass es keine user_id mit der Zahl 0 gibt. Keine Ahnung warum man nie 0 als ID nimmt.. Hast du schonmal irgendwo ein Eintrag gesehen mit der ID 0? Man fängt einfach mit 1 an.. PHP Tradition halt xD
2) Was bedeutet "PRIMARY KEY(`user_id`),"? Für mich sieht das atm eher nach einer fünften Spalte aus. :I
Primary key ist eine Eigenschaft in der Datenbankspalte "user_id".
Primary key bewirkt, dass jede Zahl nur einmal vorkommt.
Also zum Beispiel : Nehmen wir mal an, es gab eine spalte in der Datenbanktabelle mit der ID 4. Und nun wurde die Spalte gelöscht, d.h. es gibt keine Spalte mehr mit der ID 4. Wenn wir jetzt aber noch eine neue Spalte einfügen in der Datenbanktabelle, dann wird die id 5 sein. Jede ID kommt nur einmal vor in der Datenbanktabelle, egal ob sie nun gelöscht ist oder weiterhin existiert. Die ID 4 wird nur einmal in der Datenbanktabelle da sein. Auch wenn es kein Eintrag mehr gibt mit der ID 4. Die ID 4 wird nicht mehr auftauchen. Ich hoffe ich habs verständlich genug erklärt. ^^

Hoffe auf Antworten. ^-^
LG


Nach oben
 Profil  
Mit Zitat antworten  
Ungelesener BeitragVerfasst: Fr 9. Dez 2011, 18:03 
Offline
Pokemonforscher
Pokemonforscher
Benutzeravatar

Registriert: Di 22. Jun 2010, 16:48
Beiträge: 2247
Wohnort: Zürich
Geschlecht: männlich
SG$: 83
Guides: 0
Seite gefunden durch: Metroid
okidoki, jetzt ist fast alles klar, danke. ^-^

Eine kleine Frage ist beim zweiten Mal durchlesen noch aufgekommen:
Code:
VALUES (\'" . $username . "\', \'" . $password . "\'. \'" . $salt . "\')"

Die Punkte ergeben für mich wenig Sinn. Würden die dann nicht auch in die Tabelle geschrieben?

LG :3


Nach oben
 Profil Position des Users auf der Mitgliederkarte  
Mit Zitat antworten  
Ungelesener BeitragVerfasst: Fr 9. Dez 2011, 18:04 
Offline
Pokemonzüchter
Pokemonzüchter

Registriert: Sa 25. Jul 2009, 10:31
Beiträge: 3378
Geschlecht: männlich
SG$: 5
Guides: 0
Variablen dürfen nicht in " stehen.
Deswegen stehen davor die Blackslahes. Das sind sozusagen die Trenn-Operatoren, die Trennen die Variablen von den ".

In "" dürfen nur Strings (Text) stehen.

Wenn man die Backslahes weglassen würde bzw. die Punkte, würden die Variablen in Plain text in der Datenbanktabelle eingetragen (also würde dann schlichtweg einfach $username eingetragen in der Tabelle als Plain text)


Nach oben
 Profil  
Mit Zitat antworten  
Ungelesener BeitragVerfasst: Fr 9. Dez 2011, 18:18 
Offline
Pokemonforscher
Pokemonforscher
Benutzeravatar

Registriert: Di 22. Jun 2010, 16:48
Beiträge: 2247
Wohnort: Zürich
Geschlecht: männlich
SG$: 83
Guides: 0
Seite gefunden durch: Metroid
Damn war zu langsam mit editieren :S
Mir ist erst zu spät aufgefallen, dass der ganze Befehl schon in Anführungszeichen steht... xD

Aber das mit den Punkten ist mir immer noch ned ganz klar, was bewirken die denn genau?
Normalerweise stehen die ja noch im String wenn man welche reinschreibt, bei diesem Code hätte ich also erwartet dass " . Herrtest . " in die Tabelle geschrieben werden würde.
Eig ist mir sowieso unklar, wieso in diesem Befehl " drinstehen, würde folgendes nicht auch gehen?
Zitat:
VALUES (\' $username \', \' $password \'. \' $salt \')"

(Ah ja, und müsste in meinem Codezitat da nicht noch ein zweites Komma stehen? xD)


Nach oben
 Profil Position des Users auf der Mitgliederkarte  
Mit Zitat antworten  
 Betreff des Beitrags: Re: bitte löschen
Ungelesener BeitragVerfasst: Di 3. Jul 2012, 13:51 
Offline
Pokemonzüchter
Pokemonzüchter

Registriert: Sa 25. Jul 2009, 10:31
Beiträge: 3378
Geschlecht: männlich
SG$: 5
Guides: 0
delete this shit please :>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: bitte löschen
Ungelesener BeitragVerfasst: Di 3. Jul 2012, 19:35 
Offline
Administrator
Administrator
Benutzeravatar

Registriert: Mi 19. Nov 2008, 09:55
Beiträge: 12530
Geschlecht: weiblich
Guides: 3
vTasker hat geschrieben:
delete this shit please :>


habe den einleitungspost wiederhergestellt, da so von den nutzungsbedingungen vorgesehen. ;)

_________________
1234


Nach oben
 Profil Position des Users auf der Mitgliederkarte  
Mit Zitat antworten  
Ungelesener BeitragVerfasst: Di 3. Jul 2012, 20:05 
Offline
Pokemonzüchter
Pokemonzüchter

Registriert: Sa 25. Jul 2009, 10:31
Beiträge: 3378
Geschlecht: männlich
SG$: 5
Guides: 0
lol, das copyright von dem Tutorial liegt bei MIR, wenn ich nicht will, dass er hier ist, wird hier NICHTS wiederhergestellt. Das ist immernoch MEIN geistiges Eigentum, und das kannst du mir nicht wegnehmen.


Nach oben
 Profil  
Mit Zitat antworten  
Ungelesener BeitragVerfasst: Di 3. Jul 2012, 20:06 
Offline
Pokemonzüchter
Pokemonzüchter

Registriert: Sa 25. Jul 2009, 10:31
Beiträge: 3378
Geschlecht: männlich
SG$: 5
Guides: 0
Das Copyright dieses Tutorials liegt bei MIR. Und hiermit verweigere ich jegliche Nutzung dieses Tutorials auf dieser Plattform "Shinyglurak.de".
Ich möchte NICHT, dass mein Tutorial hier sichtbar ist oder wiederhergestellt wird.
Ich bitte um eine Löschung dieses Tutorials.
Tutorial (c) vTasker.


Nach oben
 Profil  
Mit Zitat antworten  
Ungelesener BeitragVerfasst: Di 3. Jul 2012, 20:44 
Offline
Pokemonforscher
Pokemonforscher
Benutzeravatar

Registriert: Mo 6. Apr 2009, 14:12
Beiträge: 3006
Geschlecht: männlich
SG$: 57
Guides: 1
Seite gefunden durch: Relaxofan32
Nutzungsbedingungen Paragraph 2 Copyright Zeile 1

Zitat:
Die Beiträge und Informationen im Forum unterliegen ausschließlich dem Urheberrecht Shiny Glurak.

_________________
Bild


Nach oben
 Profil Position des Users auf der Mitgliederkarte  
Mit Zitat antworten  
Ungelesener BeitragVerfasst: Di 3. Jul 2012, 20:46 
Offline
Pokemonzüchter
Pokemonzüchter

Registriert: Sa 25. Jul 2009, 10:31
Beiträge: 3378
Geschlecht: männlich
SG$: 5
Guides: 0
Dann ist diese Nutzungsbedingung völlig fail, das darf man garnicht.
Das ist genau so wie als wenn ich im RL mir ein Grundstück kaufe und sage "Alle, die auf meiner Fläche laufen, müssen mindestens 30 Minuten bleiben!"
;)


Nach oben
 Profil  
Mit Zitat antworten  
Ungelesener BeitragVerfasst: Di 3. Jul 2012, 22:10 
Offline
Administrator
Administrator
Benutzeravatar

Registriert: Mi 19. Nov 2008, 09:55
Beiträge: 12530
Geschlecht: weiblich
Guides: 3
Auszug aus unseren Nutzungsbedingungen, die jeder Nutzer bei seiner Registrierung akzeptieren muss:

Zitat:
2. Copyright

Die Beiträge und Informationen im Forum unterliegen ausschließlich dem Urheberrecht Shiny Glurak. Übernahme von Texten gestattet Shiny Glurak nur mit schriftlicher Zustimmung des Rechteinhabers. Inhalte dürfen ohne jede Zustimmung für private Zwecke gebraucht werden. Bei einer Account-Löschung können nur private Daten gelöscht werden. Ihr stellt also dem Forum durch Beiträge Informationen zur Verfügung, die in die Nutzung von SG unabhängig von Zeit, Unwiderruf, Kostenlos, aber nicht exklusiv eingehen.

Wir sind bemüht geschützte Grafiken, Sounds und Texte ebenfalls zu beachten. Sollte sich dennoch ein Copyright geschütztes Material auf unseren Seiten befinden, setzt euch bitte mit uns in Kontakt, wir werden dafür Sorge tragen, dass es entfernt wird oder ein Hinweis dazu ausgesprochen.


ist ja auch logisch, sonst gehen alle möglichen zusammenhänge im forum verloren.

edit: das was ihr übrigens in eurem "anschlag-thema" zitiert habt, das sind die allgemeinen richtlinien des hostings, die jederzeit überschrieben werden können. die haben aber nix mit dem forenregeln zu tun :p

_________________
1234


Nach oben
 Profil Position des Users auf der Mitgliederkarte  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

0 Mitglieder


Ähnliche Beiträge

Let's play Tutorial #1 Die Aufnahme
Forum: Tutorials
Autor: Hopfel
Antworten: 0
[Mathematik] Periodische Zahlen (Tutorial)
Forum: Schule, Studium, Arbeit, Finanzen
Autor: Hopfel
Antworten: 1
Halis Colorations Tutorial
Forum: Allgemeines Grafikforum
Autor: Halibel
Antworten: 4
HTML Tutorial 1 - Anfänge und Einleitung
Forum: Webprogrammierung und Webdesign
Autor: ¿ChatBoo¿
Antworten: 5
Let's play Tutorial #6 Youtube
Forum: Tutorials
Autor: Hopfel
Antworten: 0

Tags

Web

Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group


Bei iphpbb3.com bekommen Sie ein kostenloses Forum mit vielen tollen Extras
Forum kostenlos einrichten - Hot Topics - Tags
Beliebteste Themen: Forum, Erde, Pokemon, Spiele, NES

Impressum | Datenschutz