aktualisieren nach logout

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

  • aktualisieren nach logout

    hallo

    ich habe mal wieder nen "kleines" problemchen.
    auf meiner seite gibt es einen bereich der eine anmeldung erfordert.
    das geht auch alles wunder bar. über session überprüfe ich ob der user auch wirklich angemeldet ist (oder so änlich). das auslogen geht auch ABER nun das problem:
    wird zurück geklickt landet man wieder im geschüztem bereich ohne angemeldet zusein (obwoll die session
    geschlossen und gelöscht wurde.
    PHP-Code:
    logout.php

    ob_start 
    (); 
    session_start (); 
    session_unset (); 
    session_destroy (); 
    ob_end_flush (); 
    wenn ich den reload butten klicke komme ich nicht zurück in den geschüzten bereich.
    was kann ich tun damit man nicht zurück in den geschüzten bereich kommt?

    Danke
    Abanta

  • #2
    die Frage ist, wie prüfst du, ob der User eingeloggt ist? nur über die SessionID oder auch mit Überprüfung von DB-Eintrag?

    Kommentar


    • #3
      die user daten überprüfe ich mit mit einer datenbank und schreibe sie dann wenn die es den user mit dem password gibt in sessionvariable. zurüberprüfung ob ein user angemeldet ist über prüfe ich ob die sessionvariable gesetzt ist.

      Kommentar


      • #4
        schreibe vor session_destroy(); mal
        PHP-Code:
        $_SESSION = array(); 
        session_destroy macht das nämlich nicht und wenn du mit $_SESSION arbeitest, solltest du laut manual kein session_unset() verwenden

        wenn da snicht hilft, musst du wohl etwas code (vom prüfen) zeigen
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          naja...
          es geht ja so weit alles auch das auslogen geht wenn ich auf nach logout auf reload klicke.

          von daher denke ich das das problem am zwischen speicher (cache) des besucher liegt und
          ich an der stelle eine aktualisierung machen muss oder verhindern muss das die seiten min cache landen.

          Kommentar


          • #6
            aber das macht php eigentlich schon von sich aus

            poste doch mal deine prüfung und lass dir auf der seite, die "schlecht" ist mal die session-id ausgeben mit echo und den inhalt von $_SESSION mit print_r

            vor dem logout sollte da was anderes stehen als wenn du nach dem logout zu der seite zurück gehst

            btw: du verwendest nicht zufällig opera?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Funktioniert es evtl. wenn du es so machst:

              PHP-Code:
              ob_start (); 
              session_start (); 
              session_unset (); 
              session_destroy (); 
              ob_end_flush ();
              header("location:index.php");
              exit(); 

              Kommentar


              • #8
                und lass dir auf der seite, die "schlecht" ist mal die session-id ausgeben
                nun es gibt auf ab dem logout keine session-id mehr.
                ab und an nehme ich auch opera (habts aber bisher nur mir konqueror probiert).


                login form

                PHP-Code:
                <form method="Post" action="db.php">
                <
                table border="0">
                  <
                tbody>
                    <
                tr>
                      <
                td></td>
                      <
                td> </td>
                    </
                tr>
                    <
                tr>
                      <
                td>Benuzername:</td>
                      <
                td><input type="text" name="txtName">  </td>
                    </
                tr>
                    <
                tr>
                      <
                td>Password:</td>
                      <
                td><input type="password" name="txtPasswd">  </td>
                    </
                tr>
                    <
                tr>
                      <
                td><input type="submit" value="Abschicken">  </td>
                      <
                td><input type="reset" value="Löschen">  </td>
                    </
                tr>
                    <
                tr>
                      <
                td>  </td>
                      <
                td>  </td>
                    </
                tr>
                  </
                tbody>
                </
                table>
                </
                form
                überprüfung in db.php
                PHP-Code:
                <?
                session_start();
                // Sessionvariablen erstellen und registrieren 

                ?>
                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                <html>
                <head>
                  <title></title>
                </head>
                <body>
                  <?
                  $txtbe_name = $HTTP_POST_VARS["txtName"];
                  $txtpasswd = $HTTP_POST_VARS["txtPasswd"];

                  mysql_connect("localhost", "xxx", "xxx")or die
                  ("Keine Verbindung moeglich");

                  mysql_select_db(xxx")or die
                  ("Die Datenbank existiert nicht");

                  $abfrage = "SELECT passwd, be_name, an_partner FROM bewerbung WHERE passwd LIKE '$txtpasswd' AND be_name LIKE '$txtbe_name'";
                //echo $abfrage;
                  $ergebnis = mysql_query($abfrage);
                  if (mysql_num_rows ($ergebnis) > 0) {
                  $data = mysql_fetch_array ($ergebnis);
                  // Sessionvariablen erstellen und registrieren 
                    $_SESSION["be_name"] = $data["be_name"]; 
                    $_SESSION["an_partner"] = $data["an_partner"]; 
                    $_SESSION["passwd"] = $data["passwd"]; 
                 
                echo "<META HTTP-EQUIV='REFRESH' CONTENT='0; URL=Home/index.php?id="; echo session_id(); echo "'>";

                else 

                echo "<META HTTP-EQUIV='REFRESH' CONTENT='0; URL=Bewerbung.php'>";

                }
                überprüfung im geschüztem bereich
                PHP-Code:
                <?php 
                session_start 
                (); 
                if (!isset (
                $_SESSION["be_name"])) 

                header ("Location: ../login.php"); 

                ?>
                >
                logout
                PHP-Code:
                ob_start (); 
                session_start (); 
                session_unset (); 
                session_destroy (); 
                header ("Location: ../login.php"); 
                ob_end_flush (); 

                Kommentar


                • #9
                  Funktioniert es evtl. wenn du es so machst:
                  PHP-Code:
                  ob_start (); 
                  session_start (); 
                  session_unset (); 
                  session_destroy (); 
                  ob_end_flush ();
                  header("location:index.php");
                  exit(); 
                  führt zu einem dem fehler:
                  Warning: Cannot modify header information - headers already sent by (output started at /home/Web-Server/skript/logout.php:7) in /home/Web-Server/Andre Flöttmann/skript/logout.php on line 8

                  Kommentar


                  • #10
                    Tja, was bewirkt ob_end_flush?

                    Kommentar


                    • #11
                      ich habe es mal grade mit ie probiert und da geht es wie es soll.

                      aber unter linux nich.

                      wäre doch schon schöner wenn es überall geht.
                      oder verlange ich da zuviel?????

                      Kommentar


                      • #12
                        Original geschrieben von mrhappiness
                        schreibe vor session_destroy(); mal
                        PHP-Code:
                        $_SESSION = array(); 
                        session_destroy macht das nämlich nicht und wenn du mit $_SESSION arbeitest, solltest du laut manual kein session_unset() verwenden

                        wenn da snicht hilft, musst du wohl etwas code (vom prüfen) zeigen
                        schon das probiert?

                        Kommentar


                        • #13
                          ja bleibt alles wie es war.

                          Kommentar


                          • #14
                            versuch mal das: http://www.php-resource.de/forum/sho...ght=meta+cache in Kombination mit dem von mrhappiness

                            Kommentar


                            • #15
                              Das liegt vieleicht daran das du erst den status überprüfst und dan den User ausloggst, nämlich PHP arbeitet das script von oben nach unten ab.

                              Vieleicht solltest du mall gucken ob du da etwas ändern kannst!

                              Kommentar

                              Lädt...
                              X