mysql_num_rows sowie header problem.

Hätte ja auch mal meinen Kopf benützen können :D

Nun sind wir wieder in etwa gleich weit wie auf Seite 1:


Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampplite\htdocs\login.php on line 8
 
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampplite\htdocs\login.php on line 8

Die Fehlermeldung besagt doch, dass Parameter 1 eine mysqli-Ressource sein soll, du übergibst aber erst einen String (nämlich dein Query), und danach die Ressource...

Da hilft ein Blick in die Doku weiter:
mixed mysqli_query ( mysqli $link , string $query [, int $resultmode ] )
Erst Ressource, dann Query-String, dann klappts auch mit dem Nachbarn - äh - der Datenbank...
 
PHP:
<?php 
	ini_set('session.gc_maxlifetime', 3600);
	ini_set('session.gc_divisor', 1);
    session_start (); 
    $db = @new mysqli('localhost', 'admin', '*****', '***1'); 
    if (mysqli_connect_errno()) { 
		unset ($_SESSION);
        die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')'); 
    } 
    $daten = mysqli_query($db, "SELECT ID, Username, Password FROM `user`   
        WHERE (Username = '".$_REQUEST["Username"]."') AND (Password = '".$_REQUEST["Password"]."')");    
    if ($daten != "") { 
		$_SESSION['eingeloggt'] == True ;
		echo "Herzlichen Glückwunsch Sie sind eingeloggt";
	}else{
		echo "Upps da ist was schief gegangen" ;
		unset ($_SESSION);
	}
?>

Egal was für eine Eingabe ich tätige es wird immer:

Herzlichen Glückwunsch Sie sind eingeloggt, ausgegeben.

Dies dürfte doch aber gar nicht so sein, da wenn ein falsches Password bzw ein unbekannter Username eingegeben wird logischerweise "$daten = "" " ist und somit das Script direkt zu:
PHP:
}else{
		echo "Upps da ist was schief gegangen" ;
		unset ($_SESSION);
	}
springt.
 
Du hast vergessen, das Queryresult auszuwerten. Was soll denn da für ein String in $daten drin sein? In Wirklichkeit ist dort im Erfolgsfall ein MySQL-Result-Objekt drin, und im Fehlerfall ein Boolean-Wert FALSE.
Nachzulesen hier: https://de.php.net/manual/en/mysqli.query.php

Du solltest generell nachschauen, was die Funktionen machen, wenn sie nicht so funktionieren, wie du es erwartest.
Lösung in diesem Fall:
ersetze
PHP:
    if ($daten != "") {

mit
PHP:
    if ($daten == false) {

Grüße
BAERnado
 
Danke für die erklärung, nichts desto trotz erscheint immernoch bei jeder Eingabe(egal ob eine Eingabe oder beide Eingaben falsch) die Ausgabe:

Herzlichen Glückwunsch Sie sind eingeloggt

PHP:
if ($daten == false) { 
		unset ($_SESSION);
		echo "Upps da ist was schief gegangen" ;
	}else{
		$_SESSION['eingeloggt'] == True ;
		echo "Herzlichen Glückwunsch Sie sind eingeloggt";
		
	}
 
Lass dir doch mittels

PHP:
var_dump($daten);

mal ausgeben, was deine Variable "$daten" enthält, vielleicht bringt dich das auf die Spur...
 
PHP:
    $daten = mysqli_query($db, "SELECT ID, Username, Password FROM `user`    
        WHERE (Username = '".$_REQUEST["Username"]."') AND (Password = '".$_REQUEST["Password"]."')");     
    if ($daten != "") {

???

$daten enthält demnach nur die Resource deiner Query, aber keinen Datensatz.

PHP:
...
    $result = mysqli_query($db, "SELECT ID, Username, Password FROM `user`    
        WHERE (Username = '".$_REQUEST["Username"]."') AND (Password = '".$_REQUEST["Password"]."')");     
    $daten = mysqli_fetch_assoc($result); // ODER mysqli_num_rows($result) ODER mysqli_fetch_row($query);
    if (!$daten) {  
        unset ($_SESSION); 
        echo "Upps da ist was schief gegangen" ; 
    }else{ 
        $_SESSION['eingeloggt'] == True ; 
        echo "Herzlichen Glückwunsch Sie sind eingeloggt"; 
    }
...
 
Die Kontrolle

PHP:
if($daten == false)

sorgt nur dafür, zu schauen, ob der Query korrekt bearbeitet werden konnte. Im Else-Zweig muss noch kontrolliert werden, ob ein Datensatz vorhanden ist. Dies kannst du nun machen, indem du schaust, wieviele Datensätze vorhanden sind. Bei größer 0 -> Erfolg.