Probleme mit Header-Ausgabe

staypunk

Grünschnabel
Mein Script soll nach einer Passwortprüfung die Benutzerdaten im Header eines Dokumentes ausgeben.

Folgender Fehler, welchen ich mir nicht erklären kann, wird dabei ausgegeben:
Code:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in F:\Server\htdocs\mond\login\tut2\login.php on line 25

Warning: Cannot modify header information - headers already sent by (output started at F:\Server\htdocs\mond\login\tut2\login.php:25) in F:\Server\htdocs\mond\login\tut2\login.php on line 49

Auf Zeile 25 der login.php steht:
Code:
if (mysql_num_rows ($result) > 0)

Auf Zeile 49-51:
Code:
{
  header ("Location: formular.php?fehler=1");
}

Und so sieht Login.php aus:
Code:
<?php
// Session starten
session_start ();

// Datenbankverbindung aufbauen  
include('../../../mysql.inc.php');
$connectionid = mysql_connect($sql['host'],$sql['uid'],$sql['pwd']);

//$connectionid = mysql_connect($host,$uid,$pwd);
if (!mysql_select_db ($sql['db'], $connectionid))
{
  die ("Keine Verbindung zur Datenbank");  
}  

$sql = "SELECT ".
    "IdNummer, Code, Anrede, Titel, Nachname, Vorname, Zusatz, StrNr, PLZ, Ort, Land, Sprache, Bemerkungen, Mail, ".
  "FROM ".
    "mwadress ".
  "WHERE ".
    "(Mail like '".$_REQUEST["Mail"]."') AND ".
    "(PW = '".md5 ($_REQUEST["PW"])."')";

$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["IdNummer"];
  $_SESSION["user_code"] = $data["Code"];
  $_SESSION["user_anrede"] = $data["Anrede"];
  $_SESSION["user_titel"] = $data["Titel"];
  $_SESSION["user_nachname"] = $data["Nachname"];
  $_SESSION["user_vorname"] = $data["Vorname"];
  $_SESSION["user_zusatz"] = $data["Zusatz"];
  $_SESSION["user_strnr"] = $data["StrNr"];
  $_SESSION["user_plz"] = $data["PLZ"];
  $_SESSION["user_ort"] = $data["Ort"];
  $_SESSION["user_land"] = $data["Land"];
  $_SESSION["user_sprache"] = $data["Sprache"];
  $_SESSION["user_bemerkungen"] = $data["Bemerkungen"];
  $_SESSION["user_mail"] = $data["Mail"];
  header ("Location: intern.php");
}
else
{
  header ("Location: formular.php?fehler=1");
}
?>

Und so die intern.php Datei:
Code:
<?php
include ("checkuser.php");
?>
  
<html>
<head>
  <title>Interne Seite</title>
</head>

<body>  
  
  BenutzerId:
  	<?php
  		echo $_SESSION["user_id"]; 
  	?>
  <br>  
  Code:
  	<?php
  		echo $_SESSION["user_code"]; 
  	?>
  <br>  
  Anrede:
  	<?php
  		echo $_SESSION["user_anrede"];
  	?>
  <br>
  Titel:
  	<?php
  		echo $_SESSION["user_titel"];
  	?>
  	<br>
  	Nachname:
  	<?php
  		echo $_SESSION["user_nachname"];
  	?>
  <br>
  Vorname:
  	<?php
  		echo $_SESSION["user_vorname"];
  	?>
  <br>
  	Zusatz:
  	<?php
  		echo $_SESSION["user_zusatz"];
  	?>
  <br>
  
  	Strasse & Hausnummer:
  	<?php
  		echo $_SESSION["user_strnr"];
  	?>
  <br>
   	Postleitzahl:
  	<?php
  		echo $_SESSION["user_plz"];
  	?>
  	<br>
  	  	Ort:
  	<?php
  		echo $_SESSION["user_ort"];
  	?>
  	<br>
  	  	Land:
  	<?php
  		echo $_SESSION["user_land"];
  	?>
  	<br>
  	  	Sprache:
  	<?php
  		echo $_SESSION["user_sprache"];
  	?>
  	<br>
  		 E-Mail:
  	<?php
  		echo $_SESSION["user_mail"];
  	?>
  	<br>
  	  	Bemerkungen:
  	<?php
  		echo $_SESSION["user_bemerkungen"];
  	?>
  <hr>
  
  <a href="logout.php">Ausloggen</a>
