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-

Frage Entwicklung PHP

Mitglied: Mitchell

Mitchell (Level 2) - Jetzt verbinden

08.01.2012 um 11:37 Uhr, 3269 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 ...

HTML
Webdesign Header
Frage von Snowboarder1994HTML3 Kommentare

Hallo, wer könnte mir bitte helfen folgenden Header zu programmieren, verstehe das nicht ganz mit dem wechseln der Bilder?! ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 31 MinutenViren und Trojaner

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 4 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell8 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...