Autor Beitrag
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mo 10.10.16 13:27 
Ah upps. Hier sind mal die Daten:

Benutzer: 'yanma'
Passwort: '$2y$10$/pJKmDP90nGP.9FV43'Ihre Daten sind nicht korrekt. Bitte geben Sie richtige Daten ein.

Bei diesem Code:
ausblenden volle Höhe PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
if($benutzername AND $password)
      {
        mysqli_select_db($conn"MainlysoftBenutzer");
            
        $query = mysqli_query($conn"SELECT * FROM `MainlysoftBenutzer` WHERE `username`='$benutzername'");
        $num = mysqli_num_rows($query);
            
        if($num != 0)
        {
          WHILE ($row = mysqli_fetch_assoc($query))
          {
            $dbbenutzer = $row['username'];
            $dbpasswort = $row['passwort'];
          }
          
          echo "Benutzer: '$dbbenutzer' <br>Passwort: '$dbpasswort'";
          
          if($dbbenutzer == $username AND $dbpasswort == $passwordHash)
          {
            echo "Login erfolgreich";
          }
          else
          {
            echo "Ihre Daten sind nicht korrekt. Bitte geben Sie richtige Daten ein.";
          }
        }
        else
        {
          echo "Der eingegebene Benutzer existiert nicht.";
        }
      }


EDIT: Ich habe jetzt auch das gehashte Passwort ausgegeben, was der User in den Login eingibt:

Benutzer: 'yanma'
Passwort: '$2y$10$/pJKmDP90nGP.9FV43'
eingegebenes Passwort: '$2y$10$jDPYBp4oU94v4XSNa6NKneV9fsfSOQKWtn2pcX.DkU8MT8diKWJbu'

Es wird also irgendwie ganz anders gehasht

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: Mo 10.10.16 13:32 
Zitat:
Es wird also irgendwie ganz anders gehasht


Na also. Deine Aufgabe ist es, herauszufinden, was.

Hast du in der Datenbank eigentlich eine Zeichenbegrenzung für den Passworthash?
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mo 10.10.16 13:37 
Naja. In der Spalte "Passwort" in der Datenbank habe ich max 25 Zeichen eingegeben, sonst aber nichts. Ich glaube ich ändere das jetzt in 100

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: Mo 10.10.16 13:38 
Zitat:
eingegebenes Passwort: '$2y$10$jDPYBp4oU94v4XSNa6NKneV9fsfSOQKWtn2pcX.DkU8MT8diKWJbu'


