Loginsystem mit VB.net, PHP und MySQL
- PHP
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 93 Antworten in diesem Thema. Der letzte Beitrag () ist von meikel__.
-
-
-
-
-
-
-
-
-
Bin neu hier, daher erstmal Hallo an alle ..
Folgendes,
die Variable pw5 stammt aus dem Http Post den du sendest wenn du dich registrierst.
Im php Skript wird pw5 dann anschließend zur Variable "password".
Bzw. die Variable "password" nimmt den Wert von "pw5" an.
Aber ohne groß drum rum zu reden, hier die Lösung bzgl. der leeren Seite:
diesen Teil ...
PHP-Quellcode
- if ($verb)
- {
- $sql = "SELECT * FROM loginsystem WHERE username='".$user."'";
- $quer = mysql_query($sql) or die(mysql_error());
- $num = mysql_num_rows($quer);
- if ($num == 0)
- {
- echo("User does not exist");
- exit();
- }
- else
- {
- $row = mysql_fetch_object($quer);
- $passwort = $row->passwort;
- if ($passwort == $pass)
- {
- echo("success");
- }
- }
- }
... ersetzt du mit diesem Teil.
PHP-Quellcode
- if ($verb)
- {
- $sql = "SELECT * FROM anmeldeinformationen WHERE username='".$user."'"; //Test des Usernames
- $quer = mysql_query($sql) or die(mysql_error());
- $num = mysql_num_rows($quer);
- if ($num == 0)
- {
- echo("User does not exist");
- exit();
- }
- else
- {
- $sql = "SELECT * FROM anmeldeinformationen WHERE password='".$pass."'"; //Test des Passwortes
- $quer = mysql_query($sql) or die(mysql_error());
- $num = mysql_num_rows($quer);
- if ($num == 0)
- {
- echo("Passwort falsch");
- }
- else
- {
- echo("Passwort richtig");
- }
- }
- }
Hab zwar null Ahnung von php, aber probieren ist wohl das Beste.
Gruß
bossert -
-
-
-
Neo schrieb:
PHP-Quellcode
- <?php
- // Skript geschrieben am 01.08.2009 von Neo
- // Verbindungsinformationen zur Datenbank
- $dbhost = "localhost";
- $dbname = "loginsystem";
- $dbuser = "root";
- $dbpass = "mysql-pw";
- // Variablen festlegen
- $email = $_GET['email'];
- $username = $_GET['user'];
- $password = $_GET['pw5'];
- // Verbindung zur MySQL Datenbank herstellen und Daten überprüfen und eintragen
- mysql_connect($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
- $verb = mysql_select_db($dbname);
- if ($verb)
- {
- echo("Verbindung zu Datenbank aufgebaut!");
- if ($email == "" or $username == "" or $password == "")
- {
- if ($email == "")
- echo("<br>Errorcode: <b>2</b>");
- if ($username == "")
- echo("<br>Errorcode: <b>3</b>");
- if ($password == "")
- echo("<br>Errorcode: <b>4</b>");
- }
- else
- {
- $abfragen_email = "SELECT email FROM anmeldeinformationen WHERE email='$email'";
- $abfragen_user = "SELECT username FROM anmeldeinformationen WHERE username='$username'";
- $ergebnis_email = mysql_query($abfragen_email);
- $ergebnis_user = mysql_query($abfragen_user);
- if (mysql_num_rows($ergebnis_email) > 0 or mysql_num_rows($ergebnis_user) > 0)
- {
- echo("<br>Errorcode: <b>1</b><br>Username und/oder E-Mail Adresse existiert bereits");
- }
- else
- {
- $sql = "INSERT INTO ".
- "anmeldeinformationen (username, pw5, email) ".
- "VALUES ('".
- $username."', '".
- $password."', '".
- $email."')";
- $eintrag = mysql_query($sql);
- if ($eintrag)
- {echo('<br>FINISHED');}
- else
- {die("<br>Errorcode: <b>5</b>");}
- }
- }
- }
- else
- {
- die('<br>Errorcode: <b>6</b>');
- }
- mysql_close();
- ?>
Also das würde ich persönlich nicht für irgendwelche Projekte verwenden.
Hau mal in irgend einen deiner GET-Parameter ein ' oder javascript wie z.B.
Du filterst deine Paramter nicht. Das ist schon das Hauptproblem.
In deinem Script wären SQL-Injections möglich und ebenso kann auch Javascript oder HTML in deine Datenbank geposted werden.
Also entweder filtert man die Sachen mit mysql_real_escape_string und htmlentities oder man benutzt gleich prepared statements und htmlentities.
Abgesehen davon wozu das die() am ende? Wenn dein Script problemlos ausgeführt wird, kommst du nicht bis zum mysql_close();.
Also:
PHP-Quellcode
- <?php
- // Skript geschrieben am 01.08.2009 von Neo
- // Verbindungsinformationen zur Datenbank
- $dbhost = "localhost";
- $dbname = "loginsystem";
- $dbuser = "root";
- $dbpass = "mysql-pw";
- // Variablen festlegen
- $email = $_GET['email'];
- $username = $_GET['user'];
- $password = $_GET['pw5'];
- // Verbindung zur MySQL Datenbank herstellen und Daten überprüfen und eintragen
- $pdo = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass) or die("<br>Errorcode: <b>6</b>");
- echo("Verbindung zu Datenbank aufgebaut!");
- if (empty($email) || empty($username) || empty($password)){
- if (empty($email)){
- echo("<br>Errorcode: <b>2</b>");
- }elseif(empty($username)){
- echo("<br>Errorcode: <b>3</b>");
- }elseif(empty($password)){
- echo("<br>Errorcode: <b>4</b>");
- }
- }else{
- $stmt = $pdo->prepare("SELECT * FROM anmeldeinformationen WHERE email = :email or username = :username");
- $stmt->bindParam(":email", $email);
- $stmt->bindParam(":username", $username);
- $stmt->execute();
- if ($stmt->rowCount() > 0){
- echo("<br>Errorcode: <b>1</b><br>Username und/oder E-Mail Adresse existiert bereits");
- }else{
- $stmt = $pdo->prepare("INSERT INTO anmeldeinformationen(username, pw5, email) VALUES( :username, :pw5, :email)");
- $stmt->bindParam(":username", htmlentities($username));
- $stmt->bindParam(":pw5", htmlentities($password));
- $stmt->bindParam(":email", htmlentities($email));
- $eintrag = $stmt->execute();
- if ($eintrag){
- echo('<br>FINISHED');
- }else{
- echo("<br>Errorcode: <b>5</b>");
- }
- }
- }
- ?>[
ist wesentlich sicherer.
Dann noch ne kleine Randnotiz zu der Tabellenstruktur. Den einzelnen Attributen den Datentypen TEXT zu geben ist nicht notwendig. Varchar tuts auch.
Also username z.B. varchar(15), password (jeh nachdem ob md5 oder sha1 für die prüfsummen verwendet wird 32 oder 40), und email warscheinlich nicht mehr als 100 zeichen sprich varchar(100) reicht.Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Umbekannt“ ()
-
-
-
Also wenn ich zB.
http://localhost/register.php?email=keineahnung_15@web.de&user=Ablont&pw5=passwort
eingeb kommt:
Verbindung zu Datenbank aufgebaut!
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\register.php on line 41
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\register.php on line 41
Errorcode: 5
Mein PhP-Code:
PHP-Quellcode
- <?php
- // Skript geschrieben am 01.08.2009 von Neo
- // Verbindungsinformationen zur Datenbank
- $dbhost = "localhost";
- $dbname = "loginsystem";
- $dbuser = "root";
- $dbpass = "Test";
- // Variablen festlegen
- $email = $_GET['email'];
- $username = $_GET['user'];
- $password = $_GET['pw5'];
- // Verbindung zur MySQL Datenbank herstellen und Daten überprüfen und eintragen
- mysql_connect($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
- $verb = mysql_select_db($dbname);
- if ($verb)
- {
- echo("Verbindung zu Datenbank aufgebaut!");
- if ($email == "" or $username == "" or $password == "")
- {
- if ($email == "")
- echo("<br>Errorcode: <b>2</b>");
- if ($username == "")
- echo("<br>Errorcode: <b>3</b>");
- if ($password == "")
- echo("<br>Errorcode: <b>4</b>");
- }
- else
- {
- $abfragen_email = "SELECT email FROM anmeldeinformationen WHERE email='$email'";
- $abfragen_user = "SELECT username FROM anmeldeinformationen WHERE username='$username'";
- $ergebnis_email = mysql_query($abfragen_email);
- $ergebnis_user = mysql_query($abfragen_user);
- if (mysql_num_rows($ergebnis_email) > 0 or mysql_num_rows($ergebnis_user) > 0)
- {
- echo("<br>Errorcode: <b>1</b><br>Username und/oder E-Mail Adresse existiert bereits");
- }
- else
- {
- $sql = "INSERT INTO ".
- "anmeldeinformationen (Benutzername, Passwort, E-Mail) ".
- "VALUES ('".
- $username."', '".
- $password."', '".
- $email."')";
- $eintrag = mysql_query($sql);
- if ($eintrag)
- {echo('<br>FINISHED');}
- else
- {die("<br>Errorcode: <b>5</b>");}
- }
- }
- }
- else
- {
- die('<br>Errorcode: <b>6</b>');
- }
- mysql_close();
- ?>
Also das hier: "if (mysql_num_rows($ergebnis_email) > 0 or mysql_num_rows($ergebnis_user) > 0)" muss iwas nicht stimmen ^^
PS: Benutze Xampp zum testen, weil ich es gerne auf einem Server haben will :D -
-
-
-
-
Ähnliche Themen
-
MarcoQuinten - - Weitere Sprachen und sprachübergreifende Themen
-
MarkusxX25 - - Internet- und Netzwerkprogrammierung