Ankündigung

Einklappen
Keine Ankündigung bisher.

Login

Einklappen

Neue Werbung 2019

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

  • Login

    Hallo,
    ich habe ein Problem.
    Ich möchte, dass bei einem Login das Passwort des Users überprüft wird.
    Hier ist erstmal der HTML-Krams (eigentlich unwichtig):

    Code:
    <html>
    <body>
    <form action="loginpro.php">
    <table>
    <tr><td>Nick:</td><td><input type="text" name="nick"></td></tr>
    <tr><td>Pass:</td><td><input type="password" name="pw"></td></tr>
    <tr><td></td><td><input type="submit" vlaue="Login"></td></tr>
    </table>
    </body>
    </html>
    So, und hier fängt mein Problem an.
    In Line 14 bei
    Code:
    if (mysql_num_rows ($process) > 0)
    meldet er einen Fehler. wie mach ich das, dass er das überprüft.
    Code:
    <?php
    include ("mysql.php");
    
    $sql = "SELECT ". 
         "id, nick, pw, mail, rang".
         "FROM ".
         "ms_user".
         "WHERE ".
        "(nick like '".$_REQUEST["nick"]."') AND ".
        "(Kennwort = '".md5 ($_REQUEST["pw"])."')";
    
        $process = mysql_query ($sql);
    
        if (mysql_num_rows ($process) > 0)
        {
        // Benutzerdaten in ein Array auslesen.
        $data = mysql_fetch_array ($process);
    
        // Sessionvariablen erstellen und registrieren
        $_SESSION["ms_id"] = $data["id"];
        $_SESSION["ms_nick"] = $data["nick"];
        $_SESSION["ms_mail"] = $data["mail"];
        $_SESSION["ms_rang"] = $data["rang"];
    
        header ("Location: http://www.gmx.de");
        }
    
    ?>
    Thx

    Snow

  • #2
    Poste doch mal bitte den Text der Fehlermeldung.

    Kommentar


    • #3
      es ist sicherlich diese hier:

      28.4. Supplied argument is not a valid MySQL result..
      http://www.php-faq.de/q/q-fehler-mysql-result.html

      heißt so viel wie .. schreibe mal:
      Code:
      $process = mysql_query( $sql ) or die( mysql_error() );
      grüße ben.
      [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

      Kommentar


      • #4
        ich sehe du hast ein tutorial von tutorials.de verwendet...
        das loginsystem würde ich nicht nehmen, da man es gaaaaaanz leicht knacken kann...
        MfG,
        WasserDragoon.

        Kommentar


        • #5
          Also, erstmal danke.
          dann hier ist die Meldung:

          Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ****************** on line 14

          Ich weiß, ich habe aber versucht das login system ein wenig umzuformen, da ich bis jetzt alles selber gacmht habe und jetzt kein tutorial kopieren wollte.

          Es muss nicht in dieser Art gehen.
          Wie könnte ich denn das pw in md5 vergleichen?

          Kommentar


          • #6
            Schreib die SQL-Anweisung doch mal so um.

            PHP-Code:
            <?php
            $sql 
            "SELECT
                           id, nick, pw, mail, rang
                        FROM
                            ms_user
                        WHERE 
                            (nick like '"
            .$_REQUEST["nick"]."') AND 
                            (Kennwort = '"
            .md5 ($_REQUEST["pw"])."')"
            ?>
            [edit]
            Bist du sicher, das du ein LIKE bei der Nickname-Abfrage benutzen willst?
            So könnte es zu verwechslungen kommen, wenn einer "Bert" heißt und ein anderer "Herbert".
            Da wäre eher ein Binary" angebracht.
            [/edit]

            Kommentar


            • #7
              Hmm.. danke, also bevor du das gepostet hast, hab ich das so umgeformt:

              Code:
              <?php
              include ("mysql.php");
              
              $sql = "SELECT id, nick, pw, mail, rang FROM ms_user WHERE (nick like '$_POST[nick]') AND (pw = md5('$_POST[nick]'))";
              
                  $process = mysql_query ($sql);
              
                  if (! $pw==md5('$_POST[pw]'))
                  {
                  print "Das Passwort ist falsch!";
                  }
              
                  else
                  {
                  // Benutzerdaten in ein Array auslesen.
                  $data = mysql_fetch_array ($process);
              
                  // Sessionvariablen erstellen und registrieren
                  $_SESSION["ms_id"] = $data["id"];
                  $_SESSION["ms_nick"] = $data["nick"];
                  $_SESSION["ms_mail"] = $data["mail"];
                  $_SESSION["ms_rang"] = $data["rang"];
              
                  header ("Location: contact.php");
                  }
              
              ?>
              Denkt ihr das geht so oder entdeckt ihr da was, also so wie
              ich es eben gesehen hab klappt es, also er leitet mich um.

              Kommentar


              • #8
                Siehe [edit]-Teil im vorherigen Post. :wink:

                Kommentar


                • #9
                  hier ich gebe dir mal mein loginsystem und ich hoffe, dass das dir dan weiterhilft du musst es dann natürlich nur noch anpassen...
                  das formular:
                  Code:
                  <form action="login.php" method="POST">
                                
                  <font size="2">Login</font><table cellspacing="0" cellpadding="0" border="0" width="100%">
                                  <tr>
                                    <td>
                                      <font size="1">Username:
                                    </font>
                                    </td>
                                    <td>
                                      <font size="1">
                                      <input type="text" name="username">
                                    </font>
                                    </td>
                                  </tr>
                                  <tr>
                                    <td>
                                      <font size="1">Passwort:
                                    </font>
                                    </td>
                                    <td>
                                      <font size="1">
                                      <input type="password" name="passwort">
                                    </font>
                                    </td>
                                  </tr>
                                  <tr>
                                    <td>
                                      <font size="1">
                                      <input type="submit" value="Und LOS...">
                                    </font>
                                    </td>
                                  </tr>
                                </table>
                              </form>
                  hier die login.php:
                  Code:
                  //* Vergleich von Usernamen und Passwort
                  $result = mysql_query("SELECT * FROM $table WHERE username='$username' and passwort='$pwd'");
                         if (mysql_num_rows($result)) {
                          while($row=mysql_fetch_object($result)) {
                  
                  //* Cookies setzen
                  setcookie('gbservice', 'sperren', time()+$cookietime);                 //* Cookie zum Sperren
                  setcookie('gbservice_user', $_POST['username'], time()+$cookietime);   //* Username als Cookie
                  setcookie('gbservice_pwd', $_POST['passwort'], time()+$cookietime);    //* Passwort als Cookie
                       header("Location: admin.php");                           //* URL der Userseite
                      }
                    }
                  nun musst du nur noch in der datei, die gesichert werden soll folgendes machen:
                  Code:
                  if(!empty($_COOKIE['gbservice_user']))
                  {
                    echo 'hier kommt der gesicherte bereich rein';
                  }
                  MfG,
                  WasserDragoon.

                  Kommentar


                  • #10
                    Oh, danke!
                    Wie ich sehe arbeitet das mit Cookies, sind denn Cookies sicherer?
                    Ich meine sie haben den Vorteil, dass man sich nicht immer einloggen muss, aber wie mach ich dass dann mit den sessionvariablen, die ich registrieren möchte?

                    Cu
                    Snow

                    Kommentar


                    • #11
                      Zitat von PrinzEisenherz
                      Siehe [edit]-Teil im vorherigen Post. :wink:
                      Was kann man anstatt von like benutzen?
                      Ich bin mir da nicht ganz im klaren.

                      Kommentar


                      • #12
                        Man kann und sollte einfach = benutzen:
                        Code:
                        spalte = 'test'
                        Dieser Code trifft nur auf test zu.
                        LIKE ist dann geignet wenn du etwas suchen willst:
                        Code:
                        spalte LIKE '%teilname%'
                        Wobei dieser Code dann immer zutreffen wenn teilname enthalten ist.
                        mfg RudiS

                        Kommentar


                        • #13
                          Ah ganz vergessen, stimmt ja, danke.

                          Kommentar


                          • #14
                            LIKE dient dazu um etwas aus einem oder mehreren Tabelenfeldern zu suchen.

                            Z.B.:
                            ...WHERE Spalte LIKE '%'".$var."'";

                            Das %-Zeichen ist ein Platzhalter.

                            Genaueres findest du hier.
                            http://dev.mysql.com/doc/mysql/de/St...functions.html

                            Hingegen BINARY eine Bitgleichheit überprüft.

                            ...WHERE BINARY Spalte = '".$var."'";

                            Siehe:
                            http://dev.mysql.com/doc/mysql/de/Ca...Operators.html

                            Kommentar


                            • #15
                              Vorsicht:

                              Eine Überprüfung ohne BINARY hat den Nachteil, dass sich User nicht so rigistrieren können.

                              Mustermann, MuStErMaNn, mUSERTMANN und MusterMann wären alles erfolgreiche Suchergebnisse wenn du die Abfrage ohne BINARY durchführst.

                              Kommentar

                              Lädt...
                              X