Frage: Tutorial Loginsystem -> Cannot modify header information

TimExtreme

Mitglied
Hi,
Ich habe das Problem dass sich keine Internet Explorer benutzer einloggen könne und nun auch alle anderen nichtmehr. Beim login erscheint immer die Nachricht

Warning: Cannot modify header information - headers already sent by (output started at /usr/export/www/hosting/raven1337/login.html:88) in /usr/export/www/hosting/raven1337/login.php on line 60.

Weiß jemand woran das liegen kann.

PS: Habe das Loginsystem allerdings um einiges erweitert.

Hier mal der QT für die login.php

Code:
<?php 
session_start();
$dbuser="raven1337";
$dbpwd="#1230#";
$dbhost="localhost";
$db="raven1337";
$pass = md5($password);
session_start();

// Aufbau der Datenbankverbindung
$connectionid  = mysql_connect ($dbhost, $dbuser, $dbpwd);
if (!mysql_select_db ("$db", $connectionid))
{
  die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT active FROM benutzerdaten WHERE Nickname = '".$_REQUEST["name"]."' LIMIT 1"; 
$result = mysql_query ($sql);
$activecheck = mysql_fetch_array($result);
$active =  $activecheck['active'];

if($active == 1){





$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".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_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"];

$time = time();

$sqltime = "UPDATE benutzerdaten SET timestamp = '$time' WHERE Id ='$_SESSION[user_id]' LIMIT 1 ";
mysql_query ($sqltime);
 
echo "<center><b>Wilkommen $_SESSION[user_nickname]!</b></center>";
 
echo "<meta http-equiv='refresh' content='1; url=index.html'>";

} 
else 
{ 
  header ("Location: index.html"); 
} }else{
echo "Bitte activieren sie zuerst ihren Account";}



?>
 
Vor header() darf keine Ausgabe stattfinden.
Oder Du musst der Output Control arbeiten.

Diese Informationen haettest Du aber auch mit Hilfe der Suche hier finden koennen.
Denn die meisten mit diesem Problem haben die Fehlermeldung "Cannot modify header information" und/oder "headers already sent" im Titel.

Und hier steht's auch: PHP FAQ
Und da steht sogar noch bei: Guckt bitte erst, ob euer Problem hier behandelt wird

Nur mal so nebenbei. ;)
 
Zuletzt bearbeitet:
Habe das jetzt mal bearbeitet und zwar habe ich die weiteerleitung über head()
ersetzt durch
Code:
echo "<meta http-equiv='refresh' content='1; url=index.html'>";

nun kommt die fehlermeldung nicht mehr aber die benutzer sind nach dem login trotzdem nicht angemeldet :confused:
 
Warum hast Du eigentlich 2 mal session_start() im Script stehen?

Okay, das wird jetzt wahrscheinlich nicht helfen Dein Problem zu loesen, aber dennoch ist das irgendwie Unsinn. ;)
 
Ich frag mich gerade wie die index.html feststellen soll ob der User eingeloggt ist. Das ist doch nur eine "dumme" HTML-Datei. Oder arbeitest Du mit Frames und bindest dort PHP-Scripts ein?
Weiterhin frag ich mich auch noch warum Du so viele Daten des Users in der Session speicherst. Du packst da ja alles, vom Familienstammbaum mal abgesehen, rein.
Die ID reicht doch vollkommen. Den Rest kannst Du Dir ja bei Bedarf aus der Datenbank holen.

Ach ja, beim Meta-Refresh musst Du uebrigens nicht unbedingt eine Sekunde warten, Du kannst den auch sofort ausfuehren in dem Du statt einer Sekunde einfach 0 Sekunden als Wartezeit setzt.
Hier gibt es ein Beispiel dazu.
 
Zuletzt bearbeitet:
Die Index weiß nix ob der user eingelogt ist nur die navigation.php entscheidet was angezeigt werden soll inde sie prüft ob in der Session ein Benutzername vorhanden ist. desweiteren wird auf jeder seite überprüft ob der user angemeldet ist ansonsten wird er auf die startseite geleitet
 

Neue Beiträge

Zurück