Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Das übliche Spiel -Cannot modify header information - headers already sent by-

Mitglied: Mitchell

Mitchell (Level 2) - Jetzt verbinden

08.01.2012 um 11:37 Uhr, 3283 Aufrufe, 8 Kommentare

Hi,

ich hänge nun seit Stunden an diesem Fehler und komme auf keinen grünen Zweig. Vorab möchte ich aber noch dazusagen, dass auf dem XAMPP alles wunderbar funktioniert, auf dem realen Server...naja, sehts euch an:

Ich habe hier ein Login-Script und ein Logout-Skript, beide bereiten mir Probleme. Lassen wir also erstmal Code sprechen:

01.
// LogIn mit der nötigen Abfrage (davor kommen noch welche, sind aber hier irrelevant) 
02.
 
03.
if (strtolower($name) == strtolower($row['user']) && $passwort == $row['passwort']) 
04.
05.
$_SESSION['user'] = $row['user']; 
06.
header ('Location: http://'.$_SERVER['SERVER_NAME'].'/index.php'); 
07.
}
Führe ich das Skript aus, bin ich auch angemeldet, erhalte aber vorher den Fehler "Cannot modify header information - headers already sent by..."

Das würde ich sogar noch einsehen, da zuvor wirklich eine HTML-Ausgabe folgt und ich die Funktion dann erst einbinde. Später komme ich dann noch mit dem "wie mach ich das", aber lassen wir es jetzt erstmal bei dem "wieso sagt mir XAMPP sowas nicht"? Der meckert ja auch sonst überall rum mit den Notice-Meldungen, die eingeschaltet sind

Nun der nächste Code, bei dem ich nun wirklich verzweifle...weil ich nicht weiß, was der Interpreter von mir will:

01.
function logout() 
02.
03.
if (isset($_SESSION['user'])) 
04.
05.
$_SESSION = array(); 
06.
if (isset($_COOKIE[session_name()])) 
07.
08.
setcookie(session_name(), '', time()-42000, '/').session_destroy(); 
09.
10.
echo "Erfolgreich abgemeldet"
11.
} else
12.
echo "Du bist nicht angmeldet"
13.
14.
}
selbe Meldung wie oben. Auch diese Funktion bette ich ein, also vorher eine HTML-Ausgabe. ABER: Warum die Header Meldung? Ich modifiziere hier doch gar nichts. Jediglich "session_start();" wird vor der HTML-Ausgabe aufgerufen.

Ich bin übrigens abgemeldet, aber so ein Warning auf der Webseite ist ja auch hässlich :P

Kann mir jemand sagen, wo mein Denkfehler liegt? Vielleicht werde ich langsam auch einfach zu müde


Mfg
Mitchell
Mitglied: nxclass
08.01.2012 um 13:54 Uhr
Warum die Header Meldung? Ich modifiziere hier doch gar nichts
nein - Aber sobald Du ein echo machst, "modifiziert" (sendet) dein Server die Header Informationen für dich.

01.
/** 
02.
 * @return bool 
03.
 */ 
