Cookie laden (Session) wenn ich im html-Head eine CSS-Datei lade
barzelona
- php
Hallo, ich bin noch neu in php und habe ein Problem.
Ich bin im moment an einem LoginSystem dran und wollte das Design durch eine CSS-Datei etwas aufpeppen. Da ich keine Ahnung hab wie man ne CSS-Datei per php-Funktion lädt, hab ich vor dem php-Code ein Stück HTML-script. Das HTML-script ist aussschließlich da um den titel festzulegen und noch wichtiger, die CSS-Datei zu laden. Da ich jetzt aber eine vorhandene Session aufrufe, also ein Cookie lade, bekomm ich eine Fehlermeldung, der Header sei schon geladen. Hier noch die Fehlermeldung:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Programme\xampp\htdocs\Projects\vr\vr_admin.php:2) in C:\Programme\xampp\htdocs\Projects\vr\authentification.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\xampp\htdocs\Projects\vr\vr_admin.php:2) in C:\Programme\xampp\htdocs\Projects\vr\authentification.php on line 11
ich hoffe mir kann wer helfen.
mfg barzelona
Grüße,
1)HTML ist keine Scriptsprache, daher ist der Ausdruck HTML-Script nonsense,
2)Mit cookies hat dein Problem nichts zu tun - Sessions können durch cookies identifiziert werden, müssen aber nicht.
3)Das Problem besteht darin, dass du irgendwas VOR dem session_start ausgegeben hast -
Irgendein HTML-Code
Leerzeile vor <?php
UTF-8 mit BOM - >speichere die Datei als utf-8 OHNE bom.
dein Vorhaben ist übrigens etwas seltsam - du kannst mit php zwar kein CSS "laden", aber den CSS mittels echo"" direkt ausgeben oder mithilfe von <link rel="stylesheet" type="text/css" href="$variable"> einbinden.
Du könntest dein Problem noch mal genauer beschreiben, falls jetzt keine Lösung dabei war.
MFG
bleicher
echo $begrüßung;
Da ich keine Ahnung hab wie man ne CSS-Datei per php-Funktion lädt, hab ich vor dem php-Code ein Stück HTML-script. Das HTML-script ist aussschließlich da um den titel festzulegen und noch wichtiger, die CSS-Datei zu laden. Da ich jetzt aber eine vorhandene Session aufrufe, also ein Cookie lade, bekomm ich eine Fehlermeldung, der Header sei schon geladen.
Man kann einen PHP-Bereich mit <?php einleiten und mit ?> beenden. Das kann man genauso gut vor einem HTML-Bereich tun wie mittendrin.
echo "$verabschiedung $name";
Hallöchen,
Hallo, ich bin noch neu in php und habe ein Problem.
Ich bin im moment an einem LoginSystem dran und wollte das Design durch eine CSS-Datei etwas aufpeppen. Da ich keine Ahnung hab wie man ne CSS-Datei per php-Funktion lädt, hab ich vor dem php-Code ein Stück HTML-script. Das HTML-script ist aussschließlich da um den titel festzulegen und noch wichtiger, die CSS-Datei zu laden. Da ich jetzt aber eine vorhandene Session aufrufe, also ein Cookie lade, bekomm ich eine Fehlermeldung, der Header sei schon geladen. Hier noch die Fehlermeldung:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Programme\xampp\htdocs\Projects\vr\vr_admin.php:2) in C:\Programme\xampp\htdocs\Projects\vr\authentification.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\xampp\htdocs\Projects\vr\vr_admin.php:2) in C:\Programme\xampp\htdocs\Projects\vr\authentification.php on line 11
>
> ich hoffe mir kann wer helfen.
>
> mfg barzelona
Ich habe bei sowas in verschiedene Abschnitte unterteilt, und damit nebenbei das Problem mit Cookie / Session vor erster Ausgabe gelöst:
1\. Beginn der Datei mit einem PHP-Bereich, in den die Sache mit Cookie und Session drin steht.
2\. Dann den Beginn der HTML-Datei, z.B. alles bis einschließlich <body>, also auch den kompletten head-Bereich, in den die Einbindung von CSS gehört. Hier hab ich auch eine Variable mit dem per PHP unter Punkt 1 ermittelten Titel zur Ausgabe zur Verfügung.
3\. Jetzt den pro Seite unterschiedlichen PHP-Bereich.
4\. Den Abschluss wieder in HTML.
Die Punkte 1, 2 und 4 hab ich dann ausgelagert, und in die Seiten per include eingebunden. Damit habe ich an einer Stelle zentral den Beginn und das Ende aller Seiten definiert.
MfG
vaudi
Hallo, danke schonmal für eure Antworten.
Ok, dann nenne ich das Problem mal bei Namen. Dazu poste ich euch am besten mal den Code der Datei, die das Problem auslöst:
Hier mein Adminbereich auf den ich nur mit Passwort zugreifen darf:
<title>Virtuelles Räumchen</title>
<style type="text/css" media="screen">
<!--
@import url("style.css");
-->
</style>
</head>
<?php
include "authentification.php";
echo "<br><h>Virtuelles Räumchen Administration</h>";
echo "<div id=\"container\">";
echo "<div id=\"container_head\">";
echo "Administrationsbereich:";
echo "</div>";
echo "<div id=\"box\">";
echo "</div>";
echo "</div>";
?>
d.h. ich fange mit einem HTML-Head an und alles andere spielt sich im php-Bereich ab. Als ergänzung hier noch die authentification.php:
<?php
session_start();
include "config.php";
$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);
if (!isset($_SESSION['authenticated']) || !$_SESSION['authenticated'])
{
header('Location: '.URL_VR.'vr_login.php');
exit;
}
?>
So Probleme machen folgende Zeilen aus der authentification.php:
- session_start();
"Cannot send session cache limiter - headers already sent"
- header('Location: '.URL_VR.'vr_login.php');
"Cannot modify header information - headers already sent by"
d.h. durch die HTML-Head-Deklarierung ist er wohl nicht mehr in der Lage irgendwas daran zu ändern. Wäre es eine möglichkeit den Header in den php-Code per echo einzufügen oder würde ich hier mit dem selben Fehler konfrontiert? Oder gibt es eine andere Möglichkeit per php eine CSS-Datei einzubinden durh irgendeine schon vorhandene Methode, bzw. durch eine ähnliche Zeile wie "header('Location: '.URL_VR.'vr_login.php');", z.B. "header('CSSLocation: '.URL);"?
mfg barzelona
echo $begrüßung;
Ok, dann nenne ich das Problem mal bei Namen. Dazu poste ich euch am besten mal den Code der Datei, die das Problem auslöst:
Das Problem ist doch schon klar. Schreibe statt
<html>
<head>
<usw.>
</head>
<?php
...
?>
den PHP-Teil, der HTTP-Header setzen will (header() und Session-Start), an den Anfang.
<?php
...
?>
<html>
<head>
<usw.>
</head>
echo "$verabschiedung $name";
Hallöchen,
blos den include verlagern:
<?php
include "authentification.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Virtuelles Räumchen</title>
<style type="text/css" media="screen">
<!--
@import url("style.css");
-->
</style>
</head>
<?php
// hier ist der include zu spät dran :(
echo "<br><h>Virtuelles Räumchen Administration</h>";
echo "<div id="container">";
echo "<div id="container_head">";
echo "Administrationsbereich:";
echo "</div>";
echo "<div id="box">";echo "</div>";
echo "</div>";
?>
MfG
vaudi
Hallöchen,
Korrektur bzw. Erweiterung wegen dem header:
<?php
include "authentification.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Virtuelles Räumchen</title>
<style type="text/css" media="screen">
<!--
@import url("style.css");
-->
</style>
<?php echo ($fehler) ? $fehler : '';
</head>
<?php
if ($fehler)
exit;
include "authentification.php";
echo "<br><h>Virtuelles Räumchen Administration</h>";
echo "<div id="container">";
echo "<div id="container_head">";
echo "Administrationsbereich:";
echo "</div>";
echo "<div id="box">";echo "</div>";
echo "</div>";
?>
>
> d.h. ich fange mit einem HTML-Head an und alles andere spielt sich im php-Bereich ab. Als ergänzung hier noch die authentification.php:
>
> ~~~php
> <?php
> session_start();
>
> include "config.php";
>
> $hostname = $_SERVER['HTTP_HOST'];
> $path = dirname($_SERVER['PHP_SELF']);
>
> if (!isset($_SESSION['authenticated']) || !$_SESSION['authenticated'])
> {
$fehler = "header('Location: '.URL_VR.'vr_login.php')\n";
> }
> ?>
>
>
So Probleme machen folgende Zeilen aus der authentification.php:
- session_start();
"Cannot send session cache limiter - headers already sent"
Lösung: Verlagerung include "authentification.php" VOR html-Code
- header('Location: '.URL_VR.'vr_login.php');
"Cannot modify header information - headers already sent by"
Lösung:
1. im Include den Header an eine Variable übergeben
2. im head prüfen, ob Variable definiert ist, wenn ja Inhalt (den header) im head ausgeben
3. im derzeitigen Codeblock als erstes prüfen, ob Variable definiert ist, wenn ja exit.
siehe auch obige Änderungen in deinem geposteten Quelltext
MfG
vaudi