Sieht das für dich nach 25 Zeichen aus?
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mo 10.10.16 13:46 
Nicht wirklich :(

Ich habe das jetzt auf 125 geändert, einen neuen Benutzer angelegt (der hat in der Datenbank jetzt natürlich mehr Zeichen) und einen Login versucht. Diesmal kam das heraus:

Benutzer: 'test1'
Passwort: '$2y$10$K5ehPqJvnOC2pCGhbm.wj.4xRVkqmt8DKqJuAVVeoWejmvMh0PoV6'
eingegebenes Passwort: '$2y$10$veYtq1kfaN5TvzsDiUZMMelsTQWdV5E22tyDyVulC0Awl6fM7k4Ma'
Ihre Daten sind nicht korrekt. Bitte geben Sie richtige Daten ein.

Also von den Zeichenlängen gleich, aber vom Inhalt anders :(

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: Mo 10.10.16 13:50 
Wie hast du das Passwort denn in die Datenbank reingeschrieben?
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mo 10.10.16 13:53 
ausblenden PHP-Quelltext
1:
2:
3:
4:
$passwordHash = password_hash($chpass1, PASSWORD_DEFAULT);
            
            $mysqli = mysqli_query($conn"INSERT INTO `MainlysoftBenutzer`(`name`, `vorname`, `passwort`, `email`, `accbest`, `username`, `geburtsdatum`, `registrierungsdatum`, `anzMeld`, `sicherheitsfrage`, `antwort`, `gender`, `language`, `embest`)
                                        VALUES('
$nachname', '$vorname', '$passwordHash', '$chem1', '$b', '$username', '$geburtsdatum', '$regDatum', '$anzMeld', '$safequestion', '$question_answer', '$gender', '$language', '$emBest')");


So. Erst hashen und dann reinschreiben

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 3655
Erhaltene Danke: 594

Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
BeitragVerfasst: Mo 10.10.16 14:09 
Und jetzt schaust du mal, wie man mit password_hash() generierte Hashes prüft...

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Sa 19.11.16 21:11 
Soo. Im Moment werden die Daten noch über <form...> an die Datenbank übergeben. Das gefällt mir nicht, da dann eine neue Seite aufkommt und ich den Prozess selbst nicht lenken kann, so wie ich es will. Jetzt bin ich der Meinung, man sollte die Daten lieber über JavaScript senden lassen. Auf YouTube habe ich mit ein Tutorial angesehen und habe dann folgendes geschrieben:

ausblenden JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function SendData() {
        var name = $('#lastname1').val();
        var vorname = $('#vorname1').val();
        
        $.post('http://www.network.mainlysoft.com/MSNetWebsite/test.php', {email1:name, email2:vorname},
        function(data) {
          $('#result').html(data);
        });
      }]


Nicht wundern, die PHP Datei ist noch ein Test. Wenn ich diesen Script aber über das onclick Event aufrufe, passiert nichts. Wo ist der Fehler?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2295
Erhaltene Danke: 420

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Sa 19.11.16 21:33 
Mach dir Gedanken darüber, was da passiert: ajax_post

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Sa 19.11.16 23:31 
Ich möchte die Daten bzw. die jQuery Funktion erst starten, wenn JavaScript die Genehmigung gegeben hat. Erst dann soll eine Serververbindung hergestellt werden.

ausblenden volle Höhe JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
function CheckData() {
        var em1 = document.getElementById('em1').value;
        var em2 = document.getElementById('em2').value;
        
        var pass1 = document.getElementById('pass1').value;
        var pass2 = document.getElementById('pass2').value;
        
        var error_string = "";
        
        if(em1 != ""
        {
          if(em1 != em2) {
            document.getElementById('em1').style.borderLeft = "7px solid red";
            document.getElementById('em1').style.borderTop = "1px solid red";
            document.getElementById('em1').style.borderRight = "1px solid red";
            document.getElementById('em1').style.borderBottom = "1px solid red";
            document.getElementById('em1').style.color = "red";
            
            document.getElementById('em2').style.borderLeft = "7px solid red";
            document.getElementById('em2').style.borderTop = "1px solid red";
            document.getElementById('em2').style.borderRight = "1px solid red";
            document.getElementById('em2').style.borderBottom = "1px solid red";
            document.getElementById('em2').style.color = "red";
            
            error_string += "Die E-Mail Adressen stimmen nicht überein.<br>";
          }   
        
          if(pass1 != pass2) {
            document.getElementById('pass1').style.borderLeft = "7px solid red";
            document.getElementById('pass1').style.borderTop = "1px solid red";
            document.getElementById('pass1').style.borderRight = "1px solid red";
            document.getElementById('pass1').style.borderBottom = "1px solid red";
            document.getElementById('pass1').style.color = "red";
            
            document.getElementById('pass2').style.borderLeft = "7px solid red";
            document.getElementById('pass2').style.borderTop = "1px solid red";
            document.getElementById('pass2').style.borderRight = "1px solid red";
            document.getElementById('pass2').style.borderBottom = "1px solid red";
            document.getElementById('pass2').style.color = "red";
            
            error_string += "Die Passwörter stimmen nicht überein.<br>";
          }
          
          
        } 
        else
        {
          error_string += "Sie müssen erst alle Datenfelder ausfüllen";
        }
        
        if(error_string != "") {
          document.getElementById('error_text').style.color = "red";
          document.getElementById('error_text').innerHTML = error_string;
          document.getElementById('error_div').style.backgroundColor = "#F8E0E0";
        } else {
          document.getElementById('error_text').style.color = "green";
          document.getElementById('error_text').innerHTML = "Alle Daten wurden korrekt eingegeben.<br>Es wird eine Serveranfrage vorgenommen.";
          document.getElementById('error_div').style.backgroundColor = "#F8E0E0";
          
          $(document).ready(function(){
            $("input").keyup(function(){
              var txt = $("input").val();
              $.post("http://www.network.mainlysoft.com/MSNetWebsite/test.php", {email1: txt}, function(result){
                $("error_text").html(result);
                alert(html(result));
              });
            });
          });
        }
      }


Jetzt meckert der Browser aber in der ersten Zeile von jQuery. Und das Ergebnis, also die txt Variable, die die PHP zurückgibt, wird auch nicht angezeigt. Woran liegt dies?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: So 20.11.16 00:18 
user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Jetzt meckert der Browser aber in der ersten Zeile von jQuery.


Steht irgendwo "mäh-äh-äh"? Ansonsten ist das, wie gewohnt, nicht annähernd präzise genug.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 20.11.16 01:32 
Als Antwort sagt mein Browser (Chrome) folgendes: Uncaught TypeError: $ is not a function(…)

Und das ist genau die Zeile, wo jQuery anfängt.

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: So 20.11.16 01:34 
Dann ist jQuery nicht geladen.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 20.11.16 11:50 
Hä? Wie geht sowas? Was muss ich machen, damit es lädt?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10061
Erhaltene Danke: 1194

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: So 20.11.16 13:28 
Moin!

Klick mal hier auf den Link: Suche bei Google JQUERY TUTORIAL und dann lies die ersten beiden Einträge, dann weißt du das. :les: :zustimm:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 20.11.16 13:52 
Achso man muss sich das erst herunterladen..
Ich habe mir jetzt die Datei heruntergeladen und auf den Webserver gezogen. Den Script habe ich dementsprechend auf den Pfad angepasst und den jQuery Code hinzugefügt.Das sieht jetzt so aus:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<script src="jquery-3.1.1.min.js">
      $(document).ready(function(){
            $("input").keyup(function(){
              var txt = $("input").val();
              $.post("http://www.network.mainlysoft.com/MSNetWebsite/test.php", {email1: txt}, function(result){
                $("error_text").html(result);
                alert(html(result));
              });
            });
          });
    </script>


Ich weiß jetzt nicht ob das so hinhaut. Erst soll der JavaScript Algorithmus die Daten überprüfen und demnach den Startschuss für jQuery geben. Wie ich den jQuery Code verstehe, wird dieser erst gefeuert, wenn der Button geklickt wird?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
hydemarie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 407
Erhaltene Danke: 50



BeitragVerfasst: So 20.11.16 16:09 
Was, glaubst du, macht script src und wie kommst du darauf?
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 20.11.16 20:02 
Ich kam darauf, weil das auf der Website, die jQuery erklärt hat, das war das auch so. Ich habe mir die jQuery Datei nun heruntergeladen und auf den Server geladen. Im selben Ordner befindet sich auch die HTML Datei, die die JavaScript Funktion enthält. Wenn ich den jQuery Code jetzt aufrufe, kommt immer noch der Fehler, dass $ keine Funktion ist. Aber ich habe ja die jQuery Datei auf dem Server?

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
} else {
          document.getElementById('error_text').style.color = "green";
          document.getElementById('error_text').innerHTML = "Alle Daten wurden korrekt eingegeben.<br>Es wird eine Serveranfrage vorgenommen.";
          document.getElementById('error_div').style.backgroundColor = "#F8E0E0";
          
          $(document).ready(function(){
            $("input").keyup(function(){
              var txt = $("input").val();
              $.post("http://www.network.mainlysoft.com/MSNetWebsite/test.php", {email1: txt}, function(result){
                $("error_text").html(result);
                alert(html(result));
              });
            });
          });
        }

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10061
Erhaltene Danke: 1194

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: So 20.11.16 20:05 
Moin!

user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich den jQuery Code jetzt aufrufe, kommt immer noch der Fehler, dass $ keine Funktion ist. Aber ich habe ja die jQuery Datei auf dem Server?
Wenn der Fehler immer noch auftritt und dieser bedeutet, dass jQuery nicht zur Verfügung steht, was folgerst du dann daraus? Dass es ausreichend ist, die Datei auf den Webserver in irgendein Verzeichnis zu legen? Das stand so wirklich in den Tutorials? :lupe: :suspect:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.