Session & Header

Dieses Thema im Forum "Webmaster Hilfe / Programmierer Forum" wurde erstellt von Serial, 05.06.2007.

  1. Serial

    Serial Erfahrener Benutzer

    Dabei seit:
    29.06.2006
    Beiträge:
    277
    Zustimmungen:
    0
    hallo, mein heutiges problem liegt bei ner header fehlermeldung
    Code:
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent....
    
    ich wollte nen login machen, ohne dafür extra die die .php Seite zu wechseln, bzw das der passwortgeschützte bereich trotzdem auf index.php liegt, z.b. auf index.php?show=passwortgeschützt
    bei mir würde das dann in etwa so aussehen
    PHP:
    if ($_GET['show'] == 'news') {
        echo(
    "news");
    }
    if (
    $_GET['show'] == 'sda') {
        echo(
    "dsf");
    }
    if (
    $_GET['show'] == 'bla') {
        echo(
    "bla");
    }
    if (
    $_GET['show'] == 'passwortgeschützt') {
        
    session_start();
        if(!isset(
    $_SESSION['username'])){
            echo(
    "<center>[b]Bitte erst einloggen![/b]\n
    <div class=login>
                     <form method=post action=login.php>
                     <input type=text name=name value=Name >

                     <input type=password name=password value=Passwort>

                     <input type=submit value=Login>
                     </form>
                     </center></div>"
    );
       
       }else {
         echo(
    "Passwortgeschützter-Bereich"); 
        }
    }
    Bei index.php?show=passwortgeschützt kommt dann immer die Fehlermeldung die oben schon genannt wurde, vonwegen header is schon weg... Wenn ich anstatt index.php?show=passwortgeschützt z.b. passwortgeschützt.php nehme dann gehts, weil da der header halt noch nich weg is... ich nehme ma an, das liegt daran, weil das in ner if-abfrage is.... gibts dazu irgentne lösung, dass das auch da funktioniert?
     
  2. AdMan

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. #2 Blaxxun, 05.06.2007
    Blaxxun

    Blaxxun aka Noisy

    Dabei seit:
    06.11.2005
    Beiträge:
    6.171
    Zustimmungen:
    0
    Du kannst nicht mitten in einem Script eine Session starten

    Eine Session kann nur gestartet werden, wenn noch nichts an den Browser gesendet wurde, also auch vor der header() Funktion.
     
  4. Nico

    Nico Ehemaliges Teammitglied

    Dabei seit:
    28.10.2005
    Beiträge:
    6.675
    Zustimmungen:
    0
    Dann leite index.php?show=passwortgeschützt auf ne andere PHP Datei weiter und mach das session da.
     
  5. Serial

    Serial Erfahrener Benutzer

    Dabei seit:
    29.06.2006
    Beiträge:
    277
    Zustimmungen:
    0
    meinst du jetzt via include, sprich:
    PHP:
    if ($_GET['show'] == 'passwortgeschützt') {
        include(
    "passwortgeschützt.php"); //Session wird dann in der Datei gestartet
    }
    oder wie?
     
  6. #5 Blaxxun, 05.06.2007
    Blaxxun

    Blaxxun aka Noisy

    Dabei seit:
    06.11.2005
    Beiträge:
    6.171
    Zustimmungen:
    0
    include funktioniert logischerweise auch nicht.

    Ich würde es bzw. mache es immer wie folgt:
    - Session starten
    - Prüfen ob eingeloggt
    -> Nein -> Session zerstörne
    -> Ja -> Passwort und die ID prüfen ob beides zusammen passt

    geschützter Inhalt guckst du eben ob die session user ID gesetzt ist.
    Beim einloggen kannst du die Session ja immer noch "beschreiben" auch wenn sie am Anfang gestartet wurde ;)


    edit// Wenn du möchtest schreib ich dir ein kurzes Codebeispiel
     
  7. Serial

    Serial Erfahrener Benutzer

    Dabei seit:
    29.06.2006
    Beiträge:
    277
    Zustimmungen:
    0
    ja wäre glaub ich ganz hilfreich.... weil im mom leuchtet es mir noch nich so ganz ein, wie ich das anstellen müsste... danke ;)
     
  8. #7 Blaxxun, 05.06.2007
    Blaxxun

    Blaxxun aka Noisy

    Dabei seit:
    06.11.2005
    Beiträge:
    6.171
    Zustimmungen:
    0
    Ok, hier mal ein Beispiel: (ungetestet einfach mal schnell geschrieben)
    Der Einfachheit halber prüfen ich hier nur mal ob das Passwort richtig ist.
    PHP:
      
    session_start
    ();
    $pw_user "pass"// Passwort, dass der User angegeben hat
    $pw_correct "pass"// richtiges Passwort 

    if($pw_user == $pw_correct) { $_SESSION['login'] = 'ok'; } // Also wir speicher in der Session das Passwort ist richtig

    if(isset($_SESSION['login']) AND $_SESSION['login'] == 'ok') {
    echo 
    '<div>Der geschütze Bereich, das siehst du nur, wenn dein Passwort richtig ist</div>'
    } else {
    echo 
    '<div>Der Bereich ist nur für Eingeweihte bestimmt, die das Passwort kennen</div>'; }
      
      
    So könnte deine index Datei aussehen (vereinfacht). Dann kannst du ja per GET navigieren und includieren und jedes mal wird am Anfang dann geguckt ob das Passwort mit dem Passwort übereinstimmt.
     
  9. Serial

    Serial Erfahrener Benutzer

    Dabei seit:
    29.06.2006
    Beiträge:
    277
    Zustimmungen:
    0
    gestern bin ich wieder auf das thema gestoßen bzw wa an dem teil meines script angelangt,(wa zwischendurch etwas faul und hatte keine lust mehr, deswegen schreibe ich erst jetzt wieder^^) wo ich das braucht und habs auch erfolgreich eingebaut... nur jetzt möchte ich mein Login-Formular, was rechts in der mitte auf meiner webseite dauerhaft plaziert ist, durch etwas wie "Willkommen $username" ersetzen... hat auch eigtl. geklappt,:
    PHP:
    if(isset($_SESSION['login']) AND $_SESSION['login'] == 'ok') {
        echo(
    "<div class=log>Willkommen $user!</div>");
    }else {    
        echo(
    "<form method=post action=$PHP_SELF>

              <input type=text name=username value=Name onFocus=\"if(this.value==this.defaultValue){this.value='';}\" onBlur=\"if(this.value==''){this.value=this.defaultValue;}\">

              <input type=password name=password value=Passwort onFocus=\"if(this.value==this.defaultValue){this.value='';}\" onBlur=\"if(this.value==''){this.value=this.defaultValue;}\">

              <input type=submit value=Login>
              </form>"
    );
    }
    nur wird die gespeicherte variable von meinem formular nur so lange gespeichert, wie ich auch auf der seite bleibe, wo man sich eingeloggt habe-.-... sprich wenn ich mich auf index.php?show=bla dazu entschlossen habe, mich einzuloggen und dann nach dem einloggen aufm index.php?show=yeah wechsel dann ist die variable $user nicht mehr gespeichert und der name hinter Willkommen verschwindet :/...
     
  10. AdMan

    Es ist generell erstmal empfehlenswert alle ggf. veralteten oder fehlerhaften Treiber zu scannen und auf neue zu aktualisieren. Hier kannst du einen Treiber-Scanner downloaden. Das erspart oftmals viel Ärger und hilft gegen diverse Probleme.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  11. #9 Blaxxun, 19.06.2007
    Blaxxun

    Blaxxun aka Noisy

    Dabei seit:
    06.11.2005
    Beiträge:
    6.171
    Zustimmungen:
    0
    Du musst natürlich die Daten in das Session Array übertragen
     
  12. Serial

    Serial Erfahrener Benutzer

    Dabei seit:
    29.06.2006
    Beiträge:
    277
    Zustimmungen:
    0
    danke! das stichwort hab ich gesucht ;)... hatte bei meinen suchaktionen kein glück, weil ich nich genau wusste wonach ich suchen sollte und hab nur irgentwas mit cokies gefunden, aber jetzt mit der Sesseion array funktioniert es ;)
     
