Seit kurzem kommt dieser php Warning

  • Hallo.
    Ich brauch hilfe bei folgendem php Warning


    Warning: Cannot modify header information - headers already sent by (output started at /users/oreo/www/usercp/profil.php:1) in /users/oreo/www/usercp/checkLogin.inc.php on line 4


    Code:

    PHP
    <?session_start();if( !$_SESSION['loggedIn'] ) {header( 'Location:index.php?status=false' );exit();}?>



    Danke :)

  • Diese Warnung kommt wenn du 2 mal versuchst den Header zu verändern.



    index.php | So funktioniert das

    PHP
    header("xy");


    index.php | So nicht

    PHP
    header("xy");
    header("abc");


    Warum funktioniert das nicht? Der Header darf nur ein mal verändert werden.


    Es muss nicht in der selben Datei stehen sondern kann auch in verschiedenen Dateien sein wenn includes wird.


    Grüße

    ik bin der vito c:


  • Hallo.
    Ich verwende nur einmal den header.


    In meiner login.php, in der ich auch die session[loggedin] auf true setze, arbeite ich so:

    PHP
    if($row->passwort == $passwort) 
    	{ 
    	$_SESSION["username"] = $username; 
    	echo "<meta http-equiv='refresh' content='1; URL=/usercp/profil.php'>";
    	$_SESSION['loggedIn'] = true;
    	} 
    else 
    	{ 
    	echo "<meta http-equiv='refresh' content='1; URL=login.html'>"; 
    	}


    Sonst verwende ich header nur einmal, in der CheckLogin...


    Ich hatte vorhin in meiner profil.php einen Fehler in session_start();
    den habe ich jetzt gefixxt mit einem @ vor dem session.
    Liegt es daran?

  • Probier es mal so:


    PHP
    session_start();if( !isset($_SESSION['loggedIn']) ) {header( 'Location:index.php?status=false' );exit();}?>





    oder weise mal der $_SESSION[loggedIn] ein true oder false zu in dem falle false ^^


  • Anstatt Header Informationen zu nutzen (das geht übrigends wegen dem session_start hier nicht mehr bzw deshalb erfolgt die Warnung mach es einfach über einen meta tag):


    PHP
    <?php
    session_start();
    if( !$_SESSION['loggedIn'] ) {
    echo '<meta http-equiv="refresh" content="0; URL=index.php?status=false">';
    exit();
    }
    ?>


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • Anstatt Header Informationen zu nutzen (das geht übrigends wegen dem session_start hier nicht mehr bzw deshalb erfolgt die Warnung mach es einfach über einen meta tag):


    PHP
    <!--?php
    session_start();
    if( !$_SESSION['loggedIn'] ) {
    echo '';
    exit();
    }
    ?>


    mfg. :thumbup:

    Du musst dabei aber bedenken, dass meta refresh auch wenn da eine 0 steht dennoch länger dauert als Header? zumindest ist es bei mir immer so.


    MfG

  • session_start();
    if( !$_SESSION['loggedIn'] ) {
    echo '';
    exit();
    }
    ?>


    Hallo, danke das klappt.
    Noch eine Frage.
    So sieht mein Anfang von profil.php an:

    PHP
    <?
    session_start(); 
    include_once 'checkLogin.inc.php';
    include("config.php"); //Config.php hinzufügen 
    ?> 
    <!DOCTYPE html>
    <html lang="en">
    	<head>


    Jetzt bekomme ich folgenden Fehler: Cannot send session cache limiter - headers already sent (output started at /users/oreo/www/usercp/profil.php:1) in /users/oreo/www/usercp/profil.php on line 2


    Woran liegt das? :S

  • Dateiname richtig?


    ansonsten probier mal nicht include_once sondern require. Wenn das nicht klappt Kaliber :D

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • u mal in der datei config.php ob du wieder iwie


    ne die config sieht so aus:



  • manchmal zeigt das bei mir wirkung:


    vertausch mal




    PHP
    include("config.php"); //Config.php hinzufügen




    darunter

    PHP
    include("checkLogin.inc.php");



    und bei profil.php hast du ein Ausrufezeicehn ( <!-- ) entfern das mal.


  • Danke aber hat nichts gebracht :D


    Das <!-- hast du beim Zitieren irgendwie rein gebracht :D So habe ich es nicht.
    lg


    //push

    Einmal editiert, zuletzt von Askari ()

  • Du hast irgendwo schonmal ein session_start();... nimm eins der beiden die du hast raus und weg ist der Warning

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Kleiner PHP Grundkurs:


    Wie werden Sessions gespeichert?
    Sie liegen in der Standardkonfiguration als Datein auf dem Server


    Woher weiß der Server welcher Besucher welche Session hat?
    Über einen Session Cookie, den er durch die funktion session_start(); sendet bzw. abfragt.


    Was hat das jetzt mit header zutun?
    session_start(); sendet dabei ebenfalls header ;)


    Da ich grade nur Breadfish erreichen kann, verweise ich dich mal auf die englische PHP Dokumentation zu session_start(); da steht alles drin ;)

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Vielen Dank, was weiss ich alles schon ;)


    Jedoch das Session auch einen Header sendet ist oder wäre mir neu.


    Ich verwende immer Session und mit meinen System (Header-Weiterleitung) habe ich keinerlei Probleme trotz Session.
    Nur wenn ich Schon Header in Form von header() oder HTML gesendet habe.

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.