romy: include+session

Hallöchen,

nehmen wir mal an ich habe eine php-seite die grob so aussieht

<?php

session_register("var1");
session_register("var2");

if(blabla=5) include($pfad);
else include($pfad2);

?>

nur beispielhaft, fürs Verständnis

ich möchte jetzt, das die gespeicherten session-variablen in den include dateien auch vorhanden sind (die include-dateien sind auch *.php und haben die variablen auch registered)
irgendwie haben die dort keinen Wert, warum?
wie kann ich das lösen?

danke
romy

  1. Hallo romy.

    Also in deinen Includes steht auch jeweils session_register()?
    Das kannst du dir sparen. Zunächst solltest du (wenn du nicht weisst, wie dein PHP mit sessions umgeht) die Session mit session_start(); starten.

    Wo kommen var1 und var2 her? Werden die übergeben?

    Und deine If-Abfrage ist auch nicht ganz korrekt...

    <?php
    session_start();
    $var1 = $HTTP_GET_VARS["var1"]; // möglicherweise durch Übergabe per QueryString
    $var2 = $HTTP_GET_VARS["var2"]; // oder mit $_GET...(ich verwende ein älteres PHP)
    session_register("var1");
    session_register("var2");

    if($var1 == 5) {
    include($pfad1);
    } else {
    include($pfad2);
    }
    ?>

    Deine Includes kennen $var1 und $var2 auch ohne sie in eine Session zu packen, da sie letztlich genauso funktinieren, als würdest du den Code direkt da rein kopieren.

    Grüße
    Sascha

    1. Hallo romy.

      Also in deinen Includes steht auch jeweils session_register()?
      Das kannst du dir sparen. Zunächst solltest du (wenn du nicht weisst, wie dein PHP mit sessions umgeht) die Session mit session_start(); starten.

      Wo kommen var1 und var2 her? Werden die übergeben?

      --> die kriegen noch vor dem include einen Wert übergeben und haben auch nichts mit der if-Abfrage zu tun

      Deine Includes kennen $var1 und $var2 auch ohne sie in eine Session zu packen, da sie letztlich genauso funktinieren, als würdest du den Code direkt da rein kopieren.

      --> das klingt sehr logisch!
      --> hab da aber trotzdem noch ein kleines Problem
      --> es ist etwas schwer zu erklären
      also, die DAtei die included wird, wird vorher an den Server geschickt um allle php-Sachen auszuführen und dann eingebunden, wieder so eingebunden, stehen sie natürlich normal in der  Datei und haben auch die Variablen zur VErfügung!
      ABER: sie brauchen die Variablen schon bevor sie zum Server geschickt werden
      ich könnte zwar die Variablen in den QUerystring schreiben, das will ich aus Grössengründen vermeiden, und so bin ich auf die sessions gekommen
      irgendwie verzwickt

      vielleicht gibts ja noch ne Variante

      danke romy

      Grüße
      Sascha

      1. Hallo romy.

        Die Includes werden aber nicht vorher ausgewertet, sondern in dein Skript eingeunden und dann zusammen ausgeführt. Du hast die Variablen $var1 und $var2 also zur Verfügung.

        Versuch mal folgendes:

        1. include Datei (inc1.php)
        <?php
        echo $var1;
        ?>

        2. include-Datei (inc2.php)
        <?php
        echo $var2;
        ?>

        Hauptskript:
        <?php
        $var1 = "hallo";
        $var2 = "du";

        if($irgendeineanderevariable == 1) {
        include("inc1.php");
        }
        else {
        include("inc2.php");
        }
        ?>

        Was kommt raus?

        Grüße
        Sascha

        PS: man mag mich öffentlich steinigen, wenn es in einer ultra-neuen PHP-Verion so nicht gehen sollte, was ich arg bezweifle...

        1. Hallo romy.

          Die Includes werden aber nicht vorher ausgewertet, sondern in dein Skript eingeunden und dann zusammen ausgeführt. Du hast die Variablen $var1 und $var2 also zur Verfügung.

          »»» PS: man mag mich öffentlich steinigen, wenn es in einer ultra-neuen PHP-Verion so nicht gehen sollte, was ich arg bezweifle...
          lieber nicht, wo bekäme ich denn da deine infos her
          "nur wer frei von Sünde ist, werfe den ersten stein"...

          es geht jedenfalls nicht, aber ich habe dir etwas verschwiegen, was wahrscheinlich extrem von belang war, sorry
          include("http://meeinpfad/meinedatei.php");
          ich benutze das so, weil wie gesagt, die Dateien vorher zum server müssen
          habs gerade noch mal probiert mit nem normalken include, da funzt das was du gesagt hast, wie gesagt es klingt auch sehr logisch
          --> also du hattest recht und ich stelle meine frage noch mal neu, mit hoffentlich jetzt allen relevanten infos

          danke extremly
          romy

          1. Hallo romy.

            Aha. Da liegt der Wurm im Gemüse (oder ähnlich---:-)

            Du kannst die Variable doch einfach übergeben...
            <?php
            include("http://meeinpfad/meinedatei.php?var1=".$var1."&var2=".$var2);
            ?>

            Diese Übergabe der Variablen funktioniert aber auch nur bei Aufruf über http.

            Grüße
            Sascha

            1. Hallo romy.

              Aha. Da liegt der Wurm im Gemüse (oder ähnlich---:-)

              --> der Hund begraben
              --> der Hase im Pfeffer (mhm lecker, sorry an alle Vegis)
              --> des Pudels Kern (huch wie gebildet--> Goethe) :)
              usw...
              und ich könnte noch tausend argumente bringen, wenn ich nur welche wüsste...

              Du kannst die Variable doch einfach übergeben...
              <?php
              include("http://meeinpfad/meinedatei.php?var1=".$var1."&var2=".$var2);
              ?>

              Diese Übergabe der Variablen funktioniert aber auch nur bei Aufruf über http.

              und jetzt beisst sich der wurm in den schwanz oder so...
              da waren wir schon
              aber wenn es keine Möglichkeit für meine extravaganten Wünsche gibt, schreibe ich eben alles daten in ein array, damit der querystring nicht so riesenlang wird, wenn ich mal viele Variablen habe
              trotzdem ist das irgendwie drumrum, denn soweit ich weiss, ist es nicht so toll riesenmengen an daten über den querystring mitzuschicken.
              Fazit: es ist nicht alles Gold was glänzt

              ich danke Dir echt vielmals und auf das dich nie einer steinigen möge
              falls dir doch noch was einfällt...meine Antennen bleiben auf Hochempfang
              so long

              deine ergebene ROmy

              Grüße
              Sascha

              1. Oh Romy(o)
                (kleiner literarisch-shakespeare'scher Ausflug, geschlechtich zwar nicht ganz einwandfrei, dafür aber total spontan-assoziativ, echt ehrlich...)

                Wie viele Variablen sollen denn da übergeben werden?
                Und mit dem Array das kannst du gleich vergessen, da PHP bei <?php echo $arrayName; ?> nur "Array" rausrückt, nicht aber den Inhalt des Arrays übergibt.

                Übrigens passen in den QueryString schon ein paar Daten. Natürlich nicht so viele, wie bei POST...

                Hab ich eben im Netz gefunden:
                "...Länge des Querystrings: Die URL und der Querystring zusammen sollten nicht mehr als 500 bis 2000 Zeichen enthalten, ansonsten besteht die Gefahr, daß einige Werte einfach nicht übergeben werden (vom Browser abhängig). ..."

                Grüße
                Julia(n) :-)

  2. 1. Hast Du schon einmal probiert die Variablen in der Hauptseite euszugeben?
    2. Welche PHP Version benutzt Du?

    MfG,

    Sven Wagener.
    http://www.dokuwelt.de

      1. Hast Du schon einmal probiert die Variablen in der Hauptseite euszugeben?

      ja, funzt problemlos, ich kann alle ausgeben

      1. Welche PHP Version benutzt Du?

      php 4.1.0

      MfG,

      danke
      romy

      Sven Wagener.
      http://www.dokuwelt.de