isset() und NULL
Daniel
- php
Hallo,
Ich hab da einmal eine "Nebenbei-Frage" bezugs auf die Funktion isset() und dem Null Wert:
Da ich vorher das Problem gehabt habe, dass aus irgendwelchen Gründen unset() bei Session Variablen in bestimmten Dokumenten nicht funktioniert, setze ich den Variablenwert einfach auf NULL, was laut PHP Manual auch unset() entspricht.Auf der anderen Seite steht im Manual aber auch drin, dass isset() nur überprüft ob eine Variable undefiniert ist. Und wiederum auf der anderen Seite steht da auch, das NULL nicht undefiniert bedeutet, sondern das stellt einen eigenen Datentyp dar. Getestet habe ich ob isset() auch NULLwert Variablen als undefiniert ansieht, und das macht es auch(komischerweise -obwohl sie eigentlich nicht undefiniert sind). Hier finde ich das Manual etwas undurchsichtig.
Würdet ihr die Abfrage eher mit is_null() machen anstatt mit isset() - ich weiss nämlich nicht ob das vielleicht eine unerwünschte Nebenfunktion oder evtl. ein Bug ist der früher oder später behoben wird (´das Script sollte wenn möglich auch in Zukunft laufen ;-) )
Grüsse,
Daniel
Hallo Daniel,
Da ich vorher das Problem gehabt habe, dass aus irgendwelchen Gründen unset() bei Session Variablen in bestimmten Dokumenten nicht funktioniert,
Ich habe die Erfahrung gemacht, dass bei _aktiviertem_ register_globals ein unset($_SESSION['...']) nicht die gewünschte Wirkung zeigt. Aber:
// hack for register globals:
if (ini_get ('register_globals') == '1') {
session_unregister ('user');
}
// unset the user array - we are now logged out
unset ($_SESSION['user']);
Damit konnte ich bisher alle Sessionvariablen entfernen.
Viele Grüße,
Christian
Hallo Christian,
Ich habe die Erfahrung gemacht, dass bei _aktiviertem_ register_globals ein unset($_SESSION['...']) nicht die gewünschte Wirkung zeigt. Aber:
// hack for register globals:
if (ini_get ('register_globals') == '1') {
session_unregister ('user');
}
// unset the user array - we are now logged out
unset ($_SESSION['user']);Damit konnte ich bisher alle Sessionvariablen entfernen.
Danke für den Tip, aber sollte man die funktion session_unregister() nicht nur dann verwenden wenn man die Variablen nach der alten Methode mit session_register() registriert hat? Ich hab die neuere Methode mit $_SESSION["name"]=[$var] bzw [Wert] verwendet.
Das komische ist ja, dass es nur in manchen Dokumenten nicht funktioniert, mit NULL Zuweisung hingegen gehts immer.
Alternativ könnte ich einmal den Provider fragen ob er den "Blödsinn" :) nicht einfach deaktivieren kann...
Grüsse,
Daniel
Hallo Daniel,
Danke für den Tip, aber sollte man die funktion session_unregister() nicht nur dann verwenden wenn man die Variablen nach der alten Methode mit session_register() registriert hat?
Eigentlich schon. Aber bei mir hat er halt gar nichts mehr unregistriert, als ichs plötzlich mal bei register_globals = on laufen lassen habe und da bin ich drauf gekommen, dass es damit klappt.
Ich hab die neuere Methode mit $_SESSION["name"]=[$var] bzw [Wert] verwendet.
Gut so. :-)
Das komische ist ja, dass es nur in manchen Dokumenten nicht funktioniert,
Das ist allerdings seltsam. Probier doch mal meine Methode, wenn die nicht funktioniert, liegt das Problem woanders.
Alternativ könnte ich einmal den Provider fragen ob er den "Blödsinn" :) nicht einfach deaktivieren kann...
Manchmal tuts auch eine .htaccess mit
php_flag register_globals off
Allerdings nur, wenn a) PHP als Modul installiert ist und b) Du das mit Deiner .htaccess machen darfst.
Viele Grüße,
Christian
Hi Christian
Das komische ist ja, dass es nur in manchen Dokumenten nicht funktioniert,
Das ist allerdings seltsam. Probier doch mal meine Methode, wenn die nicht funktioniert, liegt das Problem woanders.
Hab ich jetzt probiert, geht einwandfrei - nur hoffe ich das die Methode auch zuverlässig ist, weil sie ja laut PHP Manual nicht empfohlen wird.
Alternativ könnte ich einmal den Provider fragen ob er den "Blödsinn" :) nicht einfach deaktivieren kann...
Manchmal tuts auch eine .htaccess mit
php_flag register_globals off
Allerdings nur, wenn a) PHP als Modul installiert ist und b) Du das mit Deiner .htaccess machen darfst.
ach, das geht einfacher, telefon-->support-->frage ob funktion ausgeschaltet werden kann(man beachte das sicherheitsrisiko :) )-->techniker:"nein geht nicht"-->ich:"aber die Firma xxx macht das auch"-->techniker:"nein,leider"-->ich:"naja, dann gehe ich halt zur firma xxx,um meinen Anforderungen zu efüllen und die Kundenzufriedenheit zu gewährleisten"-->techniker:"ist kein problem, in 10min ist ihre konfiguration fertig, ich übersiedele sie auf einen anderen Server"-->ich:"fein, das nennt man Support :), muss ich direkt weiterempfehlen"-->setzt sich wieder gemütlich in seinen Sessel und arbeitet(bzw ärgert sich) weiter :-)
Grüsse,
Daniel