PHP/MySQL Script wird nicht angezeigt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von piratos
    Ich möchte dir nicht zu Nahe treten und auch nicht beleidigen, aber das geht mir langsam auf den Senkel.

    Schreibe deinen Stil wie es dir gefällt aber bitte trete nicht als selbst ernannter Stilayatollah auf und vor allem zwinge deinen Stil den anderen nicht auf bzw. versuche nicht andere diesbezüglich ständig zu bevormunden.
    Das ist nicht "mein" Stil. Wenn man in einem Team arbeitet, muss man so programmieren, dass sich auch derjenige sofort auskennt, der den Code zum ersten mal ansieht. Und wenn du for- oder while-Schleifen für Daten verwendest, die nur einmal vorkommen können, dann vermittelst du demjenigen eine falsche Absicht. Das kann im besten Fall den Programmierer nur ein paar Sekunden aufhalten, aber im blödesten Fall neue Fehler provozieren. So oder so ist das einfach eine schlechte Art und Weise.

    Von mir aus kannst du in deinem stillen Kämmerlein so programmieren, wie du es für richtig haltest. Aber bring nicht andere dazu zu glauben, dass es "eh egal" ist, wie sie es machen. Das ist es nämlich nicht.

    Und ich denke auch, dass mir hier viele Recht geben werden. Und denen hab ich bestimmt nicht "meinen" Stil aufgezwungen, sondern das sagt einem einfach der gesunde "Programmierverstand".
    Zuletzt geändert von h3ll; 29.07.2009, 21:39.

    Kommentar


    • #17
      Jetzt ist hier Ruhe im Karton. Sonst hau ich dazwischen.

      Peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #18
        Okay also meine Lösung:
        Code:
        [COLOR=#000000][FONT=Courier New][COLOR=#0000cc]<?php[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#000000]$username [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'username'[/COLOR][/FONT][FONT=Courier New][COLOR=#006600]];[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#0000cc]$password [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]$_POST[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'password'[/COLOR][/FONT][FONT=Courier New][COLOR=#006600]];[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#0000cc]$session [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]session_id[/COLOR][/FONT][FONT=Courier New][COLOR=#006600]();[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#0000cc]$connection [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]mysql_connect[/COLOR][COLOR=#006600]([/COLOR][COLOR=#cc0000]'localhost'[/COLOR][COLOR=#006600],[/COLOR][COLOR=#cc0000]'user'[/COLOR][COLOR=#006600],[/COLOR][COLOR=#cc0000]'geheim'[/COLOR][COLOR=#006600]) or die([/COLOR][COLOR=#cc0000]"Keine Verbindung zum Server."[/COLOR][/FONT][FONT=Courier New][COLOR=#006600]); [/COLOR][/FONT]
        [FONT=Courier New][COLOR=#0000cc]mysql_select_db[/COLOR][COLOR=#006600]([/COLOR][COLOR=#cc0000]'datenbank'[/COLOR][COLOR=#006600]) or die([/COLOR][COLOR=#cc0000]"Keine Verbindung zur Datenbank."[/COLOR][/FONT][FONT=Courier New][COLOR=#006600]); [/COLOR][/FONT]
        [FONT=Courier New][COLOR=#0000cc]$pass [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]md5[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000cc]$password[/COLOR][/FONT][FONT=Courier New][COLOR=#006600]);[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#0000cc]$user [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]$username[/COLOR][/FONT][FONT=Courier New][COLOR=#006600];[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#0000cc]$login [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#cc0000]'SELECT id FROM members WHERE name="'[/COLOR][COLOR=#006600].[/COLOR][COLOR=#0000cc]$user[/COLOR][COLOR=#006600].[/COLOR][COLOR=#cc0000]'" AND pass="'[/COLOR][COLOR=#006600].[/COLOR][COLOR=#0000cc]$pass[/COLOR][COLOR=#006600].[/COLOR][COLOR=#cc0000]'" LIMIT 1';[/COLOR][/FONT][/COLOR]
        [COLOR=#000000][FONT=Courier New][COLOR=#0000cc]$login_query [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]mysql_query[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000cc]$login[/COLOR][COLOR=#006600]);[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#006600]while([/COLOR][COLOR=#0000cc]$row [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]mysql_fetch_object[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000cc]$login_query[/COLOR][COLOR=#006600]))[/COLOR][/FONT][FONT=Courier New][COLOR=#006600] {[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#0000cc]$userid [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]$row[/COLOR][COLOR=#006600]->[/COLOR][COLOR=#0000cc]id[/COLOR][/FONT][FONT=Courier New][COLOR=#006600];[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#006600]}[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#006600]echo [/COLOR][COLOR=#cc0000]'Willkommen User-Nummer '[/COLOR][/FONT][FONT=Courier New][COLOR=#006600];[/COLOR][/FONT]
        [FONT=Courier New][COLOR=#006600]echo [/COLOR][COLOR=#0000cc]$userid[/COLOR][/FONT][COLOR=#006600][FONT=Courier New];[/FONT][/COLOR]
        [FONT=Courier New][COLOR=#0000cc]?>[/COLOR][/FONT]
        [FONT=Courier New]<form action="login.php" method="post">[/FONT]
        [FONT=Courier New]                           Benutzername: <input type="text" name="username" /><br />[/FONT]
        [FONT=Courier New]                           Passwort: <input type="password" name="password" /><br />[/FONT]
        [FONT=Courier New]                           <input type="submit" name="submit" value="Einloggen" />[/FONT]
        [FONT=Courier New]                           </form>[/FONT][/COLOR]

        Kommentar


        • #19
          Dein Script ist anfällig für SQL-Injections. Außerdem ist die While-Schleife sinnlos.

          Kommentar


          • #20
            Zitat von piratos
            Ich muss das anders ausdrücken

            PHP-Code:
            $row mysql_fetch_object($login_query); 
            Ohne Treffer ergibt das:
            Notice: Trying to get property of non-object
            Auch nicht so ganz korrekt.

            Die While-Schleife macht ja genau das gleiche - sie wendet mysql_fetch_XY so lange an, bis der Rückgabewert false lautet.
            Wenn es kein Ergebnis gibt, dann wird der Anweisungsblock der While-Schleife auch nicht durchlaufen.

            Die von dir genannte Meldung bekommt man erst im nächsten Schritt, wenn man versuchen würde, auf Eigenschaften von $row zuzugreifen, obwohl $row eben nicht das erwartete Objekt, sondern auch wieder nur false enthält.

            Und die While-Schleife "rettet" im eingangs geposteten Script auch nicht - wenn die nicht durchlaufen wird, dann hat halt $userid keinen Wert, und ist beim anschliessenden Versuch, es auszugeben, nicht vorhanden und wirft dann an der Stelle eine entsprechende Meldung.

            Die While-Schleife finde ich jedenfalls auch fehl am Platze, wenn lediglich ein Datensatz erwartet wird. Da nutze ich mysql_num_rows, und entscheide an Hand dessen, ob ich mir einen Wert aus diesem einen Datensatz zur Ausgabe hole, oder melde dass gar nichts gefunden wurde.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar

            Lädt...
            X