ein problem mit login...

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

  • ein problem mit login...

    hallo ihr profis...

    ich bin noch nicht so sehr bewandert mit php, deshalb schreibe ich mal hier mein problem.
    ich verkaufe holzspielzeug und möchte meine kunden diesen dienst nun auch online bieten. dafür habe ich einen kunden login angefangen zu schreiben.
    der kunde gibt dort seine kunden id ein und sein passwort, nach eingabe sollte er erfolgreich eingeloggt sein. ( was auch geschieht )

    nun das problem:
    wenn ich ein falsches passwort eingebe kommt er trotzdem in seinen kunden bereich, normaler weise sollte jetzt kommen das das passwort ist, und wenn ich kein passwort eigebe kommt er auch in seinen bereich.
    vielleicht kann mir da mal jemand helfen.
    ich wäre dankbar dafür.

    PHP-Code:
    <?
    include("db.php");

    if($id < 1)
    {
    echo "Geben sie ihre Kunden ID ein!";
    }
    else if(strlen($pwd) < 1)
    {
    echo "Geben sie ihr Passwort ein!";
    }

    $result = mysql_query("select * from kunden WHERE id=$id");
    $reihen = mysql_num_rows($result);

    if ($reihen <= 0)
    {
    echo "Zutritt verweigert." + "<br>" + "Kunden ID oder Passwort nicht Korekt!";
    }
    if($pwd != $pwd)
    {
    echo "Zutritt verweigert." + "<br>" + "Sie haben ein falsches Passwort angegeben!";
    }
    else {
    echo "<b>" + "Herzlich Willkommen im Kundenbereich," + $name + "!" + "</b><br>";

     
    if (mysql_num_rows($result)) {
    while($row=mysql_fetch_array($result)) {

    $id                          = $row['id'];      
    $sid                        = $row['session'];
    $firma                     = $row['firma'];
    $name                    = $row['name'];
    $strasse                 = $row['strasse'];
    $plzort                    = $row['plzort'];
    $telefon                  = $row['telefon'];
    $telefax                  = $row['telefax'];
    $email                    = $row['email'];
    $ansprechpartner  = $row['ansprechpartner'];
    $pwd                     = $row['pwd'];
    }
    }

    ?>
    Zuletzt geändert von benorten; 03.08.2004, 12:37.

  • #2
    Willkommen, bitte benutze die [PHP]-Tags um deinen Code zu formatieren.

    Kommentar


    • #3
      du sollst die Variablen vor dem Gebrauch auf Existenz prüfen, isset ist dein Freund, und such mal im Forum nach register_globals

      Kommentar


      • #4
        hallo

        @TobiaZ: vielen dank erst einmal für die info.
        @asp2php: also die variabeln exestieren, da das script soweit auch funktioniert. leider abert nicht der teil wenn man ein falsches, oder garkein passwort eingibt.

        Kommentar


        • #5
          ah, ich habe nur so drüber geflogen, weil es nicht in php-tags war und daher keine lust, jetzt aber

          du hast:
          PHP-Code:
          if($pwd != $pwd
          überprüft, BEVOR du die Daten aus der DB ausliest UND die gleiche Var mit sich selbst verglichen. Drei Mal darfst du raten wann der Fall $pwd ungleich $pwd eintritt

          Vorschlag:
          PHP-Code:
          <?
          include("db.php");

          if($id < 1)
          {
          echo "Geben sie ihre Kunden ID ein!";
          }
          else if(strlen($pwd) < 1)
          {
          echo "Geben sie ihr Passwort ein!";
          }

          $result = mysql_query("select * from kunden WHERE id=$id");
          $reihen = mysql_num_rows($result);

          if ($reihen <= 0)
          {
          echo "Zutritt verweigert." + "<br>" + "Kunden ID oder Passwort nicht Korekt!";
          }
           
          else {
          $id                          = $row['id'];      
          $sid                        = $row['session'];
          $firma                     = $row['firma'];
          $name                    = $row['name'];
          $strasse                 = $row['strasse'];
          $plzort                    = $row['plzort'];
          $telefon                  = $row['telefon'];
          $telefax                  = $row['telefax'];
          $email                    = $row['email'];
          $ansprechpartner  = $row['ansprechpartner'];
          $pwd_db                     = $row['pwd'];
          }
          if($pwd != $pwd_db)
          {
          echo "Zutritt verweigert." + "<br>" + "Sie haben ein falsches Passwort angegeben!";
          }
          else {
          echo "<b>" + "Herzlich Willkommen im Kundenbereich," + $name + "!" + "</b><br>";

          ?>
          habe nur das notwendigste korrigiert. I.A. sollst du deinen Code generell überarbeiten, u.a.:
          - Existenzüberprüfung
          - mit $_POST arbeiten
          - vernünftige Ausgabeformat
          - und ausserdem was soll denn das Auslesen einer SessionID aus der DB beim Login. Die SessionID soll eigentlich beim erfolgreichen Einloggen IN DIE DB EINGETRAGEN werden und erst bei weiteren Requests zur Überprüfung ausgelesen werden.

          Kommentar


          • #6
            hallo

            @asp2php: vielen dank erst mal, werde das gleich mal testen.

            was meinst du damit, leider verstehe ich das nicht

            - mit $_POST arbeiten
            - vernünftige Ausgabeformat

            Kommentar


            • #7
              @$_POST: Such mal nach register_globals. Hatte asp dir oben schonmal gesagt.

              Kommentar


              • #8
                zu 1: http://de3.php.net/manual/en/reserved.variables.php

                zu 2: damit meine ich deine Ausgabe für erfolgreiches Anmelden bzw. Fehler. Selbst hier soll man auch die Ausgabe schön formatieren und dem User nicht einfach irgendwas hinschmeissen

                Kommentar


                • #9
                  Mein Vorschlag wäre zunächst einmal zu prüfen,
                  ob die Input-Felder überhaupt ausgefüllt wurden.

                  PHP-Code:
                  include("db.php");

                  if(
                  $id && $_POST[ID_FELD_NAME] != "")
                  {
                  echo 
                  "Geben sie ihre Kunden ID ein!";
                  }
                  else if(
                  strlen($pwd) < && $_POST[PASSWORT_FELD_NAME] != "")
                  {
                  echo 
                  "Geben sie ihr Passwort ein!";

                  Kommentar


                  • #10
                    @asp2php
                    das versteht sich ja von selbst. ist ja noch alles am anfang. erst mal soll ja das script funktionieren

                    habe das jetzt mal getestet.
                    ich habe nun die kunden id eingegeben ohne passwort, er hat mich trotzdem in dem kunden seinen bereich reingelassen, und eine 0 hat er mir oben links in die ecke gesetzt.
                    die kundendaten die angezeigt werden sollen nach dem erfolgreichen einloggen werden nun auch nicht mehr angezeigt.

                    Kommentar


                    • #11
                      d.h. die Zeile: "Herzlich Willkommen im Kundenbereich..." erscheint auf jeden Fall? wasfür Kundenname wird angezeit?.

                      BTW: die Überprüfung mit:
                      PHP-Code:

                      if($id 1)
                      {
                      echo 
                      "Geben sie ihre Kunden ID ein!";
                      }
                      else if(
                      strlen($pwd) < 1)
                      {
                      echo 
                      "Geben sie ihr Passwort ein!";

                      ist sehr schlampig. Ändern mal, indem du mit isset und $_POST arbeitet und den If ... Else ... Block sinnvoll Codebereiche umschliessen.

                      Kommentar


                      • #12
                        @alexs: habe mal deinen part eingebaut, und wieder nur die id ohne passwort eingegeben, dennoch bin wieder reingekommen.

                        leider habe ich nicht die ahnung die ihr habt.

                        Kommentar


                        • #13
                          Original geschrieben von benorten
                          @alexs: habe mal deinen part eingebaut, und wieder nur die id ohne passwort eingegeben, dennoch bin wieder reingekommen.
                          kein Wunder, das Teil ist ja auch für die Mülltone

                          Kommentar


                          • #14
                            @asp2php: es wird garkein kundenname angezeigt, sondern nur die zahl null.

                            du hast geschrieben:ist sehr schlampig. Ändern mal, indem du mit isset und $_POST arbeitet und den If ... Else ... Block sinnvoll Codebereiche umschliessen.

                            wie könnte das besser aussehen? wie gesagt ich bin kein profi, und lerne erst, sorry

                            Kommentar


                            • #15
                              Original geschrieben von asp2php
                              kein Wunder, das Teil ist ja auch für die Mülltone
                              meinst du damit was ich geschrieben habe? wenn ja, wie könnte man es denn besser machen?

                              Kommentar

                              Lädt...
                              X