kostenloser Webspace werbefrei: lima-city


Wenn ich mich einloggen möchte kommt die Fehlermeldung.:-(

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    game17

    game17 hat kostenlosen Webspace.

    Hallo,

    Ich habe ein problem wenn ich nicht einloggen möchte kommt die Fehlermeldung.
    Könnt ihr mir bitte helfen.


    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in E:\xampp\htdocs\spiele\login\login.php on line 25



    <html>
    <head><title>index</title></head>
    
    <style type="text/css">
    <!--
    body {
    	background-image: url(bg/bg3.jpg);
    	background-repeat:repeat-x;
    	background-color:#d9deeb;
    
    }
    -->
    </style>
    <link href="index.css" rel="stylesheet" type="text/css" />
    <link rel="icon" href="img/icon.png" type="image" />
    
    
    			
    <!--datepicker -->
    <script type="text/javascript" charset="utf-8">
    jQuery(function($){
    $(".date").datepicker();
    });
    </script>
    
    <body>
    <div class="mainr">
     <div class="topleft"> <img src="img/logo.png" width="200" height="60" /></a></div>
    <form action="login/login.php" method="post">
      
      <div class="qwerty">
      <div class="label">
            <div class="email style1">&nbsp;UserName</div>
            <div class="password">&nbsp;&nbsp;Password</div>
          </div>
          <div class="label1">
            <div class="emailtext">
              <input name="nutzername" type="text"/>
            </div>
            <div class="passwordtext">
              <input name="passwort" type="password"  />
              <input name="submit" type="submit" class="greenButton" value="Login" />
            </div>
          </div>
          <div class="label2">
            
            <div class="password">&nbsp;&nbsp;Forgot Password?</div>
          </div>
        </div>
     
      </form>
       
      </div>
    
    <div class="downleft">
      <div class="picture">
      <img src="bg/log.png" width="500" height="330" />
      </div>
      <div class="field">
        <div class="signup">Sign Up</div>
    	<div class="free">It's free, and always will be</div>
    	<div class="text">
    	<form  method="POST">
    	  	
    
    		 
    		</form>
    		 </div>
    		 </div>
    </body>
    </html>



    <?php
            $seitentitel = 'Login';
            require_once('includes/zugang.php');
     
            $fehlermldg = "";
     
            if (!isset($_SESSION['id'])) {
                if (isset($_POST['submit'])) {
     
                    $db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
                        mysqli_set_charset($db, "utf8");
     
                    $nutzername = mysqli_real_escape_string($db, trim($_POST['nutzername']));
                    $passwort = mysqli_real_escape_string($db, trim($_POST['passwort']));
     
                    if (!empty($nutzername) && !empty($passwort)) {
     
    $sql = <<< EOT
    SELECT id, nutzername, vorname ,Account
      FROM nutzer
      WHERE nutzername = '$nutzername' AND passwort = SHA('$passwort')
    EOT;
                        $daten = mysqli_query($db, $sql);
     
                        if (mysqli_num_rows($daten) == 1) {
     
                          // Login erfolgreich, also die Cookies setzen und den Benutzer zur Hauptseite umleiten
                          $zeile = mysqli_fetch_array($daten);
                          $_SESSION['id'] = $zeile['id'];
                          $_SESSION['nutzername'] = $zeile['nutzername'];
                          $_SESSION['vorname'] = $zeile['vorname'];
    					  $_SESSION['Account'] = $zeile['Account'];
                          setcookie('id', $zeile['id'], time() + (60 * 60 * 24 * 30));    // Verfällt in 30 Tagen
                          setcookie('nutzername', $zeile['nutzername'], time() + (60 * 60 * 24 * 30));  // Verfällt in 30 Tagen
                          $hauptseite = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/seite2.php';
                          mysqli_close($db);
                          header('Location: ' . $hauptseite);
                          exit();
                        } else {
                            $fehlermldg = 'SIE Müssen gültige-Zugangsdaten eingeben, um Sich einzuloggen.';
                        }
                    } else {
                        $fehlermldg = 'Sie m&um;ssen Ihre Zugangsdaten eingeben, um sich einzuloggen.';
                    }
                }
            }
        ?>
        <div id="wrapper">
     
            <?php
                require_once('includes/header.php');
                    if($fehlermldg != "") {
                        echo '<p class="fail">' . $fehlermldg . '</p>';
                    }
            ?>
    		<link href="../bilder-spiel.ico" rel="SHORTCUT ICON">
           <meta http-equiv="content-type" content="text/html; charset=UTF-8">
          <p><a href="../index.php"><font size="7">Zurück</font></a></p>
    	  
        </div><!-- #wrapper -->
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Die Fehlermeldung besagt wohl, dass da wohl ein Fehler in deiner SQL-Syntax liegt. Ich würde mal auf
    SHA('$passwort')
    tippen, welches imho
    SHA($passwort)
    heissen sollte. Zudem würde ich Spaltennamen immer in Gravis ( ` ) einschließen, um mögliche Konflikte zu vermeiden. Auch die EOT-Variante wäre mir ein wenig zu unsauber und Fehleranfällig, aber mag sein, dass das einen tieferen Sinn hat.

    PS: Eine weitere Möglichkeit wäre, dass die SQL-Verbindung nicht richtig klappt. Die Zeile etwas erweitert auf
    $db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME) 
    			or die("Error " . mysqli_error($db));
    könnte Aufschluss geben.

    Beitrag zuletzt geändert: 23.9.2013 21:10:22 von noxious
  4. 1. Es wäre ganz nett wenn du Hilfe haben möchtest, dann lass uns bitte nicht "Zeile 25" erst suchen, sondern mache wenigstens einen Hinweis wo sie trotz Zeilenumbrüche zu finden sei.

    2. EOT weglassen.
    Dann sieht der SQL-String so aus:
    $sql = '
    SELECT 
      id, nutzername, vorname, Account
    FROM 
      nutzer
    WHERE 
      nutzername = ' . $nutzername . ' AND 
      passwort = SHA(' . $passwort . ');'


    Alternativ um SQL-Injection vorzubeugen:
    $sql = sprintf("
    SELECT 
      id, nutzername, vorname, Account
    FROM 
      nutzer
    WHERE 
      nutzername = '%s' AND 
      passwort = SHA('%s'),
    mysql_real_escape_string($nutzername ),
    mysql_real_escape_string($passwort )
    ");


    3. Du erwartest ein TRUE nach deinem SELECT in der folgenden Zeile:
    if (mysqli_num_rows($daten) == 1) {

    Was aber wenn es dann plötzlich ein FALSE wird? Dein IF-ELSE fängt das FALSE nicht ab.
    Das passiert nämlich hier. Deine Fehlermeldung sagt dir, dass ein Boolean zurückgegeben wurde.
    MYSQLI_QUERY() gibt bei einem erfolgreichen SELECT eine RESOURCE zurück, bei einem Fehler ein FALSE.
    Versuche es stattdessen mit MYSQL_AFFECTED_ROWS() oder MYSQL_RESULT().
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!