Anschinsan: Zugriff auf lokale Variable

In der Datei doc01.php habe ich die Variable $number="01"; so hingeschrieben und damit definiert.

In der Datei doc02.php brauche ich den Wert dieser Variable, nur um ihn anzuzeigen - also zum Beispiel:

"Der Wert der Variable $number in doc01.php ist 01."

Leider bin ich überfordert - kann mir bitte jemand sagen, wie das geht. Ich kenn mich mit php nur ganz wenig aus.

Anschinsan

  1. Hi!

    In der Datei doc01.php habe ich die Variable $number="01"; so hingeschrieben und damit definiert.

    In der Datei doc02.php brauche ich den Wert dieser Variable, nur um ihn anzuzeigen - also zum Beispiel:

    "Der Wert der Variable $number in doc01.php ist 01."

    Leider bin ich überfordert - kann mir bitte jemand sagen, wie das geht. Ich kenn mich mit php nur ganz wenig aus.

    Anschinsan

    Deine Lösung ist:
    include("doc01.php");

    Wenn du das in die zweite Datei schreibst wird die erste in der zweiten Datei ausgeführt...

    cu

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Frage: Wie wechselt Bill Gates eine Glühbirne?
    Antwort: Gar nicht - er erklärt Dunkelheit(tm) zum Standard.
    SELFCode: ss:| zu:) ls:< fo:# de:> va:} ch:? sh:) n4:( rl:? br:^ js:( ie:% fl:( mo:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Danke für die schnelle Antwort!

      Deine Lösung ist:
      include("doc01.php");

      Wenn du das in die zweite Datei schreibst wird die erste in der zweiten Datei ausgeführt...

      Das geht leider nicht. doc01.php soll eben nicht ausgeführt werden, sondern ich bräuchte nur den Wert der in doc01.php der Variablen $number zugewiesen ist.

      Gibts eine andere Lösung?

      Anschinsan

  2. hi,

    In der Datei doc01.php habe ich die Variable $number="01"; so hingeschrieben und damit definiert.

    In der Datei doc02.php brauche ich den Wert dieser Variable, nur um ihn anzuzeigen - also zum Beispiel:

    "Der Wert der Variable $number in doc01.php ist 01."

    du könntest doc01.php beispielsweise per include in doc02.php einbinden - danach ist die var dann auch dort vorhanden.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  3. Dazu wäre es zunächst einmal gut zu wissen, was doc01.php und doc02.php miteinander zu tun haben.

    Werden sie nacheinander include't/require't? => sollte so klappen
    Ruft das eine Skript das andere auf? => GET/POST
    Oder läuft doc02.php ganz unabhängig von doc01.php? => SESSION

    Der Yeti

    --
    Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
    Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
    Und bin so klug als wie zuvor!
    1. Danke für die schnelle Reaktion!

      doc02.php muss ganz unabhängig von doc01.php laufen - ein include ist nicht möglich, weil ich nicht möchte, dass doc01.php ausgeführt wird. Ich brauche nur den Wert als string sozusagen.

      doc01.php ist das Dokument, das im Browser angezeigt wird. in doc02.php wird dieses Dokument verwaltet. Den Wert brauche ich nur zur Kontrolle, aber er muss leider da sein.

      1. Hello,

        doc02.php muss ganz unabhängig von doc01.php laufen - ein include ist nicht möglich, weil ich nicht möchte, dass doc01.php ausgeführt wird. Ich brauche nur den Wert als string sozusagen.

        doc01.php ist das Dokument, das im Browser angezeigt wird. in doc02.php wird dieses Dokument verwaltet. Den Wert brauche ich nur zur Kontrolle, aber er muss leider da sein.

        Für den Transfer von doc1 zu doc2 gibt es daher die Session.

        Wenn es sich aber nicht um sicherheitsrelavante Daten geht, und Du die Scripte z.B. per POST aufrufst, dann kannst Du auch ganz bequem ein Werte-Array übergeben, indem Du eine Hiddenvariable damit füllst.

        • Übergabewerte ins Array schreiben
        • Array serialisieren
        • Stream mit base64 codieren
        • codierten Stream ins hidden-Feld schreiben
        • posten
        • empfangen
        • base64 decodieren
        • deserialisieren
        • Mit den Werten arbeiten

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Wenn es sich aber nicht um sicherheitsrelavante Daten geht, und Du die Scripte z.B. per POST aufrufst, dann kannst Du auch ganz bequem ein Werte-Array übergeben, indem Du eine Hiddenvariable damit füllst.

          • Übergabewerte ins Array schreiben
          • Array serialisieren
          • Stream mit base64 codieren
          • codierten Stream ins hidden-Feld schreiben
          • posten
          • empfangen
          • base64 decodieren
          • deserialisieren
          • Mit den Werten arbeiten

          Na ob das bequem ist. ;-)
          Ich mache gerne vor dem base64 auch noch ein gzdeflate, um Platz zu sparen. Wenn du schon mal dabei bist ...
          also base64_encode(gzdeflate(serialize($array),9))
          bzw. unserialize(gzinflate(base64_decode($array)))
          Der Yeti

          --
          Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
          Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
          Und bin so klug als wie zuvor!
          1. Den Wert übergebe ich leider gar nicht - deshalb muss ich ihn mir "holen". Ansonsten verstehe ich von der Beschreibung leider nur die erste und die letzte Zeile .... ich bin in php nicht wirklich fit, leider...

            Wenn es sich aber nicht um sicherheitsrelavante Daten geht, und Du die Scripte z.B. per POST aufrufst, dann kannst Du auch ganz bequem ein Werte-Array übergeben, indem Du eine Hiddenvariable damit füllst.

            • Übergabewerte ins Array schreiben
            • Array serialisieren
            • Stream mit base64 codieren
            • codierten Stream ins hidden-Feld schreiben
            • posten
            • empfangen
            • base64 decodieren
            • deserialisieren
            • Mit den Werten arbeiten

            Na ob das bequem ist. ;-)
            Ich mache gerne vor dem base64 auch noch ein gzdeflate, um Platz zu sparen. Wenn du schon mal dabei bist ...
            also base64_encode(gzdeflate(serialize($array),9))
            bzw. unserialize(gzinflate(base64_decode($array)))
            Der Yeti

          2. Hello,

            Wenn es sich aber nicht um sicherheitsrelavante Daten geht, und Du die Scripte z.B. per POST aufrufst, dann kannst Du auch ganz bequem ein Werte-Array übergeben, indem Du eine Hiddenvariable damit füllst.

            • Übergabewerte ins Array schreiben
            • Array serialisieren

            - gzdeflate

            • Stream mit base64 codieren
            • codierten Stream ins hidden-Feld schreiben
            • posten
            • empfangen
            • base64 decodieren

            - gzinflate

            • deserialisieren
            • Mit den Werten arbeiten

            Na ob das bequem ist. ;-)

            Dafür baut man sich ja auch zwei kleine Funktionen, die außerdem noch prüfen, ob überhaupt Daten gesetzt sind und ob die valide übertragen würden. Mann kann auch noch eine Prüfsumme einbauen. Aber die Idee mit dem gz ist gut. Damit werden die Daten für den User noch kryptischer.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Dafür baut man sich ja auch zwei kleine Funktionen, die außerdem noch prüfen, ob überhaupt Daten gesetzt sind und ob die valide übertragen würden. Mann kann auch noch eine Prüfsumme einbauen. Aber die Idee mit dem gz ist gut. Damit werden die Daten für den User noch kryptischer.

              Naja ... hab mal gesehen, dass damit jemand einen Code Obfuscator gebaut hat. War nicht sehr sicher. ;-)

              Hauptsächlich hab ich das gemacht, weil ich Kilobyte-weise Arraydaten übermitteln wollte und die Ladezeit in Grenzen halten wollte.
              Trotz base64 ist der String dann ca. 30% kleiner...

              Der Yeti

              --
              Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
              Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
              Und bin so klug als wie zuvor!
      2. Hi!

        Danke für die schnelle Reaktion!

        doc02.php muss ganz unabhängig von doc01.php laufen - ein include ist nicht möglich, weil ich nicht möchte, dass doc01.php ausgeführt wird. Ich brauche nur den Wert als string sozusagen.

        doc01.php ist das Dokument, das im Browser angezeigt wird. in doc02.php wird dieses Dokument verwaltet. Den Wert brauche ich nur zur Kontrolle, aber er muss leider da sein.

        Dann mach doch eine dritte Datei, z.B. "var.php".
        In diese schreibst du alle Variablen (mit den PHP-Tags!!!) rein die du bei beiden Dateien brauchst, und dann includest du einfach in beiden Dateien diese Datei... :-D

        cu

        Marc Reichelt || http://www.marcreichelt.de/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        SELFCode: ss:| zu:) ls:< fo:# de:> va:} ch:? sh:) n4:( rl:? br:^ js:( ie:% fl:( mo:)
        http://emmanuel.dammerer.at/selfcode.html
        1. Dann mach doch eine dritte Datei, z.B. "var.php".
          In diese schreibst du alle Variablen (mit den PHP-Tags!!!) rein die du bei beiden Dateien brauchst, und dann includest du einfach in beiden Dateien diese Datei... :-D

          Und ganz sauber dann noch var.inc und .inc Dateien per .htaccess vor Download schützen. ;-)
          Der Yeti

          --
          Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
          Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
          Und bin so klug als wie zuvor!
          1. Hi!

            Dann mach doch eine dritte Datei, z.B. "var.php".
            In diese schreibst du alle Variablen (mit den PHP-Tags!!!) rein die du bei beiden Dateien brauchst, und dann includest du einfach in beiden Dateien diese Datei... :-D

            Und ganz sauber dann noch var.inc und .inc Dateien per .htaccess vor Download schützen. ;-)
            Der Yeti

            Ich hab ja geschrieben var.php, oder halt z.B. var.inc.php...
            Dann wird halt eine leere Seite angezeigt.

            Aber eine Lösung mit .htaccess ist natürlich erst richtig sauber! ;-)

            cu

            Marc Reichelt || http://www.marcreichelt.de/

            --
            Linux is like a wigwam - no windows, no gates and an Apache inside!
            SELFCode: ss:| zu:) ls:< fo:# de:> va:} ch:? sh:) n4:( rl:? br:^ js:( ie:% fl:( mo:)
            http://emmanuel.dammerer.at/selfcode.html
            1. Aber eine Lösung mit .htaccess ist natürlich erst richtig sauber! ;-)

              Stimmt. Eigentlich funzt das auch so. Es sei denn PHP ist plötzlich deaktiviert. ;-)
              Ich nenne halt alle Dateien, die nicht angezeigt sondern nur eingebunden werden sollen, .inc

              Der Yeti

              --
              Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
              Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
              Und bin so klug als wie zuvor!
      3. Moment... doc01 soll im Browser angezeigt, aber nicht ausgeführt werden?!? Wie soll das gehen?

        Der Yeti

        --
        Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
        Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
        Und bin so klug als wie zuvor!
        1. Moment... doc01 soll im Browser angezeigt, aber nicht ausgeführt werden?!? Wie soll das gehen?

          doc01.php wird im Normalfall angezeigt - also für normale User. Für mich alleine habe ich noch doc02.php um doc01.php quasi intern zu verwalten.

          Wäre doc01.php eine .txt Datei könnte ich sie einfach mit fopen / fread lesen und mir den entsprechenden Wert raussuchen. Weil es aber eine .php Datei ist, funktioniert das nicht. Im Prinzip wäre das aber die Lösung - ich weiß nur nicht ob das geht.

          Kann man aus den Werten aller Variablen die zB in doc01.php vorhanden sind ein Array bilden und in diesem Array den Wert raussuchen? Wie würde das gehen?

          Anschinsan

          1. hi,

            Wäre doc01.php eine .txt Datei könnte ich sie einfach mit fopen / fread lesen und mir den entsprechenden Wert raussuchen.

            php-datein sind idR. auch nur ascii-dateien.

            Weil es aber eine .php Datei ist, funktioniert das nicht.

            doch, tut es.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. Hi Wahsaga,

              Du machst deinem Namen alle Ehre ;-) Weil ich mich mit php nicht auskenne, würdest du deinen Orakelspruch noch etwas konkretisieren?

              Der Wert steht in doc01.php in der 4 Zeile an Stelle 10 und hat abwechselnd viele Zeichen. Die ca. 60 Versuche richtigen php code zu fabrizieren haben alle nicht das gewünschte Ergebnis gebracht.

              Ich versuchs nochmal und poste meinen 61 Versuch dann hier - damit ihr alle auch was zum lachen habt ;-)

              Könnt ihr mir bitte trotzdem helfen...

              1. Der Wert steht in doc01.php in der 4 Zeile an Stelle 10 und hat abwechselnd viele Zeichen. Die ca. 60 Versuche richtigen php code zu fabrizieren haben alle nicht das gewünschte Ergebnis gebracht.

                Warum so kompliziert? Es gibt doch Funktionen wie http://php.net/stristr, die dir das Suchleben erleichtern. Du kannst sogar die gesamte Datei auf einmal nach "$var = " durchsuchen und er liefert dir den Treffer...

                Der Yeti

                --
                Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
                Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
                Und bin so klug als wie zuvor!
          2. Wäre doc01.php eine .txt Datei könnte ich sie einfach mit fopen / fread lesen und mir den entsprechenden Wert raussuchen. Weil es aber eine .php Datei ist, funktioniert das nicht. Im Prinzip wäre das aber die Lösung - ich weiß nur nicht ob das geht.

            Kannst du.

            Ansonsten würde ich vorschlagen, doch ein include("doc01.php?action=dumpvars") oder so etwas zu machen. Den Variablennamen und Wert kannst du natürlich frei wählen, aber halt irgendetwas, wo dein Skript dann weiß "aha, ich soll nix für den Browser ausgeben sondern nur die Variablen setzen".

            Der Yeti

            --
            Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
            Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
            Und bin so klug als wie zuvor!
            1. Ja ja ja ja ..... sowas klingt sehr überzeugend....

              Ansonsten würde ich vorschlagen, doch ein include("doc01.php?action=dumpvars") oder so etwas zu machen. Den Variablennamen und Wert kannst du natürlich frei wählen, aber halt irgendetwas, wo dein Skript dann weiß "aha, ich soll nix für den Browser ausgeben sondern nur die Variablen setzen".

              ... könntest du mir das bitte noch etwas genauer erklären.

              doc01.php?action=dumpvars verweist auf ein script nehme ich an. Was müsste in diesem script stehen?

              Anschinsan

              1. Ja ja ja ja ..... sowas klingt sehr überzeugend....

                OK OK, werd ja schon ausführlicher... (ungetestet!)
                $vielezeilen = file("doc01.php");
                foreach ($vielezeilen as $zeile)
                {
                   if (stristr($zeile,"$variabledieduhabenwillst"))
                      eval($zeile);
                }

                ... könntest du mir das bitte noch etwas genauer erklären.

                doc01.php?action=dumpvars verweist auf ein script nehme ich an. Was müsste in diesem script stehen?

                Du machst eine Bedingung in der Art...
                if ($_REQUEST["action"] == "dumpvars")
                {
                   $variable = 1;
                }
                else
                {
                   $variable = 1;
                   // und alles, was der User sehen soll
                }

                Der Yeti

                --
                Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
                Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
                Und bin so klug als wie zuvor!
                1. OK - das probier ich gleich aus. Damit ihr wisst, was so ungefähr in meinem php buch steht...:

                  <?php

                  $new_docpath = $DOCUMENT_ROOT."/doc/";

                  $datei_name = "doc01";

                  $doc = $datei_name;
                  $doc_file = $new_docpath.$doc.".php";

                  if ($fp = fopen ($doc_file,r)) {
                     while ($str= fgets($fp, 15)) {
                           echo $str;
                     }
                  }
                  else
                    echo "Fehler beim Lesen von $doc";
                    if (fclose($fp))

                  ?>

        2. Übrigens doc01.php wird auch schon generiert. Würde ich die Variablen also extern definieren, müsste ich diese var.inc schreibberechtigt machen.

          Tja, das kanns nicht sein ;-(

          Anschinsan

  4. Hello,

    wenn es um eine Konfigurationsdatei gehen sollte, schau Dir mal http://de3.php.net/manual/de/function.parse-ini-file.php an. das ist eine echt praktische Funktion, besonders, wenn man Gruppen bildet.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau