Autor Beitrag
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: Fr 07.10.16 17:01 
Nun gut, das eine Mal werde ich es dir erklären, damit du dir später selber helfen kannst.

Warnung 1:
In Zeile 82 im "InsertData.php" erwartet die Funktion mysqli_query() einen Parameter (an erster Stelle), der mysqli sein soll. Es wird aber null, also nichts an der Stelle zurückgegeben.
Wenn wir uns die Synthax von der Funktion anschaun, dann sieht sie so aus:
ausblenden PHP-Quelltext
1:
mysqli_query(connection,query,resultmode);					

Somit hast du ein Problem bei der Connection. Wahrscheinlich deswegen, weil du, wie vorher schon von uns angemerkt, mysqli() und mysql() vermischt hast.

Darauf baut auch der folgende Fehler auf:
Warnung 2:
In Zeile 83 ... mysqli_fetch_row()Funktion erwartet einen Parameter, der mysqli_result sein soll. Es wird wieder null zurückgegeben. Kein Wunder, weil dir mysqli_query() schon vorhin nichts zurückgegeben hat.
Das Ergebnis aus mysqli_query() ist jener Parameter für die Funktion mysqli_fetch_row().

Warnung 3:
In Zeile 111 ... kann der Header nicht bearbeitet werden, weil er schon in Zeile 82 abgeschickt wurde.
Dazu mehr, wenn du uns jene Stelle zeigen könntest.

