2016-09-26 8 views
-3

Ich versuche, meine Anmeldeseite zu testen, also wenn ich mich einloggen sollte Umleitung auf mein Konto Seite, aber ich bekomme diese FehlermeldungSchwerwiegender Fehler: Aufruf zu undefinierter Methode mysqli_result :: fetch() in C: wamp www ...... in Zeile 12

Fatal error: Call to undefined method mysqli_result::fetch() in C:\wamp\www...... on line 12

hier ist mein Quellcode für die login.php Seite

<?php require ("connections/Connection.php"); ?> 
<?php 

if(isset($_POST['Login_Button'])) { 

    session_start(); 
    $Email = $_POST['Email']; 
    $Password = $_POST['Password']; 

$result = $Conn->query("Select UserID FROM users WHERE Email='$Email' AND Password='$Password'"); 

    while ($num_rows = $result->fetch(MYSQLI_BOTH)); 

{ 

session_start(); 

    $_SESSION["UserID"] = $num_rows['UserID']; 

     header('Location: Account.php'); 

    } 
} 
?> 

<!doctype html> 
<html> 
<head> 
<link href="assets/css/Master.css" rel="stylesheet" type="text/css" /> 
<link href="assets/css/Menu.css" rel="stylesheet" type="text/css" /> 
<meta charset="utf-8"> 
<title>Template</title> 
</head> 

<body> 
<div class="Container"> 
    <div class="Header"></div> 
    <div class="Menu"> 
     <div id="Menu"> 
      <nav> 
       <ul class="cssmenu"> 
        <li><a href="#">Register</a></li> 
        <li><a href="#">LogIn</a></li> 
       </ul> 
      </nav> 
     </div> 
</div> 
    <div class="LeftBody"></div> 
    <div class="RightBody"> 
      <form action="" method="post" name="LoginForm" id="LoginForm"> 
       <div class="FormElement"> <input name="Email" type="email" required="required" class="TField" id="Email" placeholder="Email"> </div> 
       <div class="FormElement"> <input name="Password" type="password" required="required" class="TField" id="Password" placeholder="Password"> </div>     
       <div class="FormElement"> <input name="Login_Button" type="submit" class="button" id="Login_Button" value="Login"> </div> 
     </form> 
    </div> 
    <div class="Footer"></div> 
</div> 
</body> 

hier mein connection.php ist (Mysqli verbinden Code)

<?php 

$dbhost = "localhost"; 
$dbuser = "root"; 
$dbpass = ""; 
$dberror1 = "Could Not Connect to Your Database"; 
$dberror2 = "Could Not Find Your Table"; 

$Conn = mysqli_connect($dbhost, $dbuser, $dbpass) or die ($dberror1); 

$Select_db = mysqli_select_db($Conn, 'users') or die ($dberror2); 

$query = mysqli_query($Conn, "Select * FROM users"); 

$num_rows = mysqli_num_rows($query); 

if($num_rows != 0){ 

while ($fetch = mysqli_fetch_assoc($query)){ 

echo $fetch['UserID']; 
} 
} 

?> 

Kann jemand helfen?

+0

Insbesondere beziehen sich auf http://stackoverflow.com/a/12769983/476 – deceze

+0

** Bewahren Sie niemals glatt Text-Passwörter! ** Bitte verwenden Sie PHP [integrierte Funktionen] (http://jayblanchard.net/proper_password_hashing_with_PHP.html), um die Passwortsicherheit zu behandeln. Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das 'password_hash()' [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. Stellen Sie sicher, dass Sie *** [Kennwörter nicht entgehen] (http://Stackoverflow.com/q/36628418/1011527) *** oder verwenden Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –

Antwort

1

Sie ein Komma in der SQL-Abfrage fehlt:

$result = $Conn->query("Select * FROM users WHERE 
Email='$Email' AND Password='$Password"); 

werden sollten:

$result = $Conn->query("Select * FROM users WHERE 
Email='$Email' AND Password='$Password'"); 

dieses Da die Abfrage fehlschlägt und $resultfalse ist, die auch fetch() versagt bedeutet. Im Allgemeinen sollten Sie überprüfen, ob $result gültig ist, bevor Sie fortfahren.

Sehen Sie sich auch die E-Mail und Passwort zu entkommen, wenn Sie Ihre Datenbank brechen nicht Bobby Table wollen :)

+0

Abfrage ("Wählen Sie UserID von Benutzern WHERE Email = '$ Email' UND Passwort = '$ Passwort'"); \t \t while ($ num_rows = $ result-> fetch (MYSQLI_BOTH)); { \t session_start(); \t \t $ _SESSION ["BenutzerID"] = $ num_rows ['UserID']; \t \t \t Kopfzeile ('Ort: Account.php'); \t \t} \t} > jetzt komme ich nicht definierte Methode MySQLi_Result Aufruf :: fetch() in –

+0

Vielen Dank allen, eine neue Art von Fehler jetzt Fatal error bekommen: Call to undefined Methode MySQLi_Result :: fetch() in C: \ wamp \ www \ ...... in Zeile 12 –

Verwandte Themen