MySQL Abfrage läuft nicht so wie ich will !

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

  • MySQL Abfrage läuft nicht so wie ich will !

    Hallo leute,

    ich versuche gerade ein login script für W@P zu schreiben. Es läuft folgendermaßen. Es besteht ein MySQL DB namens "adminzone". Er besteht nur aus einer Tabelle "zugriff"(id,name,pass,level). Da sind 2 user eingetragen einmal name=test und pass=secret und der zweite ist name=name und pass=pass.

    Soweit sogut.

    Beim testen der Script logge ich mich mit test und secret ein bekomme die Fehlermeldung

    "Sorry, aber dieser Name ist leider nicht bekannt !"

    dann logge ich mich mit name und pass ein wieder die selbe Fehlermeldung.

    Ich benutze PHP Version 4.3.4

    Was mache ich falch.

    Hier ist der Codeauszug wo ich die Login Daten überprüfe.


    ........

    include('var.inc.php');
    if((!isset($_POST["username"])) OR
    (!isset($_POST["password"])))
    {
    die ("Sorry, aber ohne Name bzw. Passwort geht hier nichts !");
    }
    $conn = @mysql_connect($dbserver,$dbuser,$dbpass);
    if (!$conn)
    {
    die ("Sorry, Verbindungsversuch zur Datenbank ist fehlgeschlagen !");
    }
    mysql_select_db($dbname,$conn);
    $query = "SELECT pass, level FROM zugriff WHERE name = '".$username."'";
    $result = mysql_query($query,$conn);
    $zeileholen = mysql_fetch_array($result,MYSQL_ASSOC);
    mysql_close($conn);

    if (!$zeileholen)
    {
    die ("Sorry, aber dieser Name ist leider nicht bekannt !");
    }
    if ($zeileholen["pass"] <> $password)
    {
    die ("Sorry, aber dieses Passwort passt nicht zum Usernamen !");
    }

    .......
    ....
    ..

  • #2
    register_global = off ?

    name = '".$username."'
    mfg
    marc75

    <Platz für anderes>

    Kommentar


    • #3
      Ein paar zusätzliche Fehlerausgaben helfen sicher bei der Suche nach der Fehlerquelle weiter:

      mysql_select_db($dbname,$conn)
      or die('select db failed: '. mysql_error());
      $query = "SELECT pass, level FROM zugriff WHERE name = '".$username."'";
      $result = mysql_query($query,$conn)
      or die('query failed: '. mysql_error());


      Außerdem solltest du den Namen noch 'entschärfen', damit niemand die Query hacken kann:
      $query = "SELECT pass, level FROM zugriff WHERE name = '".mysql_escape_string($username)."'";

      und @marc75: gut erkannt
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        Im übrigen empfielt es sich nicht bei einem Login-Prozess zu viele Informationen preiszugeben ... die Aussage Login fehlgeschlagen reicht vollkommen aus ... !
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          und das hier auch noch:

          if ($zeileholen["pass"] <> $password)

          Kommentar


          • #6
            Original geschrieben von marc75
            register_global = off ?

            name = '".$username."'
            register_globals = off

            und ich weiss nicht was du mit name = '".$username."' meinst, ist hier irgendwas falch ?

            Kommentar


            • #7
              Original geschrieben von asp2php
              und das hier auch noch:

              if ($zeileholen["pass"] <> $password)
              Was ist denn jetzt schon wieder ?

              Kommentar


              • #8
                Original geschrieben von tahir
                register_globals = off

                und ich weiss nicht was du mit name = '".$username."' meinst, ist hier irgendwas falch ?
                dann befrage mal die suche nach register global off oder schaue unter www.php.net dazu nach.
                mfg
                marc75

                <Platz für anderes>

                Kommentar


                • #9
                  sollten die register_globals on sein oder was ?

                  Ich bin newbee apropo

                  Kommentar


                  • #10
                    $_POST["username"] wird nur in $username kopiert usw. wenn register_globals=On

                    Also schaltest du entweder register_globals ein
                    oder (was ich empfehle) du benutzt überall die Array-Schreibweise.
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar


                    • #11
                      Ich danke euch allen.

                      Mit register_globals=off und mit der $_SESSION hat alles wunderbar geklappt...




                      Kommentar

                      Lädt...
                      X