hubertus: variable mit url übergeben

Einen schönen Mittag,

Ich habe gerade feststellen müssen, nachdem ich unsere Homepage auf den Server geladen habe, dass dieser meine Verlinkung (ich habe das System index.php?mod=Beispiel und dann wird in der index.php der Inhalt über die Variable geladen) nicht akzepiert.
Der Server unterstützt php, die Verlinkung funktioniert auch (habe es auf einem anderen Server getestet).

Warum funktioniert es dann auf unserem richtigen Server nicht?
Wie könnte ich es machen, dass die Varibalen doch übergeben werden (ich möchte aber das System beibehalten)?

Mit freundlichen Grüßen
Hubertus

  1. Hallo!

    Wie "fängst" du denn die variablen auf? Etwa so sollte es sein, weil vermutlich (was richtig ist), register_globals deaktiviert ist.

    $mod = $_GET['mod'];

    1. Hallo,

      genau so habe ich sie nicht "empfangen".

      $mod = $_GET['mod'];

      Habe es nun so gemacht und nun tut es.
      Danke für die kompetente und schnelle Hilfe!

      Mit freundlchen Grüßen
      Hubertus

      1. Hi!

        $mod = $_GET['mod'];
        Habe es nun so gemacht und nun tut es.

        Laß diesen Unsinn.
        Es ist nicht nötig, den Inhalt einer Variablen noch einmal in einer anderen zu speichern.
        Das ist nur Speicherverschwendung.
        Arbeite einfach mit $_GET['mod'] und vergiss $mod.

        Und informiere dich unbedingt über die Einstellung register_globals in der php.ini.
        Möglicherweise gibt es noch ein paar andere Variablen in deinem Script, die es jetzt nicht mehr gibt.
        Eventuell versuchst du irgendwo den Wert von $PHP_SELF zu nutzen, wo es $_SERVER['PHP_SELF'] heißen müßte, o.ä..

        Schöner Gruß,
        rob

        1. Es ist nicht nötig, den Inhalt einer Variablen noch einmal in einer
          anderen zu speichern.

          Das können wir als Außenstehende wohl kaum beurteilen.

          Das ist nur Speicherverschwendung.

          Nicht unbedingt. Schon mal etwas von 'copy-on-write' gehört?

          Grüße

          1. Hi!

            Das können wir als Außenstehende wohl kaum beurteilen.

            Sicherlich könnte es Fälle geben, wo das Kopieren eventuell sinvoll wäre. Aber nach der gegebenen Beschreibung, scheint mir die Sache recht klar zu sein:
            Das Script funktioniert nicht mehr, weil auf dem neuen Server register_globals auf off gestellt ist.
            Anstelle jetzt zu Beginn seines Scriptes $var = $_POST['var']; zu schreiben, wäre es viel sinnvoller, direkt mit $_POST['var'] zu arbeiten.

            Das ist nur Speicherverschwendung.
            Nicht unbedingt. Schon mal etwas von 'copy-on-write' gehört?

            Ja, Copy-On-Write ist mir bekannt, aber ich sehe nicht, was das mit diesem Script zu tun hat.

            Schöner Gruß,
            rob

            1. Sicherlich könnte es Fälle geben, wo das Kopieren eventuell
              sinvoll wäre.

              Und genau daran wollte ich auch nur erinnern. Mir stößt es etwas
              säuerlich auf, wenn aus dem Blauen heraus irgendwelche scheinbar
              absoluten Thesen in den Raum gestellt werden. Auf den Begriff
              des Kopierens komme ich weiter unten noch mal zurück.

              Das Script funktioniert nicht mehr, weil auf dem neuen
              Server register_globals auf off gestellt ist.

              Das war zumindest eine sehr wahrscheinliche Möglichkeit; auf
              diesen Teil Deines Beitrages habe ich mich allerdings gar nicht
              bezogen.

              [...] wäre es viel sinnvoller, direkt mit $_POST['var'] zu arbeiten.

              Falls es bei einer einfachen Struktur und überschaubaren Bezeichnern
              bleibt, und falls die hier referenzierten Daten noch modifiziert werden,
              könnte es sich - unter Einbeziehung aller Aspekte, wie Lesbarkeit,
              Datensicherheit, Portierbarkeit und, ja, Performance - lohnen, direkt
              mit den Referenzen in den Superglobalen zu arbeiten (was auch bei mir
              häufig der Fall ist), aber weder Du noch ich können dazu aus unserer
              Position heraus eine definitive Aussage bezüglich eines uns unbekannten
              Skriptes treffen.

              Das ist nur Speicherverschwendung.
              Nicht unbedingt. Schon mal etwas von 'copy-on-write' gehört?
              Ja, Copy-On-Write ist mir bekannt, aber ich sehe nicht, was das
              mit diesem Script zu tun hat.

              PHP benutzt hauptsächlich zwei Mechanismen, um den Speicher für Variablen
              zu verwalten: die Referenzzählung ('reference counting') in Verbindung mit
              einer Symboltabelle, und eben jenes 'copy-on-write'. Letzteres bewirkt,
              daß neuer Speicher nicht schon bei Erteilung eines Alias zugeordnet wird,
              sondern erst dann, wenn sich die Daten an der zugeordneten Speicheradresse
              ändern:

              $alt = 'Ein Test.';
              $neu = $alt; // A

              A) Ein Alias/Link/eine Referenz (wie auch immer Du es nennen möchtest)
              names '$neu' wird für die Speicherstelle eingerichtet, auf die auch '$alt'
              verweist. Der Inhalt wird nicht kopiert, der Symboltabelle wird für die
              Adresse lediglich ein weiterer Anker und ein neuer Referenzwert hinzugefügt.

              $neu = 'Ein weiterer Test.'; // B

              B) Die nun abweichenden Daten werden an eine zur Verfügung stehende
              Speicheradresse geschrieben und nun exklusiv über '$neu' referenziert,
              das Alias '$neu' wird aus dem Eintrag der Symboltabelle für '$alt'
              entfernt, und dessen Referenzwert zurückgesetzt.

              Stark vereinfacht, natürlich. Der Punkt ist: bei 'A' wird weder kopiert
              noch irgendein Zeiger verändert. Das geschieht - wenn überhaupt - erst
              bei Modifikation der Daten in '$neu' - somit kann hier also auch nicht
              von Speicherverschwendung die Rede sein.

              Grüße

  2. Hi hubertus,

    Warum funktioniert es dann auf unserem richtigen Server nicht?
    Wie könnte ich es machen, dass die Varibalen doch übergeben werden (ich möchte aber das System beibehalten)?

    Wie greifst du auf "mod" zu? Ich tippe auf register_globals on/off.
    Diese Einstellung wird unterschiedlich sein in deinen verschiedenen Serverumgebungen.

    ciao
    romy

  3. Könntest du eventuell den genaueren Code posten, damit ich dir besser helfen kann.

    Welcher Provider?
    Handelt es sich um ein CMS?