Javascript/PHP confirm() und location.href Problem

  • Hallo Leute

    Ich knoble seit 20 Minuten an dem doofen Problem rum und komm mir von Javascript verarscht vor.

    Hier der Link HMTL:

    HTML
    <a onclick="logout()" href="?action=logout">Logout</a>

    JavaScript Code:

    Code
    function logout() {
                if(confirm("Bei allen Diensten von WTsurvey / Directory Listing abmelden?")) {
                    location.href="?action=logout_all&dir=./";
                        }
                    }

    PHP Funktion dazu:

    PHP
    if($_GET[action] == "logout" or $_GET[action] == "logout_all") {
            if($_GET[action] == "logout_all")
                unset($_SESSION[user_list]);
            unset($_SESSION[user]);
            header("Location: ./");
                }

    Es soll dazu dienen, per JS fragen, ob der User sich überall oder nur bei der aktuellen Seite ausloggen will und dann soll JS entsprechend weiterleiten.
    Falls JS nicht aktiviert wäre, dann würde a href="" Link einspringen und man meldet sich über "action=logout" ab.
    Aber warum funktioniert der Script nicht?

    Ich habe das bereits genau gleich bei einer ähnlichen Seite (die zum Projekt gehört) und da funktioniert das ohne Probleme und Code stimmt überein.
    Wer weiss eine Lösung?

  • Was funktioniert nicht, das PHP oder das JS?

    Änder mal den Link in nur "?action=logout_all

  • Das weiss ich nicht ganz. Ich habe manuell mal "action=logout_all" eingegeben und es ging.
    Da gehe ich davon aus, dass es am JavaScript Teil liegt.

    Tschuldigung hab vergessen das hinzuschreiben.

  • Nachtrag: Dummerweise gehts irgendwie auf einmal. Bitte closen.. Sorry keine Ahnung warums geht, aber hab nichts geändert. Naja trotzdem danke, wer sich darum bemühen wollte..

  • Code
    function logout() {
                if(confirm("Bei allen Diensten von WTsurvey / Directory Listing abmelden?")) {
                    location.href='?action=logout_all';
                        }
                    }

    $_GET[action] heist eigentlich $_GET['action'] etc änder das mal um

  • Daran liegts nicht, denn ich hatte das auch geändert und geht immer noch nicht.

    Sprich, ich hab was rausgefunden.
    Wenn ich die URL http://www.xyz.white-tiger.ch aufrufe und mich da einlogge, navigiere und mache unso und dann auf ner Seite lande mit http://www.xyz.white-tiger.ch/?irgend=was
    Und dann auslogge, gehts ohne Probleme.
    Will ich mich aber bei ner URL von http://www.xyz.white-tiger.ch/ ausloggen, spinnts und geht nicht. Er leitet mich nicht auf action=logout_all um.

  • Der Unterschied lag an GET Variablen an der einen URL und bei der anderen gar nichts.
    Ich habe deine Möglichkeit (die unprofessionell zu sein scheint) ausprobiert und es geht immer noch nicht. Woran kann das liegen? Bei der einen Seite gehts, bei der anderen nicht.

    Ich würd euch gern den Script ganz zeigen oder einen Login machen, damit ihr das ausprobieren könnt, doch ich darf das nicht, sind zu brisante Daten da.

  • Es betrifft nicht meine richtige Seite. Die ist noch in Bearbeitung, ich weiss.
    Es geht hier einfach darum, dass meine Fetzen oben, nicht gehen.

    Ich hab jetzt nochmal alles durchgeguckt und es geht halt immer noch nicht.

    PS: NICHT MEINE WHITE-TIGER.CH SEITE IST DAVON BETROFFEN

  • Wie gesagt ohne Beipsiel kann ich auch nix machen, also die Codes sind zu 100 Prozentig richtig aber ich sage es nochmal du sollst mal aus
    $_GET[action]
    $_GET['action'] usw machen ....

  • Ich hab mal das Einfachste versucht: Einfach bei <a... das href weggelassen und siehe da, es geht. Nur komisch, weil ich diese Art von Überbrückung immer mache und es bisher immer ging. Aber naja egal..
    Beispielseite: http://www.scsh.white-tiger.ch

  • Ungetestet, vll gehts ja so:

    HTML
    <a onclick="return logout();" href="?action=logout">Logout</a>
    Code
    function logout() {
                if(confirm("Bei allen Diensten von WTsurvey / Directory Listing abmelden?")) {
                    location.href='?action=logout_all';
                    return false;
                        }
                return true;
                }

    Evtl true und false vertauschen, wenns nicht klappt. Kann auch sein, dass es gar nicht geht.

    Information will frei verfügbar sein.

    Don't eat unpeeled hedgehogs.