</body>

</html>
 
Hi,

was gibt denn der sql befehl aus? kannst du den mal manuell ausführen und output pasten? ich würde mal die variable result vor der abfrage checken...mit zb
Code:
if (!$result) {
   die('Invalid query: ' . mysql_error());
}

djbundi
 
Folgender SQL-error wird mit deinem Vorschlag ausgegeben:

Code:
Invalid query: You have an error in your SQL syntax; check the manual 
that corresponds to your MySQL server version for the right syntax to 
use near 'FROM mwadress WHERE (Mail like 'fritzli@hotmail.com')
AND (PW = 'dd073bf0a81' at line 1
 
Zuletzt bearbeitet:
ja dann ist der fehler ja klar...das sql statement kannst du so nicht ausführen...

mach mal ein echo von der variable sql und paste sie...wenn du den fehler im sql nicht findest...

djbundi
 
:-) Habe die Fehler im SQL-Statementgefunden.

Der 2. Fehler:
Code:
Warning: Cannot modify header information...

Wurde dadurch verursacht, dass ich im Script ein Echo eingebaut habe um den anderen Fehler aufzuspüren...

Danke
 
Probier mal Folgendes:
PHP:
<?php

	// Session starten
	session_start();

	// Datenbankverbindung aufbauen
	include '../../../mysql.inc.php';
	$connectionid = mysql_connect($sql['host'], $sql['uid'], $sql['pwd']);

	// $connectionid = mysql_connect($host,$uid,$pwd);
	if( !mysql_select_db($sql['db'], $connectionid) ) {
		die('Keine Verbindung zur Datenbank!');
	}

	$query = "
		SELECT
		        `IdNummer`,
		        `Code`,
		        `Anrede`,
		        `Titel`,
		        `Nachname`,
		        `Vorname`,
		        `Zusatz`,
		        `StrNr`,
		        `PLZ`,
		        `Ort`,
		        `Land`,
		        `Sprache`,
		        `Bemerkungen`,
		        `Mail`
		  FROM
		        `mwadress`
		  WHERE
		        `Mail` LIKE '".mysql_real_escape_string($_REQUEST['Mail'])."'
		    AND `PW` = '".md5($_REQUEST['PW'])."'
		";
	$result = mysql_query($query)
		or die('<p><strong>Datenbankabfrage schlug fehl: '.htmlspecialchars(mysql_error()).'</p><pre>'.htmlspecialchars($query).'</pre>');

	if( mysql_num_rows($result) > 0 ) {

		// Benutzerdaten in ein Array auslesen.
		$data = mysql_fetch_array($result);

		// Sessionvariablen erstellen und registrieren
		$_SESSION['user_id']          = $data['IdNummer'];
		$_SESSION['user_code']        = $data['Code'];
		$_SESSION['user_anrede']      = $data['Anrede'];
		$_SESSION['user_titel']       = $data['Titel'];
		$_SESSION['user_nachname']    = $data['Nachname'];
		$_SESSION['user_vorname']     = $data['Vorname'];
		$_SESSION['user_zusatz']      = $data['Zusatz'];
		$_SESSION['user_strnr']       = $data['StrNr'];
		$_SESSION['user_plz']         = $data['PLZ'];
		$_SESSION['user_ort']         = $data['Ort'];
		$_SESSION['user_land']        = $data['Land'];
		$_SESSION['user_sprache']     = $data['Sprache'];
		$_SESSION['user_bemerkungen'] = $data['Bemerkungen'];
		$_SESSION['user_mail']        = $data['Mail'];
		header('Location: intern.php');

	} else {

		header('Location: formular.php?fehler=1');

	}

?>
 
Zurück