Ankündigung

Einklappen
Keine Ankündigung bisher.

Profilverwaltung (Loginsystem)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Profilverwaltung (Loginsystem)

    Hallo!
    Ich bin zur Zeit dabei eine "Profilverwaltung" einzurichten, in der sich jeder User einloggen und ausloggen kann.
    Mein Problem ist zur Zeit nur, dass das System funktioniert, aber immer 2 oder 3 Fehlermeldungen angezeigt werden und ich diese nicht wegbekomme.

    Hier sind diese:
    Warning: Cannot send session cookie - headers already sent by (output started at /var/www/web0/html/Homepage/TEST/aufbau.php:10) in /var/www/web0/html/Homepage/TEST/logout.php on line 3

    Warning: Cannot send session cache limiter - headers already sent (output started at /var/www/web0/html/Homepage/TEST/aufbau.php:10) in /var/www/web0/html/Homepage/TEST/logout.php on line 3

    Warning: Cannot add header information - headers already sent by (output started at /var/www/web0/html/Homepage/TEST/aufbau.php:10) in /var/www/web0/html/Homepage/TEST/logout.php on line 6
    aufbau.php ist bei mir die Datei, die die Seite (Tabellen) aufbaut.
    Durch die checkLogin.inc.php wird überprüft, ob der User eingeloggt ist.

    Hier sind die beiden Dateien:

    aufbau.php
    PHP-Code:
    <html>
    <head>
           <title>Profil-Verwaltung</title>
    </head>
    <body bgcolor="#FFFF00">
    <table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
        <td></td>
        <td bgcolor="#FFFF00" width="800" height="500">
        <table width="800" height="500">
               <tr><td height="1"><?php include("header.php"?></td></tr>
               <tr><td>
               <table>
                      <tr><td width="150"><?php include("navigation.php"?></td>
                      <td width="600">
                      <?php include("seiten.php"?>
                      </td></tr>
               </table>
               </td></tr>
               <tr><td height="1"><?php include("footer.php"?></td></tr>
        </table>
        </td>
        <td></td>
    </table>
    </body>
    </html>
    header.php, navigation.php, seiten.php und footer.php sind nur die einzelnen Seitenelemente

    checkLogin.inc.php
    PHP-Code:
    <?php
        session_start
    ();

        if( !
    $_SESSION['loggedIn'] ) {
            
    header'Location: ./loginformular.php' );
            exit();
        }
    ?>
    Kann mir jemand weiterhelfen??

  • #2
    Siehe http://faq-phpfriend.de/ch/ch-errors.html
    Die Forensuche hier im board liefert auch dutzendweise Antworten zu "headers already sent"

    Kommentar


    • #3
      ich hab mir jetzt die fehler durchgelesen und da steht, dass ich z.b. jetzt in der checkLogin.inc.php-Datei keine Ausgabe vor den "header()" setzen darf.
      aber wie soll ich sonst überprüfen, ob der user eingeloggt ist (wird aus der session herausgelesen), wenn ich "session_start();" weg mache?

      Kommentar


      • #4
        checkLogin.inc.php direkt am Anfang per include einbinden.

        Gruß
        phpfan

        Kommentar


        • #5
          hab ich schon auf den seiten, auf denen durch die checkLogin.inc.php geprüft wird, ob der user eingeloggt ist.

          PHP-Code:
          <?php
              
          include_once 'checkLogin.inc.php';
          ?>

          <html>
          <head>
             <title>Geheime Seite</title>
          </head>
          <body>
             <font face="arial">
             Hier steht der Text

             

          <a href=index.php?action=logout>Logout</a></p>
             </font>

          </body>
          </html>

          Kommentar


          • #6
            Und wieso setzt du dann nicht einfach ein session_start an den Anfang der Datei, wo die Session-Daten gesetzt werden???

            Gruß
            phpfan

            Kommentar


            • #7
              Das könnte ja in der datei checklogin.inc.php passieren.
              Aber ich sehe da Leerzeilen vor dem ersten <?php .....
              **********************************
              Nein, ich bin nicht die Signatur.
              Ich putze hier nur.
              **********************************

              Kommentar


              • #8
                So... ich hab jetzt alles abgeändert und hab nur noch einen bzw. 2 Fehler.
                Es ist ein Fehler mit 2 Dateiunterschieden.

                Warning: Cannot add header information - headers already sent by (output started at /var/www/web0/html/Homepage/TEST/aufbau.php:13) in /var/www/web0/html/Homepage/TEST/checkLogin.inc.php on line 5

                Warning: Cannot add header information - headers already sent by (output started at /var/www/web0/html/Homepage/TEST/aufbau.php:13) in /var/www/web0/html/Homepage/TEST/logout.php on line 6
                Hier sind noch einmal die jetzigen Dateien:

                Es wird nun eine Leerzeile angezeigt, welche aber eigentlich gar nicht existiert. also einfach wegdenken!

                aufbau.php
                PHP-Code:
                <?
                session_start();
                ?>
                <html>
                <head>
                       <title>Profil-Verwaltung</title>
                </head>
                <body bgcolor="#FFFF00">
                <table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                    <td></td>
                    <td bgcolor="#FFFF00" width="800" height="500">
                    <table width="800" height="500">
                           <tr><td height="1"><? include("header.php")?></td></tr>
                           <tr><td>
                           <table>
                                  <tr><td width="150"><? include("navigation.php")?></td>
                                  <td width="600">
                                  <? include("seiten.php")?>
                                  </td></tr>
                           </table>
                           </td></tr>
                           <tr><td height="1"><? include("footer.php")?></td></tr>
                    </table>
                    </td>
                    <td></td>
                </table>
                </body>
                </html>
                logout.php
                PHP-Code:
                <?
                session_start();

                     $_SESSION['loggedIn'] = false;

                     header('Location: index.php?action=login');
                     exit();

                ?>
                checkLogin.inc.php
                PHP-Code:
                <?php
                session_start
                ();

                    if( !
                $_SESSION['loggedIn'] ) {
                        
                header('Location: ./loginformular.php');
                        exit();
                    }

                ?>

                Kommentar


                • #9
                  Was steht in header.php?
                  **********************************
                  Nein, ich bin nicht die Signatur.
                  Ich putze hier nur.
                  **********************************

                  Kommentar


                  • #10
                    header.php
                    PHP-Code:
                    <center>[img]logo.png[/img]</center
                    Hier wird "nur" das Logo in der Mitte eingebunden.

                    Kommentar


                    • #11
                      in der aufbau.php werden die beiden dateien doch garnet includetr

                      und es bleibt dabei, du musst die header zuerst senden oder die ausgabe puffern:
                      http://php.speedbone.de/manual/de/function.ob-start.php

                      Kommentar


                      • #12
                        sie werden auch nicht in der aufbau-datei includet.
                        jedoch baut die aufbau.php meine seite auf und in der befindet sich das login-system und die beiden werden über die datei "seiten.php", welche in der aufbau.php includet ist. dargestellt.

                        ich hab doch schon alles gemacht, um die header als erstes zu senden, oder?
                        ich entdecke meinen fehler nicht, wo ich die positionen der ausgaben verändern muss, sodass der header zuerst gesendet wird.

                        Kommentar


                        • #13
                          AAARGH....


                          IMMER, wenn du eine funktion benutzt, die den header verändert, wird geprüft, ob dieser schon gesendet wurde, denn dann kann er ja nicht mehr verändert werden, ist das sooo schwer zu kapieren?
                          Den header verändern vorallem die funktion header selbst, die session funktionen und natürlich die cookie funktionen. Alle diese funktionen müssen benutzt werden (natürlich nur, wenn man sie benutzen wil ), BEVOR der Header gesendet wurde.

                          Der Header wird bei dem allerersten Zeichen, dass ausgegeben wird, gesendet, also auch schon bei einem evtl. leerzeichen vor <?php.

                          Die einzigen beiden möglichkeiten, die du hast, sind entweder sämtliche diese funktionen so zu positionieren, dass sie vor dem header ausgeführt sind, oder du würdest dir endlich map die funktion ob-start zu gute führen....


                          http://php.speedbone.de/manual/de/function.ob-start.php

                          Das alles hätte man sich ersparen können, in dem man googel oder die forensuche benutzt hätte oder sich einfach mal auf den link geklickt hätte, den ich gepostet hatte...


                          Ps.: Ja, richtig erkannt, ich habe gerade schlechte Laune ...

                          Kommentar


                          • #14
                            okay.
                            ich habs hinbekommen.

                            Danke für deine Hilfe

                            Kommentar

                            Lädt...
                            X