04.
function logout() 
05.
06.
  if (isset($_SESSION['user'])) { 
07.
    $_SESSION = array(); 
08.
    if (isset($_COOKIE[session_name()])) { 
09.
      setcookie(session_name(), '', time()-42000, '/').session_destroy(); 
10.
11.
    return true; 
12.
13.
  return false; 
14.
}
Bitte warten ..
Mitglied: dog
08.01.2012 um 16:17 Uhr
"wieso sagt mir XAMPP sowas nicht"?

http://www.php.net/manual/de/intro.outcontrol.php


Übrigens ist alles außerhalb von PHP-Blöcken (Leerzeilen etc.) auch eine "Ausgabe".
Bitte warten ..
Mitglied: Mitchell
08.01.2012 um 21:29 Uhr
@nxclass: Merci, ich dachte, nur die Session- und Headerfunktionen würden dies explizit tun.
Deine Variante habe ich aber vorher auch schon probiert, funktioniert natürlich, allerdings gibt es dann keine Ausgabe. Habs dann so probiert:

01.
function logout()  
02.
{  
03.
  if (isset($_SESSION['user'])) {  
04.
    $_SESSION = array();  
05.
    if (isset($_COOKIE[session_name()])) {  
06.
      setcookie(session_name(), '', time()-42000, '/').session_destroy();  
07.
    $true = echo "abgemeldet";  
08.
   } else
09.
   $false = echo "nicht abgemeldet"
10.
   }  
11.
12.
}
um die Variable dann in einem <div> ausgeben zu lassen. Allerdings bekomme ich immer nur den Wert der Variable $true. Aber gut, wird das kleinste Problem sein, wenn man mal wieder einen klaren Kopf hat

@dog: Dass alles außerhalb eine Ausgabe in dem Sinne ist, weiß ich...aber was soll mir das Manual sagen?

Mfg
Mitchell
Bitte warten ..
Mitglied: dog
08.01.2012 um 23:53 Uhr
Hättest du dir das Kapitel im Handbuch mal durchgelesen, dann hättest du herausgefunden das XAMPP die output_buffering = On Direktive benutzt, und somit zuerst nur Header ausgibt und erst wenn der Parser völlig durchgelaufen ist den Content der Seite.
Auf dem Webserver wiederum ist das deaktiviert und der sendet darum Header und Content gemischt, so schnell wie eben möglich - und das ist eben per HTTP-Spezifikation nicht möglich.

Bitte warten ..
Mitglied: Mitchell
09.01.2012 um 06:49 Uhr
Naja, da du den Link gepostet hast, dachte ich, du zielst auch nur auf die Ausgabeoptionen ab
Aber gut, hab mir das Teil nun mal ganz durchgelesen...dort steht, dass XAMPP output_buffering = OFF benutzt und so ist es bei mir auch eingestellt.

Mfg
Mitchell

EDIT: Schau mal einer an, jetzt spuckt XAMPP die Meldung aus. Was war der Grund? Die php.ini war unten komplett auskommentiert, frag mich bitte nicht, warum.
Bitte warten ..
Mitglied: Mitchell
09.01.2012 um 08:04 Uhr
so, danke nochmal für die Hinweise. Ich habs jetzt folgendermaßen gelöst:

01.
ob_start() 
02.
// Die HTML-Ausgabe 
03.
logout() 
04.
// restliche HTML-Ausgabe 
05.
ob_end_flush();
dem Logout noch was hinzugefügt:

01.
function logout() 
02.
03.
	if (isset($_SESSION['user'])) 
04.
05.
	$_SESSION = array(); 
06.
		if (isset($_COOKIE[session_name()])) 
07.
08.
			setcookie(session_name(), '', time()-42000, '/').session_destroy(); 
09.
10.
	echo "Erfolgreich abgemeldet"; 
11.
	$true = ob_get_contents(); 
12.
	} else { 
13.
	echo "Du bist nicht angmeldet"; 
14.
	$false = ob_get_contents(); 
15.
16.
}
wenn jemandem eine bessere Lösung einfällt...ich bin für alles offen

Mfg
Mitchell

PS: den LogIn erwähnen wir nicht mehr ^^
Bitte warten ..
Mitglied: nxclass
09.01.2012 um 08:42 Uhr
$true = echo "abgemeldet";
$false = echo "nicht abgemeldet";
... was'n das für ein finsterer Hack ?

01.
$true = "abgemeldet"; 
02.
$false = "nicht abgemeldet";
... so sieht das schon besser aus - und deine HTML Ausgabe gehört in den Viewer nicht in deine logout() (Controller)
Bitte warten ..
Mitglied: Mitchell
09.01.2012 um 10:51 Uhr
Zitat von nxclass:
> $true = echo "abgemeldet";
> $false = echo "nicht abgemeldet";
... was'n das für ein finsterer Hack ?

da waren die Finger schneller, als Copy & Paste. Das "echo" hatte ich natürlich nicht drin

Mfg
Mitchell
Bitte warten ..
Ähnliche Inhalte
E-Mail

Mail TLS und FPS Verschlüsselung aktiv aber im Header keine Information

Frage von mexxE-Mail2 Kommentare

Hallo, ich habe an zwei mir zur Verfügung stehenden Postfix Servern, unterschiedliche Domains und feste IPs, die TLS Transportverschlüsselung ...

Entwicklung

Paradox Fehlermeldung - Record already locked by thes session

gelöst Frage von imebroEntwicklung4 Kommentare

Hallo, wir nutzen ein Programm zur Erfassung von Anträgen. Dieses wurde in Delphi (paradox) geschrieben. Bei der Eingabe innerhalb ...

Exchange Server

Ungültiger header

Frage von HeinrichMExchange Server2 Kommentare

Hallo zusammen, hier auf einem SBS 2011 gibt es von Zeit zu Zeit Probleme mit dem POP Abruf vom ...

Outlook & Mail

Kann man teile des E-Mails Headers ausblenden?

Frage von AndreasOCOutlook & Mail2 Kommentare

Hallo zusammen, wir haben ein Programm welches über Outlook Mails versenden kann. Leider haben wir da das Problem, dass ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 StundenGoogle Android

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 3 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 6 StundenMicrosoft2 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 1 TagWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server36 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing15 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

CPU, RAM, Mainboards
32 gb RAM zu wenig?
Frage von pcguyCPU, RAM, Mainboards13 Kommentare

Hallo zusammen, mein PC verfügt über 32GB Ram. Nun kriege ich bei grossen Dateien im Illustrator die Fehlermeldung das ...