Thema:

Session & Header

Die Seite wird geladen...

Session & Header - Ähnliche Themen

  1. Head-Set blockiert Internet?

    Head-Set blockiert Internet?: Hallo Leute, ich habe ein Asus Wireless Head-Set und habe damit ein Problem. Sobald ich mein Head-Set einstecke ( USB) geht nach wenigen...
  2. Session speichern ohne IF

    Session speichern ohne IF: Guten Abend zusammen, gibt es eine Möglichkeit eine Session zu speichern ohne If? Mit freundlichen Grüßen hume
  3. TCP Sessions werden unterbrochen

    TCP Sessions werden unterbrochen: Hallo zusammen, ich habe seit einiger Zeit ein Problem mit meinem Internetanschluss (Alice DSL). Das ganze äußert sich darin, dass ich bei...
  4. Audio- Header

    Audio- Header: Moin! Ich habe mir ein neues Gehäuse gekauft. Den Audioheader habe ich vorschriftsmässig am Board eingesteckt. Trotzdem wird das Frontmicro weder...
  5. headste Probleme und Sound Systemsteuerung funktioniert nicht

    headste Probleme und Sound Systemsteuerung funktioniert nicht: Hallo zusammen ich hoffe das hier ist im Richtigen Bereich ich hab schon das Halbe web nach meinem Problem abgesucht aber keine Lösung gefunden...