[PHP] Abmeldeknopf verschwindet nicht

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Z0mbiE, 5. September 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. September 2010
    Abmeldeknopf verschwindet nicht

    Hallo Community,

    Ich bin gerade dabei PHP zu lernen und bastle mir ein kleines Portal. Wenn ich mich einlogge verschwinden die Links "Registrierung und Login" in der Navigation und es erscheint ein "Abmelden" Button.

    Wenn ich diesen betätige dann leitet er mich auch weiter und meldet mich auch ab aber der Button ist immernoch da und erst nach der Aktualisierung kommen wieder die Links "Login & Registrieren"

    Was ich möchte aber nicht hinbekomme ist das sobald ich drücke der Abmeldeknopf auch verschwindet.

    Mit header kann ich leider ja nicht arbeiten weil ich ausgaben vorher habe von daher weiß ich nun nicht weiter und würd mich über Hilfe freuen.

    Hier ein Ausschnitt des Quellcodes
    PHP:
    <? php
    If (empty( $_SESSION [ "name" ]))
    {
      echo 
    '<a href="../index.php?klick=7">Registrierung</a>' ;   //Ist man nicht eingeloggt sieht man den Registierungs-Button
    }
    ?>
              </li>
                        <li>
    <?php
    If (empty( $_SESSION [ "name" ]))
    {
      echo 
    '<a href="../index.php?klick=8">Login</a>' ;           //Ist man nicht eingeloggt sieht man den Login-Button
    }
    ?>
              </li>

    <?php
    If (!empty( $_SESSION [ "name" ]))
    {
    echo 
    '<form action="../index.php?klick=8" method=POST>' ;
    echo 
    "<input type=submit name=senden value=Abmelden />" ;     //Ist man eingeloggt sieht man nur noch den Abmelde-Button
    echo  "</form>" ;
    }
    if(
    $_POST [ "senden" ])
      {
        
    session_destroy ();
      }
    ?>
     
  2. 5. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht [/ b ]

    Setz  "session_destroy"  an den Anfang deines Scriptes dann werden  die  abfragen danach korrekt ausgeführt .
     
  3. 5. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht [/ b ]

    Dann hab ich doch aber keine Session und das ganze Ding funktioniert nicht mehr wie es soll ?
     
  4. 5. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht [/ b ]

    Das ganze muss natürlich in eine Abfrage gepackt werden  die  prüft ob der Benutzer sich Abmelden will !
     
  5. 5. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht[/b]

    Anstatt mit empty() zu arbeiten solltest du mit isset() arbeiten..
    Denn dich interessiert ja nur, ob ein Wert gesetzt ist und nicht ob er leer ist..
    Mag sein, dass der Fehler daher kommt..
    Kommt drauf an, ob der Abmeldeknopf nur nach dem Ausloggen da ist oder immer...

    Wenn er nur nachm Ausloggen da ist, dann musste wie Nanobyte schon sagte das session_destroy an den Anfang setzen..

    [PHP]
    <?php

    if(isset( $_POST [ "senden" ]))
      {
        
    session_destroy ();
     } 

    //.. ganzer Rest
    ?>
    Außerdem solltest du darauf achten, dass du die Werte von HTML-Attributen in "" setzt..
    Sprich:
    HTML:
    <input name="senden" value="Bla" />
    MfG
     
  6. 5. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht[/b]

    Erstens danke für den Tip mit den ""

    Ich hab also jetzt rumprobiert aber muss leider sagen ich bekomme das nicht hin. Egal wie ich diese 3 Links verpacke der abmeldenknopf geht immer erst weg wenn ich entweder 2 mal drücke oder einmal und aktualisiere.

    Ich zeig euch nochmal den Code der ganzen Seite vielleicht könnt ihr spezieller werden ich steh total auf dem Schlauch.

    (Sorry, ich mache das erst 2 Wochen mit PHP)

    [PHP]<!--
    Der Login und Regisrierungslink wird nur angezeigt wenn ein Besucher 
    nicht eingeloggt ist. Sobald man sich einloggt verschwinden diese Links
    und stattdessen erscheint ein Abmelde-Button.
    -->
    <?php
    @ session_start ();
    ?>
    <body>
        <div id="wrapper">
            <div id="header">
            </div>
            <div id="ia"><div id="navigation">
                <ul>
                    <ul>
                        <li>
              
                         <li>
    <?php
    If (empty( $_SESSION [ "name" ]))
    {
      echo 
    '<a href="../index.php?klick=7">Registrierung</a>' ;   //Ist man nicht eingeloggt sieht man den Registierungs-Button
    }
    ?>
              </li>
                        <li>
    <?php
    If (empty( $_SESSION [ "name" ]))
    {
      echo 
    '<a href="../index.php?klick=8">Login</a>' ;           //Ist man nicht eingeloggt sieht man den Login-Button
    }
    ?>
              </li>

    <?php
    If (!empty( $_SESSION [ "name" ]))
    {
    echo 
    '<form action="../index.php?klick=8" method=POST>' ;
    echo 
    "<input type=submit name=senden value=Abmelden />" ;     //Ist man eingeloggt sieht man nur noch den Abmelde-Button
    echo  "</form>" ;
    }
    if(
    $_POST [ "senden" ])
      {
        
    session_destroy ();
      }
    ?>
              <br />
              <br />
                        <li><a href="../index.php?klick=1">xx</a></li>
                         <li><a href="../index.php?klick=3">xx</a></li>
                         <li><a href="../index.php?klick=4">xx</a></li>
                         <li><a href="../index.php?klick=5">xx</a></li>
              <br />
                        <li><a href="../index.php?klick=A">xx</a></li>
              <br />
              <br />
              <br />
                </ul>
                
            </div></div
     
  7. 5. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht[/b]

    du zerstörst die session an der falschen stelle, du müsstest f5 drücken um die abmeldung wirklich zu sehen

    [php]
    <?php

    if( $_POST [ "senden" ])
    {
        
    session_destroy ();
    }

    $isLoggedIn  = isset( $_SESSION [ 'name' ]);

    If (
    $isLoggedIn )
    {
      echo 
    '<a href="../index.php?klick=7">Registrierung</a>' ;   //Ist man nicht eingeloggt sieht man den Registierungs-Button
    }
    ?>
              </li>
                        <li>
    <?php
    If ( $isLoggedIn )
    {
      echo 
    '<a href="../index.php?klick=8">Login</a>' ;           //Ist man nicht eingeloggt sieht man den Login-Button
    }
    ?>
              </li>

    <?php
    If (! $isLoggedIn )
    {
    echo 
    '<form action="../index.php?klick=8" method=POST>' ;
    echo 
    "<input type=submit name=senden value=Abmelden />" ;     //Ist man eingeloggt sieht man nur noch den Abmelde-Button
    echo  "</form>" ;
    }

    ?> 
     
  8. 5. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht [/ b ]

    Hallo enel ,

    Erstmal danke , die  Idee ist das man den Abmeldebutton sieht wenn man eingeloggt ist du hast das gerade so gemacht das man den sieht wenn man nicht eingeloggt ist also einfach verkehrt herum das kann man ja einfach beheben aber dennoch muss ich leider sagen funktioniert das auch nicht .

    Drücke ich den Abmeldebutton meldet sich das Script sozusagen ab und  die  Session wird auch beendet aber der Knopf ist noch da bis zur aktualisierung .
     
  9. 5. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht [/ b ]

    lager das einfach mal aus ... 
    logout  = < a href = "../index.php?klick=9" > Logout </ a >

    in der index führst du das session_destroy ()  aus und leitest wieder auf  die  seite weiter  die  angezeigt werden soll
    header
    ( "location:url" );

    somit hast du quasi automatisch ein F5 drin
    könntest auch einfach in deinem jetzigen script nach dem destroy so eine weiterleitung machen . ( aber aufpassen dass du keinen  "header already sent"  fehler produzierst )
     
  10. 5. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht[/b]

    Hier kommt ein Lösungsweg ...

    [PHP]<?php ob_start ();  ?>
    <!--
    Der Login und Regisrierungslink wird nur angezeigt wenn ein Besucher 
    nicht eingeloggt ist. Sobald man sich einloggt verschwinden diese Links
    und stattdessen erscheint ein Abmelde-Button.
    -->
    <?php
    @ session_start ();
    ?> 
    Jetzt kannst du die Funktion header nutzen wo du willst! (Natürlich nicht vor session_start & ob_start)
     
  11. 6. September 2010
    AW:
    PHP:
     Abmeldeknopf verschwindet nicht[/b]

    Ich hab es nun hionbekommen, das war ein sortierungsbefehl:
    So sieht es nun aus und klappt:

    [PHP]<?php
    if (isset( $_POST [ "abmelden" ]))
    {
        
    $_SESSION =array();
        
    session_destroy ();
    }
    If (empty(
    $_SESSION [ "name" ]))
    {
      echo 
    '<a href="../index.php?klick=7">Registrierung</a>' ;   //Ist man nicht eingeloggt sieht man den Registierungs-Button
    }
    ?>
              </li>
                        <li>
    <?php
    If (empty( $_SESSION [ "name" ]))
    {
      echo 
    '<a href="../index.php?klick=8">Login</a>' ;           //Ist man nicht eingeloggt sieht man den Login-Button
    }
    ?>
              </li>

    <?php
    If (!empty( $_SESSION [ "name" ]))
    {
    echo 
    '<form action="../index.php?klick=8" method=POST>' ;
    echo 
    "<input type=submit name=senden value=Abmelden />" ;     //Ist man eingeloggt sieht man den Abmelde-Button
    echo  "<input type=hidden name=abmelden value=1 />" ;
    echo 
    "</form>" ;
    }
    ?>
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.