Super Globale Variable löschen

  • Hallo zusammen,


    Ich möchte den Inhalt einer Super Globalen Variable löschen.
    Dabei geht es nicht mit unset, da dann nur die lokale Variable gelöscht wird.


    PHP
    echo $_GET['status_cockpit'];    
    if ($_GET['status_cockpit']=="cockpit_neu"){$status="neu";$_GET['status_cockpit']= empty;} 
    echo $_GET['status_cockpit'];



    $_GET['status_cockpit'] wird durch einen Link auf einer anderen Seite gesetzt.
    Doch wenn diese Passage durchlaufen ist, dann ist $status gesetzt auf "neu", und dann muss die $_GET['status_cockpit'] wieder gelöscht werden, da Sie sonst immer wieder $status auf "neu" setzt.



    Also dann erweitern wir das hier mal:
    Ja hab Sie schon gelöscht:
    $_GET['status_cockpit']='' oder $_GET['status_cockpit']=empty oder destroy $_GET['status_cockpit'].
    Alles funktioniert. Aber leider wird nur die lokale Variable gelöscht. Beim Wiederaufruf der Seite wird die lokale Variable wieder durch die Glogabe Variable $_GET['status_cockpit'] 'gefüllt!
    So das suche ich zu verhindern, in dem ich einen Weg suche die Globale Variable zu löschen.



    cottton



    Workaround gefunden:
    Einfach die Abfrage an eine (Hidden-) Variable gehangen, und jetzt wird nur ausgelöst, wenn beide Variablen true liefern.


    Nicht desto trotz hätte ich gerne gewusst, wie man eine Globale Variable löscht. Also so, das beim erneuten Aufruf der Seite Sie hintenrum nicht wieder gefüllt wird, da man die lokale gelöscht hat, aber nicht die globale.

  • Ich weiß nicht, ob ich dein Problem völlig verstanden habe ... hier steht ja nur ein kleiner Teil deines Codes.


    Aber GET-Werte kann man ganz einfach folgendermaßen löschen:
    $url = strtok ($url, '?');


    Ansonsten wäre die Benützung einer Session sinnvoll um Variablen über verschiedene Seiten zu transportieren.

  • Ne das wars nicht.


    Also In der ersten Seite wird ein $_GET['status_cockpit'] mit einem Wert gefüllt. $_GET ist eine Superglobale.
    Auf der Seite die danach aufgerufen wird, wird der Inhalt der Super globalen $_GET['status_cockpit'] abgefragt und verwendet.
    Danach möchte ich den zugewiesenen Wert in der Varibalen $_GET['status_cockpit'] wieder lösche, oder besser noch die ganze Superglobale $_GET['status_cockpit'] löschen, so als wenn Sie nicht da ist. also den Urzusatnd wieder herstellen.


    Doch wenn ich es mit $_GET['status_cockpit']=empty; oder destroy $_GET['status_cockpit']; dann wird nur die 'lokale' $_GET['status_cockpit'] gelöscht / geleert, und nicht die Superglobale $_GET['status_cockpit'].


    Und noch schlimmer: Bei Neuaufruf der Seite wird die Lokale $_GET['status_cockpit'] durch die Superglobale $_GET['status_cockpit'] wieder gefüllt.


    Kann mir da jemand weiterhelfen?

  • Um das Problem nachvollziehen zu können, wäre der Quellcode BEIDER Seiten hilfreich.


    Eine Variable löschen kann man ansonsten mit unset, was aber wohl in deinem Fall nicht weiterhelfen wird.


    Der von mir beschriebene Code sollte schon helfen. Die neue URL dann einfach mit header ("location:neue-url") an entsprechender Stelle aufrufen.


    Um global Variablen zu setzen bzw. zu löschen, wäre eine Session die einfachste Variante.


    Aber, wie gesagt, zur Nachvollziehbarkeit wäre dein vollständiger Code nötig. So könnte man dein Problem nachbauen und ausprobieren.

  • TE hat zwar einen workaround gefunden, dennoch:
    $_GET ist eine Superglobale Variable. Überall. Da gibt es keine lokale Version. Das Problem wird also woanders verursacht worden sein.

  • Was er meint, ist, dass er die Get-Parameter aus der URL entfernen möchte, damit bei einem Reload der Seite, nicht alles nochmal ausgeführt wird, da die Daten noch bestehen.


    HAL9000 hatte da eigentlich schon eine ganz gute Idee.


    Alternativ würde mir noch der Workaround einfallen, sobald das Script einmal ausgeführt wurde, einen Get-Parameter zu setzen, der dir dann sagt, dass es bereits ausgeführt wurde. Dementsprechend könntest du dann darauf reagieren.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!