Ankündigung

Einklappen
Keine Ankündigung bisher.

Node no longer exists

Einklappen

Neue Werbung 2019

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

  • Node no longer exists

    Hallo zusammen,

    seit kurzem bin ich mehr oder weniger gezwungen mit mich XML zu beschäftigen und stecke jetzt bei einem Problem bei dem ich nicht weiterkomme. Habe hier auch schon gesucht aber ich kann mein Problem tortzdem nicht lösen.

    Für den Login auf einer Homepage bekomme ich eine XML Datei, die aus der ich bestimme Wert auslese und die Prüfen ob der User für den Login berechtig ist. Dazu öffne ich die XML Datei mit

    $xml = simplexml_load_file($file);

    und lese dann die benötigten Daten wie folgt aus

    $path ="/fingerprint/data";
    $wert = $xml->xpath($path)
    $member_id= $wert [0]->id;

    Das funktioniert auch alles prima bis dahin. Die Member ID brauche ich dann aber auf der Homepage immer wieder und möcht die dann in einer Session abspeichen. Sobald ich aber eine Session starte oder die auf eine andere Seite weiterleite bekomme ich folgende Fehlermeldung:

    Warning: session_start() [function.session-start]: Node no longer exists in C:\apachefriends\xampp\htdocs\projekt\reg.php on line 3

    Funkioniert das ganze XML nicht mit Sessions ?? Muß ich das ganze Projekt jetzt umbauen oder gibt es da eine einfache Lösung ??

  • #2
    Die Fehlermeldung habe ich noch nie gesehen, aber PHP-Fehlermeldungen kannst du fast immer in Google eingeben und du findest einen Haufen Threads dazu:
    Google

    Kommentar


    • #3
      Hallo workaholic,

      ich kann da Zergling nur beipflichten. Ist "simplexml" eine eigene Klasse? Evtl. kommst du mit den DOMXML-Funktionen weiter. Diese bieten auch eine schöne Möglichkeit beliebige Knoten und Werte aus einem XML auszulesen.

      Kommentar


      • #4
        SimpleXML wurde mit PHP 5 eingeführt.
        Ist aber echt merkwürdig, Nodes heißt ja Knoten (seltsam dass du gerade mit XML und eben diesen arbeitest), session_start() und Nodes sind für mich aber nicht wirklich in einen Zusammenhang zu bringen. Das ist wie Käse und Beton.

        In Google gabs einige Treffer, waren mir jetzt zuviele und zu lange Threads um da durchzuschauen welcher die beste Antwort liefert.

        Kommentar


        • #5
          @Zergling: danke für die Nachhilfe, das war mir nicht bekannt. Ich arbeite grundsätzlich mit der DOMXML-Erweiterung und habe für XML-Daten-Schichten einen Wrapper für Lesen und Schreiben implementiert.

          Kommentar


          • #6
            Man kann SimpleXML Objekte genausowenig in der Session halten wie zum Beispiel Mysql Verbindungsresourcen oder DOMXML Objekte.

            Kommentar


            • #7
              Zitat von Schnulli
              Man kann SimpleXML Objekte genausowenig in der Session halten wie zum Beispiel Mysql Verbindungsresourcen oder DOMXML Objekte.
              Vielleicht eine blöde Frage als Moderator, aber es heißt ja immer, die Klasse muss vor dem restaurieren des Objekt mittels session_start() bekannt sein, ein SimpleXML sollte ja dann als Klasse bekannt sein .. Was nun?

              Kommentar


              • #8
                Es gibt einen Unterschied zwischen notwendiger und hinreichender Bedingung.
                Das Mysql Modul ist ja auch vor dem Aufruf von session_start() bekannt und man kann trotzdem keine Mysql Resource in den Sessiondaten speichern.

                Kommentar


                • #9
                  Hallo Schnulli,

                  das ist schon richtig, aber wir driften grade etwas in die Theorie ab, denn die SimpleXML-Klassen sind ebenso wie die MySQL-Erweiterung ein PHP-Modul und auch vor dem session_start() bekannt. Das Problem ergibt sich immer nur mit selbst implementierten Klassen, und oft auch nur, wenn session.auto_start = 1 gesetzt ist.

                  @workaholic: bitte poste doch ein wenig mehr Code, damit man sehen kann WO und WARUM das bei dir schief geht.

                  Kommentar


                  • #10
                    Dachte es geht um echte Objekte, Resourcen sind klar.

                    Kommentar


                    • #11
                      Hallo Dr.Dre,
                      danke für die Antwort, aber die Frage kam von Zergling, nicht von mir. Und ja, es ist ja gerade mein Punkt, beide sind vor session_start() bekannt und trotzdem kann man sie nicht als Zeichenkette in den Sessiondaten speichern. "Vorher bekannt" ist also kein alleiniges Kriterium.
                      Ausserdem sind wir immer noch beim Eingangsthema: "Warum gibt es Fehlermeldungen, wenn ein SimpleXML Element aus den Sessiondaten benutzt wird?" Und jetzt sind wir bei dem Aspekt: "Ist das immer so? Muss das so sein?"

                      Hallo Zergling,
                      Objekte können zum Beispiel auch Resourcen halten, sichtbare und die vorimplementierten Klassen auch unsichtbare. In diesem Fall handelt es sich vermutlich um das Datenmoedell hinter SimpleXML, also wohl ein libxml2 handle. Ich weiss aber nicht, ob es bei php Alternativen bei der XML Bibliothek gibt.

                      Kommentar


                      • #12
                        Sry das ich diesen alten Kram noch mal hochhole aber ich hatte gerade das selbe Problem mit einen XML Object und wollte auf einen Unterknoten ein Count machen um zu schauen wieviele Subnodes ich habe.

                        Allerdings hab ich grad gelesen das PHP Interne Klassen nicht serialisiert werden dürfen, keine Ahnung inwiefern das mit der Funktion Count zu tun hat aber in den Fall ist es klar sobald ein Object in die Session geschrieben wird wird es serialisiert ... wegen der Speicherung der Daten.

                        Wollte es nur mal geschrieben haben falls irgendwer mal wieder auf dieses seltene Problem trifft

                        Kommentar

                        Lädt...
                        X