_________________
„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: Fr 07.10.16 17:11 
Naja das wusste ich ja, dass das erste Argument die Connection sein muss.
ausblenden PHP-Quelltext
1:
$conn = mysqli_connect($servername$username,$password,$database);					

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:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
if($checked_agb && $checked_email && $checked_password)
        {
          $search = mysqli_query($conn,"SELECT `username`,`email` FROM `MainlysoftBenutzer` WHERE `username`='$username' AND `email`='$chem1'");
          $row = mysqli_fetch_row($search);

          if($row[1]==$chem1)
          {
            echo "Username and Email exists ";
          }
          else
          {
            $b = "false";
            $regDatum = date(Y-M-D);
            $dbPass = password_hash("$chpass1", PASSWORD_DEFAULT, ['cost' => 12]);
            $anzMeld = "0";
            $emBest = "false";
            
            $mysqli = mysqli_query($conn"INSERT INTO `MainlysoftBenutzer`(`name`, `vorname`, `passwort`, `email`, `accbest`, `username`, `geburtsdatum`, `registrierungsdatum`, `anzMeld`, `sicherheitsfrage`, `antwort`, `gender`, `language`, `embest`)
                                        VALUES('
$nachname', '$vorname', '$dbPass', '$chem1', '$b', '$username', '$geburtsdatum', '$regDatum', '$anzMeld', '$safequestion', '$question_answer', '$gender', '$language', '$emBest')");
  
            if ($mysqli)
            {
              function getUsetId($email)
              {
                $search = mysqli_query($conn"SELECT ID FROM MainlysoftBenutzer WHERE `email`='$email'");
                $row = mysqli_fetch_row($search);
                $id = $row[0];
                return $id;
              }                     

              $calc_id = getUsetId($chem1);
              $to = $chem1;
              $subject = 'MS Network Registrierung';
              
              $em_res = mail($to$subject$message$headers);
              if ($em_res)
              {
                header("Location: reg_succes.html");
              }
              else
              {
                echo "Fehler beim Senden der Email";
              }
            }
            else
            {
              echo "Ein Fehler ist aufgetreten. Die Daten konnten nicht in die Datenbank eingetragen werden. Bitte versuchen Sie es erneut.";
            }
          }
        }
        else
        {
          echo "Fehler";
        }
      }


Das ist ja die Verbindung im ersten Argument. Aber es funktioniert nicht :oops:

_________________
"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: Fr 07.10.16 17:56 
Es wird schon einen Grund haben, wieso die Fehlermeldung noch immer dort steht. Gehe 1-2 Schritte weiter zurück und schau was daran nicht stimmen kann:
ausblenden PHP-Quelltext
1:
$conn = mysqli_connect($servername$username,$password,$database);					

Wie sind diese Variablen definiert? Mind. 1 davon macht Probleme. Wenn du es herausfindest, können wir gerne weitermachen, ansonsten sehe ich dieses Thema für gescheitert an. :|

_________________
„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: Fr 07.10.16 18:08 
An der Serververbindung liegt es keinesfaalls.

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:
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:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
$conn = mysqli_connect($servername$username,$password,$database);

    if($conn)
    {
      $username = mysqli_real_escape_string($conn$_POST['username']);
      $geburtsdatum = mysqli_real_escape_string($conn$_POST['geburtsdatum']);
      $vorname = mysqli_real_escape_string($conn$_POST['vorname']);
      $nachname = mysqli_real_escape_string($conn$_POST['lastname']);
      $chem1 = mysqli_real_escape_string($conn$_POST['email_one']);
      $chem2 = mysqli_real_escape_string($conn$_POST['email_two']);  
      $safequestion = mysqli_real_escape_string($conn$_POST['safequestion']);
      $question_answer = mysqli_real_escape_string($conn$_POST['question_answer']);
      $chpass1 = mysqli_real_escape_string($conn$_POST['password1']);
      $chpass2 = mysqli_real_escape_string($conn$_POST['password2']);
      $gender = mysqli_real_escape_string($conn$_POST['gender']);
      $language = mysqli_real_escape_string($conn$_POST['language']);
      
      if($username != "" && $geburtsdatum != "" && $vorname != "" && $chem1 != "" && $chem2 != "" && $safequestion != "" && $question_answer != "" && chpass1 != "" && $chpass2 != "" && language != "" && gender != "")
      {
        if($chpass1 == $chpass2
        {  
          if(strlen($chpass1) >= 6)
          {
            $checked_password = true;
          }
          else
          {
            echo "Das Passwort muss mindestens 6 Zeichen enthalten.";
            $checked_password = false;
          }
        } 
        else 
        {
          echo "<div class='alert alert-danger'>Die von Ihnen eingegebenen Passwörter stimmen nicht überein.</div>";
          $checked_password = false;
        }
        
        
        if(isset($_POST['agb']))
        {
          $checked_agb = true;
        }
        else 
        {
          echo "<div class='alert alert-danger'>Sie müssen die AGB lesen.</div>";
          $checked_agb = false;
        }

        
        if($chem1 == $chem2)
        {
          $checked_email = true;
        } 
        else 
        {
          echo "<div class='alert alert-danger'>Die von Ihnen eingegebenen E-Mails stimmen nicht überein.</div>";
          $checked_email = false;
        }
        
        if($checked_agb && $checked_email && $checked_password)
        {
          $search = mysqli_query($conn,"SELECT `username`,`email` FROM `MainlysoftBenutzer` WHERE `username`='$username' AND `email`='$chem1'");
          $row = mysqli_fetch_row($search);

          if($row[1]==$chem1)
          {
            echo "Username and Email exists ";
          }
          else
          {
            $b = "false";
            $regDatum = date(Y-M-D);
            $dbPass = password_hash("$chpass1", PASSWORD_DEFAULT, ['cost' => 12]);
            $anzMeld = "0";
            $emBest = "false";
            
            $mysqli = mysqli_query($conn"INSERT INTO `MainlysoftBenutzer`(`name`, `vorname`, `passwort`, `email`, `accbest`, `username`, `geburtsdatum`, `registrierungsdatum`, `anzMeld`, `sicherheitsfrage`, `antwort`, `gender`, `language`, `embest`)
                                        VALUES('
$nachname', '$vorname', '$dbPass', '$chem1', '$b', '$username', '$geburtsdatum', '$regDatum', '$anzMeld', '$safequestion', '$question_answer', '$gender', '$language', '$emBest')");
  
            if ($mysqli)
            {
              function getUsetId($email)
              {
                $search = mysqli_query($conn"SELECT `ID` FROM `MainlysoftBenutzer` WHERE 'email'='$chem1'");
                $row = mysqli_fetch_row($search);
                $id = $row[0];
                return $id;
              }                     

              $calc_id = getUsetId($chem1);
              $to = $chem1;
              $subject = 'MS Network Registrierung';
              
              
              $em_res = mail($to$subject$message$headers);
              if ($em_res)
              {
                header("Location: reg_succes.html");
              }
              else
              {
                echo "Fehler beim Senden der Email";
              }
            }
            else
            {
              echo "Ein Fehler ist aufgetreten. Die Daten konnten nicht in die Datenbank eingetragen werden. Bitte versuchen Sie es erneut.";
            }
          }
        }
        else
        {
          echo "Fehler";
        }
      } 
      else 
      {
        echo "Füllen Sie bitte alle Datenfelder aus.";
      }
    }
    else
    {
      die('Es konnte keine Verbindung zu dem Mainlysoft Registrationsserver hergestellt werden.');
    }


Das kurriose ist ja, dass die Daten trotzdem in die Datenbank geschrieben werden. Es wird auch verglichen, ob es den Username schon gibt. Aber ich weiß auch nicht, warum genau an der Funktion hapert, die die ID ausliest, ich meine die obigen Funktionen funktionieren ja auch tadellos :nixweiss:

_________________
"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: Fr 07.10.16 19:10 
Mir fällt da nichts besonderes auf. Ist dieses Code-Segment in einer Funktion untergebracht oder global definiert?
ausblenden 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:
// so
<?php
    function MeineFunktion($servername$username,$password,$database)
    {
        $conn = mysqli_connect($servername$username,$password,$database);

        if($conn)
        {
            $username = mysqli_real_escape_string($conn$_POST['username']);
            ...
        }
        ...
    }
?>
// oder so
<?php

    $conn = mysqli_connect($servername$username,$password,$database);

    if($conn)
    {
        $username = mysqli_real_escape_string($conn$_POST['username']);
        ...
    }
    ...
?>

Sollte es global defniert sein, frage ich mich, was genau jene Variablen zugewiesen bekommen haben:
ausblenden PHP-Quelltext
1:
$conn = mysqli_connect($servername$username,$password,$database);					

_________________
„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: Fr 07.10.16 21:49 
$server = "localhost";
$database = "usr_web23442894_1";

Die anderen beiden möchte ich aus Sicherheitsgründen nicht sagen. Aber ich verstehe nicht, warum erst die Daten rausgesucht werden, und dann nicht :(

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20338
Erhaltene Danke: 2125

Win 10
C# (VS 2017)
BeitragVerfasst: Fr 07.10.16 21:58 
Hallo,

wenn Du innerhalb einer Funktion eine Variable benutzen willst, die außerhalb zugewiesen wurde (wie $conn in getUserId), musst Du das mittels global $conn; bekannt machen.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
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: Fr 07.10.16 22:19 
Ahh. Ich habe die Variable jetzt globalisiert:

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:
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:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
<?php
  $servername = "";
  $username = "";
  $password = "";
  $database = "";
  global $conn;
    $conn = mysqli_connect($servername$username,$password,$database);

    if($conn)
    {
      $username = mysqli_real_escape_string($conn$_POST['username']);
      $geburtsdatum = mysqli_real_escape_string($conn$_POST['geburtsdatum']);
      $vorname = mysqli_real_escape_string($conn$_POST['vorname']);
      $nachname = mysqli_real_escape_string($conn$_POST['lastname']);
      $chem1 = mysqli_real_escape_string($conn$_POST['email_one']);
      $chem2 = mysqli_real_escape_string($conn$_POST['email_two']);  
      $safequestion = mysqli_real_escape_string($conn$_POST['safequestion']);
      $question_answer = mysqli_real_escape_string($conn$_POST['question_answer']);
      $chpass1 = mysqli_real_escape_string($conn$_POST['password1']);
      $chpass2 = mysqli_real_escape_string($conn$_POST['password2']);
      $gender = mysqli_real_escape_string($conn$_POST['gender']);
      $language = mysqli_real_escape_string($conn$_POST['language']);
      
      if($username != "" && $geburtsdatum != "" && $vorname != "" && $chem1 != "" && $chem2 != "" && $safequestion != "" && $question_answer != "" && chpass1 != "" && $chpass2 != "" && language != "" && gender != "")
      {
        if($chpass1 == $chpass2
        {  
          if(strlen($chpass1) >= 6)
          {
            $checked_password = true;
          }
          else
          {
            echo "Das Passwort muss mindestens 6 Zeichen enthalten.";
            $checked_password = false;
          }
        } 
        else 
        {
          echo "<div class='alert alert-danger'>Die von Ihnen eingegebenen Passwörter stimmen nicht überein.</div>";
          $checked_password = false;
        }
        
        
        if(isset($_POST['agb']))
        {
          $checked_agb = true;
        }
        else 
        {
          echo "<div class='alert alert-danger'>Sie müssen die AGB lesen.</div>";
          $checked_agb = false;
        }

        
        if($chem1 == $chem2)
        {
          $checked_email = true;
        } 
        else 
        {
          echo "<div class='alert alert-danger'>Die von Ihnen eingegebenen E-Mails stimmen nicht überein.</div>";
          $checked_email = false;
        }
        
        if($checked_agb && $checked_email && $checked_password)
        {
          $search = mysqli_query($conn,"SELECT `username`,`email` FROM `MainlysoftBenutzer` WHERE `username`='$username' AND `email`='$chem1'");
          $row = mysqli_fetch_row($search);

          if($row[1]==$chem1)
          {
            echo "Username and Email exists ";
          }
          else
          {
            $b = "false";
            $regDatum = date(Y-M-D);
            $dbPass = password_hash("$chpass1", PASSWORD_DEFAULT, ['cost' => 12]);
            $anzMeld = "0";
            $emBest = "false";
            
            $mysqli = mysqli_query($conn"INSERT INTO `MainlysoftBenutzer`(`name`, `vorname`, `passwort`, `email`, `accbest`, `username`, `geburtsdatum`, `registrierungsdatum`, `anzMeld`, `sicherheitsfrage`, `antwort`, `gender`, `language`, `embest`)
                                        VALUES('
$nachname', '$vorname', '$dbPass', '$chem1', '$b', '$username', '$geburtsdatum', '$regDatum', '$anzMeld', '$safequestion', '$question_answer', '$gender', '$language', '$emBest')");
  
            if ($mysqli)
            {
              function getUsetId($email)
              {
                $search = mysqli_query($conn"SELECT `ID` FROM `MainlysoftBenutzer` WHERE `email`='$chem1'");
                $row = mysqli_fetch_row($search);
                $id = $row[0];
                return $id;
              }                     

              $calc_id = getUsetId($chem1);
              $to = $chem1;
              $subject = 'MS Network Registrierung';
              
              $headers = "From: " . strip_tags('yannicmair@mainlysoft.com') . "\r\n";
              
              $em_res = mail($to$subject$message$headers);
              if ($em_res)
              {
                header("Location: reg_succes.html");
              }
              else
              {
                echo "Fehler beim Senden der Email";
              }
            }
            else
            {
              echo "Ein Fehler ist aufgetreten. Die Daten konnten nicht in die Datenbank eingetragen werden. Bitte versuchen Sie es erneut.";
            }
          }
        }
        else
        {
          echo "Fehler";
        }
      } 
      else 
      {
        echo "Füllen Sie bitte alle Datenfelder aus.";
      }
    }
    else
    {
      die('Es konnte keine Verbindung zu dem Mainlysoft Registrationsserver hergestellt werden.');
    }
?>


Aber der Fehler kommt an der selben Stelle :(

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20338
Erhaltene Danke: 2125

Win 10
C# (VS 2017)
BeitragVerfasst: Fr 07.10.16 22:38 
Lies Dir bitte durch, was global tut und an welcher Stelle man es verwendet.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
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: Fr 07.10.16 22:44 
DANKE CHRISTIAN, DU BIST DER BESTE. Jetzt funktioniert es endlich :eyecrazy: :beer: :beer:

_________________
"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: Fr 07.10.16 22:55 
Hast du es denn verstanden? Und, was noch wichtiger ist, weißt du, wo du nächstes Mal nachgucken solltest, bevor du drauflosprogrammierst?
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 08.10.16 12:29 
Ja, ich denke schon. Man definiert eine Variable $conn. Aber in functions muss man dann global $conn definieren. Aber vielen Dank für jeden einzelnen, der mit geholfen hat :)

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
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 08.10.16 22:58 
Also soweit funktioniert jetzt erstmal alles. Jetzt ist nur noch das Problem, dass keine Usernames und Emails mehrmals vorkommen fürfen. Ich weiß nicht so recht, wie man die korrekte Abfrage dazu macht:

ausblenden PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
$search = mysqli_query($conn,"SELECT `username`,`email` FROM `MainlysoftBenutzer` WHERE `username`='$username' AND `email`='$chem1'");
          $row = mysqli_fetch_row($search);

          if($row[1]==$chem1 && $row[0] == $username)
          {
            echo "Username and Email exists ";
          }


Ich habe das jetzt mal ausgeführt und ich habe 2 mal die selben Emails in der Datenbank. Aber das darf nicht sein. Wie kann man das beheben?

_________________
"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: Sa 08.10.16 23:00 
Zitat:
dass keine Usernames und Emails mehrmals vorkommen fürfen


Dann setz' die Spalten in der Datenbank doch auf Unique. ;-)
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 08.10.16 23:15 
Danke! Ich habe email und username jetzt auf Unique gesetzt. Ich vertraue echt auf SQL, dass das alles sicher zu 100% funktioniert

_________________
"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: So 09.10.16 06:00 
Für den Fall, dass du es dir anders überlegst:
ausblenden PHP-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
$sql = "SELECT (SELECT COUNT(email) FROM MainlysoftBenutzer WHERE email = '" . $chem1 . "'), (SELECT COUNT(username) FROM MainlysoftBenutzer WHERE username = '" . $username . "')";
$search = mysqli_query($conn$sql);
$row = mysqli_fetch_row($search);
if ($row[0] > 0)
{
    echo "EMail existiert bereits."
}
else if ($row[1] > 0)
{
    echo "Benutzername existiert bereits."
}
else
    # Datensatz schreiben

_________________
„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: Mo 10.10.16 11:48 
Soo. Also die Registrierung funktioniert jetzt einwandfrei. Jetzt habe ich mir auf YouTube ein Tutorial angesehen, wie man einen Login baut. Folgendes ist dabei herausgekommen:

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:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
if($conn)
  {
    $benutzername = mysqli_real_escape_string($conn$_POST['user']);
    $passwort = mysqli_real_escape_string($conn$_POST['pass']);
    $loginButton = mysqli_real_escape_string($conn$_POST['login']);
    
    if ($loginButton)
    {
      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'];
          }
          
          if($dbbenutzer == $username AND $dbpasswort == $passwort)
          {
            echo "Login erfolgreich";
          }
          else
          {
            echo "Ihre Daten sind nicht korrekt. Bitte geben Sie richtige Daten ein.";
          }
        }
        else
        {
          echo "Der eingegebene Benutzer existiert nicht.";
        }
      }
      else
      {
        echo "Füllen Sie alle Datenfelder aus.";
      }
    }
  }


Wenn ich einen Benutzer eingebe, der gar nicht existiert, wird mir auch die Fehlermeldung angezeigt, dass dieser Benutzer nicht existiert. Wenn ich jedoch das richtige Passwort eingebe, bekomme ich die Meldung, dass die Daten nicht korrekt sind. Ich dachte erst, es liegt an password_hash. Das habe ich dann entfernt, also ist in der Datenbank jetzt das Passwort unverschlüsselt - aber die Benutzerdaten sind immernoch inkorrekt.

Zusammenfassung: Den Benutzer erkennt er, also ob es ihn gibt oder nicht. Bei dem Passwort jedoch nicht. Woran liegt das?

_________________
"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 11:54 
user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
also ist in der Datenbank jetzt das Passwort unverschlüsselt


Aua.

Mach' das nie, niemals, unter keinen Umständen. Nicht mal, wenn man dich mit vorgehaltener Waffe dazu zu zwingen versucht.

Gib doch mal die beiden Variablen aus, die du versuchst zu vergleichen. Wir wissen nämlich auch nicht, was da drinsteht.
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 12:16 
In den Variablen in der Benutzername und das Passwort. So sieht es jetzt erstmal in der Datenbank aus:

1

Sowohl der Login Script als auch der InsertData Script verschlüsseln das Passwort über die selbe Methode. Wenn ich mir das Passwort im Login ausgeben lasse, kommt dieses Konstrukt: $2y$10$jzQRdyFfAdHXsK/lA1YGXeFAq3FvLkByzUKK9typUJQrqglOZiu1m

Ganz anders als in der Datenbank. Aber als ich es in Plain Text versucht habe und die Passwörter identisch waren, hat's auch nicht geklappt. Hier einmal die Verschlüsselung: $passwordHash = password_hash($passwort, PASSWORD_DEFAULT);
Einloggen, um Attachments anzusehen!
_________________
"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: Mo 10.10.16 12:24 
Du solltest besser lesen, was deine Helfer dir schreiben. Woran user profile iconhydemarie dachte, war z.B. ein echo zu den Variablen
ausblenden PHP-Quelltext
1:
2:
$username$dbbenutzer
$passwort$dbpasswort

_________________
„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)

Für diesen Beitrag haben gedankt: hydemarie