Header Problem (Verstehe die anderen Themen nicht) [Anfänger]

cille

Erfahrenes Mitglied
Hi ho,
habe das altbekannte Problem mit dem Header.

Fehler:
PHP:
Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\xampp\htdocs\projekte\Webdesign\truemmel\hp\login2.php:14) in C:\Programme\xampp\htdocs\projekte\Webdesign\truemmel\hp\login2.php on line 96

Hab das Forum durchstöbert, aber verstehe die antowrten nicht so,
ich weis nur 1, und zwar, dass der Code:
PHP:
header ("Location: intern.php");
am anfang stehen muss,
aber ick will ja denn inhalt da haben wo ich ihn haben will.

Was kann ich dagegen Tun?
und wie währe die beste lösung?

Wenn Ihr eine Antwort wisst, bitte in einfachen sätzen oder stichpunkten erklären.

Hier mal der gesamte code:
PHP:
<?php 
// Datenbankverbindung aufbauen 
include('config/config.php');
if (!mysql_select_db ("trummel", $dbconnect)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = "SELECT id, name, nachname, vorname FROM users WHERE (name like '".$_REQUEST["name"]."') AND (pass = '".md5($_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_name"] = $data["name"]; 
  $_SESSION["user_nachname"] = $data["nachname"]; 
  $_SESSION["user_vorname"] = $data["vorname"]; 

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

Würd mich riesig freuen, DANKE!
 
Hi,

wie wäre es damit?
PHP:
die('<meta http-equiv="refresh" content="0; url=http://www.example.com">')
MArc
 
Also wenn die Datei oben keine Freizeilen über dem "<?" hat, dann hast du wohl eine Ausgabe (z.B. debug) in deiner Config stehen...
Es ist wirklich so, dass VOR dem header NICHTS anderes ausgegebenw erden darf.
Wenn du den header erst später in deinem script schicken willst, dann musst du entweder die seite neu laden und das am Anfang des Scripts abfangen oder du musst das ganze Zeug was du vorher rausschreiben würdest in eine Variable schreiben, und die erst unter dem header ausgeben (wenn du den header nicht setzen willst)...
Wenn du den Location-Header ja setzt, dann verlangst du ja einen sofortigen Seitenwechsel von deinem User und in dem Fall bringt dir content auf der Seite ja eh nichts, weil der Benutzer die Seite ja schon verlassen hat...

Eine alternative wären ob_end() und ob_start() (müssten so heißen) - damit kannste verhindern, adss die Ausgabe geschickt wird (also könnteste die Ausgabe bis zum header zurückhalten)
 
Hi ho,
danke für die Antwort,
aber wenn ich das
PHP:
die('<meta http-equiv="refresh" content="0"; url="formular.php?fehler=1">');

anstelle von das:
PHP:
 header ("Location: formular.php?fehler=1");

eingebe, ist ein dauer refresh aktiv.

was könnte das sein?
 
wenn du dich immer selber auf die gleiche seite schickst, dann kommt da auch immer wieder der reload ... wie wärs mit

if (!isste($_REQUEST["fehler"])) {
die(meta...);
}
 
Wie wäre es mit "Output Control"?

PHP:
<?php
ob_start();

#Der ganze Code, der da hin soll.

ob_end_flush();
?>
 
Kann nicht sein. Der "Output buffer" funktioniert eigentlich immer. Zeig mla den Code, wie du ihn eingebaut hast.
 
Hier der Code:
PHP:
<?php 
// Datenbankverbindung aufbauen 
include('config/config.php');
if (!mysql_select_db ("trummel", $dbconnect)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = "SELECT id, name, nachname, vorname FROM users WHERE (name like '".$_REQUEST["name"]."') AND (pass = '".md5($_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_name"] = $data["name"]; 
  $_SESSION["user_nachname"] = $data["nachname"]; 
  $_SESSION["user_vorname"] = $data["vorname"]; 
	
ob_start(); 
  header ("Location: intern.php"); 
ob_end_flush(); 
} 
else 
{ 
ob_start(); 
  header ("Location: formular.php?fehler=1"); 
ob_end_flush(); 
} 
?>

ist das falsch?
 
Geht aus meinem Code denn nicht hervor, wie es richtig eingebaut wird?!

PHP:
<?php  
ob_start();
// Datenbankverbindung aufbauen  
include('config/config.php'); 
if (!mysql_select_db ("trummel", $dbconnect))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  

$sql = "SELECT id, name, nachname, vorname FROM users WHERE (name like '".$_REQUEST["name"]."') AND (pass = '".md5($_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_name"] = $data["name"];  
  $_SESSION["user_nachname"] = $data["nachname"];  
  $_SESSION["user_vorname"] = $data["vorname"];  

  header ("Location: intern.php");  
}  
else  
{  
  header ("Location: formular.php?fehler=1");  
} 
ob_end_flush(); 
?>
 
Zurück