Loginsystem: Problem mit Tutorial!

UnoDosTres

Erfahrenes Mitglied
Hallo,
ich beziehe mich hier auf das Tutorial:
http://www.tutorials.de/content/499-php-mysql-login-system-mit-sessions.html

Ich habe diese Tut. durchgearbeitet und einige Dateien erstellt.
Aber jetzt kommt folgender Fehler:

Code:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/kd111/xxxxxxxxxx/login.php on line 36

Warning: Cannot modify header information - headers already sent by (output started at /home/kd111/xxxxxxxxxxxxxx/login.php:16) in /home/kd93999/xxxxxxxx/login.php on line 51

Mein code:
PHP:
<?php
	  include ("config.php");
	  $user = $HTTP_POST_VARS["benutzer"];
	  $pass = $HTTP_POST_VARS["passwd"];
	  $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Keine Verbindung möglich!");
      mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht oeffnen.");
	  
		  $sql = "SELECT ". 
		"id, username, nachname, vorname ". 
	  "FROM ". 
		"benutzer ". 
	  "WHERE ". 
		"(username like '".$_REQUEST["benutzer"]."') AND ". 
		"(passwort = '".$_REQUEST["pwd"]."')"; 
		$result = mysql_query ($sql); 

if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["id"]; 
  $_SESSION["user_nickname"] = $data["username"]; 
  $_SESSION["user_nachname"] = $data["nachname"]; 
  $_SESSION["user_vorname"] = $data["vorname"]; 

  header ("Location: intern.php"); 
} 
else 
{ 
  header ("Location: login.php?fehler=1"); 
} 

	  ?>

Kann mir jemand einen Tipp geben verstehe nicht was da falsch sein soll. Hab es ja so gemacht wie im Tut beschrieben.

Zeile 36 -> if (mysql_num_rows ($result) > 0)

Zeile 51 -> header ("Location: login.php?fehler=1");
 
Zuletzt bearbeitet von einem Moderator:
Hallo.

Also zu Problem in der Zeile 51 :

mach mal header ("login.php?fehler=1");
oder eventl. header("login.php");

dan müsste es gehen...
zu Fehler in der Zeile 36 schau dir mal DAS HIER an!

mfg. alex
 
Also wenn ich den ersten Fehlercode sehe, bedeutet dies, dass deine SQL-Anweisung einen Syntaxfehler enthält. Deswegen gelingt es Mysql kein Result-Objekt zurückzugeben, was sich auch auf weitere mysql-Funktionen auswirkt. Das mit dem Header kommt nur, weil eben dieser Mysql-Fehler (oder eher Warning) kommt. Man darf vor einem header() nicht ausgeben, was aber mit dieser Fehlermeldung geschieht ;)
 
UnoDosTres hat gesagt.:
Hm...mag sein wegen dem Fehler in Zeile 51.

Aber was ist Falsch an Zeile 36?
Ich konnte keinen Fehler erkennen!

Der Fehler liegt einfach daran, dass es kein gültiges Mysql-Result Objekt gibt. Fakto ist deine SQL-Anfrage falsch. Lasse sie dir mal mit "echo $sql;" ausgeben und dann schauste mal in phpMyAdmin nach. Wirst sehen, dass da ein Fehler kommt.
Durch diesen Fehler kann [phpf]mysql_query[/phpf] kein gültiges Objekt erzeugen. Also Fehlermeldung. Wie soll denn [phpf]mysql_num_rows[/phpf] die Zeilen zählen, wenn keine bestehen ;)
 
Ahso.


Demnach muss das Tutorial hier ja fehlerhaft sein. Weil der Code ist eins zu eins übernommen. :(

Danke, werde mal schauen was ich machen kann.
 
OK. Den Fehler hab ich wegbekommen.

Ketzt kommt aber ein neuer:
Code:
Warning: Cannot modify header information - headers already sent by (output started at /home/kd1111/xxxxxxxxx/login.php:16) in /home/kd1111/xxxxxxx/login.php on line 47

zeile 47 -> header ("Location: intern.php");

Und jetzt?
 
UnoDosTres hat gesagt.:
Demnach muss das Tutorial hier ja fehlerhaft sein. Weil der Code ist eins zu eins übernommen. :(
Die Namen der Felder im SQL-Statement sind bei dir lowercase, im Tutorial jedoch beginnen sie mit einem Großbuchstaben. Fällt dir was auf?

Ausserdem sollte man Tutorials nicht einfach 1:1 übernehmen, da der Lerneffekt dann dahin ist.

Edit: Das meine ich: Du musst uns mit diesen Fragen belästigen, weil du dein Script nicht annährend verstehst. Mein Tipp: Kommentier die Ausgabe des SQL-Statements aus.
 
UnoDosTres hat gesagt.:
OK. Den Fehler hab ich wegbekommen.

Ketzt kommt aber ein neuer:
Code:
Warning: Cannot modify header information - headers already sent by (output started at /home/kd1111/xxxxxxxxx/login.php:16) in /home/kd1111/xxxxxxx/login.php on line 47

zeile 47 -> header ("Location: intern.php");

Und jetzt?


Du scheinst vor diesem Header irgendwas mit echo oder dergleichen auszugeben. Deswegen kommt dieser Fehler. Vor [phpf]header[/phpf] darf nichts an Ausgabe geschehen. Bist du dir sicher, dass davor wirklich nichts ausgegeben wird?
 
Zurück