You are not logged in.

  • Login

1

Thursday, July 23rd 2009, 11:40am

Einfaches Loginsystem funktioniert nicht

Also, ich habe mir mal ein gaaaannz einfacher Loginsystem gebastelt aber irgendwie funktioniert es nicht so wie ich das will. Es komm immer volgender Fehler:

Source code

1
Parse error: syntax error, unexpected $end in /srv/www/httpd/phost/u/de/pytalhost/untergrund-crew/web/login.php on line 59


Code:

PHP Quellcode

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
<form action='login.php' method='POST'>
<input type='text' name='username' />
<input type='text' name='passwort' />
</form>
 
<?php
if (isset($_POST['username']) AND isset($_POST['passwort'])) {
        $tempn = $_POST['username'];
        $tempp = $_POST['passwort'];
        $namel = False;
        $passl = False;
          $abfrage = "SELECT username, passwort FROM users";
          $result = mysql_query($abfrage);
            while($row = mysql_fetsch_object($result)) {
                    if ($row->username == $tempn) {
                           $namel = True;
                    }
                    if ($row->passwort == $tempp) {
                           $passl = True;
                    }
                        if ($namel == True AND $passl == True) {
                                 $LoggedIn = True;
                                 $tempn = $_SESSION['user'];
                                 echo "<div class='good'>Hallo ".$_SESSION['user']."! Du wurdest ervollgreich eingeloggt</div>";
                        }                     
                        else {
                             echo "<div class='bad'>Du hast ein falsches Passwort oder einen Falschen Usernamen eingegeben</div>";
                        }
            }
?>


Achja, die Zeile 59 wäre das </html>.

Danke im Voraus

PS: Ich glaube ich werde echt langsam zu alt für so ein zeug, wenn ich nichtmal mehr ein sooo einfaches Loginsystem zusammen bekomme..

2

Thursday, July 23rd 2009, 12:54pm

Hi,
ist aber kein schlimmer Fehler.
Es fehlt die schließende geschweifte Klammer des ersten und alles andere umfassenden if-Blocks. Sie muss also ganz ans Ende.

3

Friday, July 24th 2009, 3:52am

Quoted

Du wurdest ervollgreich eingeloggt

Nebenbei würde ich die Rechtschreibung nochmal durchdenken!

4

Friday, July 24th 2009, 9:57am

Ahh.. so leicht kann man mal was übersehen :)

Und danke für den Fehler.. den habe ich auch schon bemerkt..

5

Friday, July 24th 2009, 12:55pm

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$namel = False;
        $passl = False;
          $abfrage = "SELECT username, passwort FROM users";
          $result = mysql_query($abfrage);
            while($row = mysql_fetsch_object($result)) {
                    if ($row->username == $tempn) {
                           $namel = True;
                    }
                    if ($row->passwort == $tempp) {
                           $passl = True;
                    }
                        if ($namel == True AND $passl == True) {
                                 $LoggedIn = True;
                                 $tempn = $_SESSION['user'];
                                 echo "<div class='good'>Hallo ".$_SESSION['user']."! Du wurdest ervollgreich eingeloggt</div>";
                        }                     
                        else {
                             echo "<div class='bad'>Du hast ein falsches Passwort oder einen Falschen Usernamen eingegeben</div>";
                        }
            }

Korrigiert mich, wenn ich falsch liege, aber aktuell werden Nutzername und Passwort unabhängig geprüft.

Es könnte also passieren, dass zwar der Nutzername korrekt aber das Passwort falsch ist. Da $namel und
$passl pro Durchlauf nicht neu initialisiert werden, ist $namel bei allen weiteren Durchläufen noch immer auf true gesetzt.
Hat nun ein anderer Benutzer ein passendes Passwort, ist der Login-Versuch erfolgreich, obwohl Nutzername und
Passwort nicht vom selben Benutzer stammen.

Die Variablen $namel und $passl müssten also pro Durchlauf neu und nicht vor der Schleife initialisiert werden,
oder die Nutzer-/ Passwort-Überprüfung in einer Abfrage bzw. direkt durch den SQL-Server geschehen.

Desweiteren wird in diesem Fall für jeden weiteren Benutzer in der Datenbank der else-Bereich durchlaufen und die
Meldung für den fehlerhaften Login ausgegeben.

6

Saturday, July 25th 2009, 11:46am

Hi,


du könntest dir schon eine Menge Schreibarbeit sparen, wenn du den Query so anpasst, dass dieser schon username und password prüft.

PHP Quellcode

1
$abfrage = "SELECT COUNT(id) as id FROM users WHERE username = '...' AND passwort = '...' LIMIT 1 ";


Wenn Ergebnisresult == 0 dann
Fehler ausgeben
Ansonsten
Einloggen

Similar threads

Social bookmarks