M.Dessel: Variablenübergabe

Hallo zusammen,

hat jemand eine Idee warum ich mit diesem Code die Variable $id nur
an das Formular übergeben kann, wenn sie statisch vergebe?

$id=123;    //Das funktioniert

Wenn ich versuche dies über eine Input-Box zu übergeben nimmt er sie nicht.

Print ("<input type="text" name="id" size="30" maxlength="30" value="$id")> ");

//Das funktioniert nicht

Index.php
<?php  include("ausgabe.php");

global $id;

Print("<html> ");
Print(" <head> ");
Print("  <title>PHP Test</title> ");
Print(" </head> ");
Print(" <body> ");

$id=123;

Print ("<input type="text" name="id" size="30" maxlength="30" value="$id")> ");

print("            <input type="hidden"");
print("                   name="id"");
print("                   value="$id"");
print("            >\n");

print("        <input type="button"
                      class="buttons"
                      value="abc"
                      onclick="javascript:location.href='".$HTTP_SERVER_VARS['PHP_SELF']."?action=edit1&id=$id';">");

if ($_REQUEST['action'] == "edit1") {
  edit1_entry($_REQUEST['id']);
}

Print(" </body> ");
Print("</html> ");

?>

ausgabe.php
<?php

function edit1_entry($id) {
global $action;
global $HTTP_SERVER_VARS;
global $HTTP_GET_VARS;
global $HTTP_POST_VARS;

print("$id");

} // endfunction edit1_entry

?>

Über eure Hilfe würde ich mich sehr freuen.

Gruss Manfred

  1. hi,

    hat jemand eine Idee warum ich mit diesem Code die Variable $id nur
    an das Formular übergeben kann, wenn sie statisch vergebe?
    Wenn ich versuche dies über eine Input-Box zu übergeben nimmt er sie nicht.

    Weil du register_globals=off nicht berücksichtigt hast - das Thema hatten wir gerade erst wieder: https://forum.selfhtml.org/?t=137669&m=894281

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi Wahsaga,
      danke für Deine schnelle Anwort.

      Ich habe Deinen Hinweis gelesen und habe die genannten Links gelesen.
      Wenn ich das richtig gedeutet habe müßte dies an irgendwelchen Einstellungen am Server liegen, die bei mir nicht richtig eingestellt sind?
      Wenn ja, habe ich ein Problem, denn ich habe auf diesem Server keine Root-Rechte sondern kann nur den PHP-Code hochladen.
      Gibt es dennoch eine Möglichkeit?

      Gruß
      Manfred

      1. hi,

        Wenn ich das richtig gedeutet habe müßte dies an irgendwelchen Einstellungen am Server liegen, die bei mir nicht richtig eingestellt sind?

        Nein.
        Die Einstellung ist gut so, wie sie ist (andersherum könnte sie unsicher sein).

        Was noch nicht richtig ist, ist deine Art, die Formularübergaben in Empfang zu nehmen.

        Wenn ja, habe ich ein Problem, denn ich habe auf diesem Server keine Root-Rechte sondern kann nur den PHP-Code hochladen.
        Gibt es dennoch eine Möglichkeit?

        Ja, richtig machen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi Wahsaga,

          es funktioniert ja im grundegenommen, denn wenn ich statisch einen Wert zuweise
          $id=123;

          dann wird der Wert auch richtig in Emfang genommen.Nur nicht wenn dieser durch die InputBox eingegeben wird.

          Gruß Manfred

          1. Hi Wahsaga,

            es funktioniert ja im grundegenommen, denn wenn ich statisch einen Wert zuweise
            $id=123;

            dann wird der Wert auch richtig in Emfang genommen.Nur nicht wenn dieser durch die InputBox eingegeben wird.

            Gruß Manfred

            RTFM
            Mal ehrlich, wenn Du hier keine falsche Email-Adresse angegeben hast, machst Du das beruflich?
            Und zwar nicht erst seit gestern? Meiner Meinung nach ist es Deine Pflicht Deinen Kunden gegenüber,
            Deinen Wissensstand, insbesondere was Sicherheit angeht, auf dem Laufenden zu halten.
            Und wenn wahsaga Dir schon einen Link in die Hand drückt, dann lies dort auch mal
            gründlich nach. Deine Frage wird dort beantwortet, direkt in dem Thread.

            Sigh...

            1. Hi Karin,

              selbst wenn man beruflich im IT-Bereich tätig ist, sollte es einen nicht hindern, sich in neue Aufgabengebiete einzuarbeiten.
              Obwohl ich mir mit der Zeit schon eingies Wissen aneignen konnte, kann ich von mir keineswegs behaupten, daß ich auf diesem Gebiet schon fit bin (Habe ich auch nie behauptet.
              Ich wußte nicht, daß dies verboten ist.
              Ich war bis jetzt der Meinung, daß hier eine geeignete Plattform gegeben ist, auf der man diese Wissenslücken schließen kann.

              Außerdem bilden diese beiden Codeteile wohl wirklich kein Programm,
              daß man irgendeinem Kunden verkaufen könnte.
              Ich hoffe ich habe meine Meinung zu Genüge Kund getan.
              Wahrscheinlich muß ich mich demnächst unter einer Pseudo-Mail melden.
              (Wäre Schade)

              Gruß Manfred

              1. Hi Karin,

                selbst wenn man beruflich im IT-Bereich tätig ist, sollte es einen nicht hindern, sich in neue Aufgabengebiete einzuarbeiten.

                Natürlich nicht.

                Obwohl ich mir mit der Zeit schon eingies Wissen aneignen konnte, kann ich von mir keineswegs behaupten, daß ich auf diesem Gebiet schon fit bin (Habe ich auch nie behauptet.

                Da Du unter Deinen "Skills" PHP auflistest, bin ich davon ausgegangen.

                Ich wußte nicht, daß dies verboten ist.

                Ist es natürlich auch nicht.

                Ich war bis jetzt der Meinung, daß hier eine geeignete Plattform gegeben ist, auf der man diese Wissenslücken schließen kann.

                Ist es auch. Aber Du hast bestimmt die Regeln gelesen und weißt, dass erstmal
                Eigeninitiative (Manual, Forensuche, Google) gefragt ist. Ich will hier keinen
                Flamewar vom Zaun brechen, aber das Thema Deiner Frage ist einfach schon so oft
                durchgenudelt worden, dass ich erstmal geschaut habe, wer denn hinter der Frage steht
                (bevor ich "RTFM" antworte...). Vielleicht kannst Du ja verstehen, dass mir dann
                bei einem (aus meiner Sicht) "alten Hasen" wie Dir die Augenbrauen hochgegangen sind.

                LG Karin

                1. Hi Karin,

                  sorry nochmal

                  1. ist das hier ein Forum.
                  2. Wenn ich wie von einem alten Hasen entfernt.
                  3. Die Eigeninitative war vorhanden (Der statische Übergabe hat ja funktioniert nur die über die Input-Box nicht)-> Wäre vielleicht einem alten Hasen auch nicht passiert.
                  4. Konnte mir selbst der Link nicht weiterhelfen.

                  Ansonsten tut's mir Leid, wenn vielleicht die eine oder andere Frage in einem etwas anderen Zusammenhang von jemand anderm doppelt gestellt wird.
                  Anstatt die Skills anderer Leute zu durchsuchen, tust Du vielleicht besser daran, die nötige Hilfestellung zu geben oder es bleiben zu lassen.

                  Gruß Manfred

                  1. Hi,

                    Anstatt die Skills anderer Leute zu durchsuchen, tust Du vielleicht besser daran, die nötige Hilfestellung zu geben

                    Nein, das *suchen* ist deine Aufgabe. Ich formuliere es mal ganz drastisch: Es ist eine Frechheit irgendwelche fremden Leute mit einer Frage zu belästigen (auch wenn viele hier gerne und selbstverstänlich Antworten ist es eine Belästigung) wenn man vorher und währenddessen nicht alles getan hat um die Antwort selber zu finden und die Leute, die hier kostenlos für dich ihre Zeit zu Opfern so wenig wie möglich zu belasten.

                    1. Konnte mir selbst der Link nicht weiterhelfen.

                    Dann bist du beim Programmieren falsch! Such dir einen Job bei dem man sich nicht selber informieren muss. Schon alleine das hier gefallene Stichwort "REGISTER_GLOBALS" in google gesteckt spuckt mehr als genug verständlicher erklärungen aus und selbst ein absoluter PHP Anfänger sollte mit dem verlinkten Dokument etwas anfangen können, wenn man sich denn bemüht!

                    Marc

                    1. Hi,

                      Du hälst Dich wahrscheinlich überschlau.Also Deiner Meinung nach ist
                      ein Forum nicht da um irgendwelche Fragen zu beantworten (Oder zu mindest keine die Deiner Würdig sind), denn es steht ja alles in irgendwelchen Handbüchern oder Webseiten.
                      Tut mir Leid, auf diese Unterhaltungsebene lasse ich nicht herab.
                      Wenn es so unter Deinem Niveau ist, dann mache doch bitte einen Bogen um eine Fragen, danke.

                      Gruß
                      Manfred

                      1. hi,

                        Du hälst Dich wahrscheinlich überschlau.

                        Man muss nicht überschlau sein, um sich Wissen aus vorhandenen und guten Quellen selbst anzueignen.

                        Also Deiner Meinung nach ist ein Forum nicht da um irgendwelche Fragen zu beantworten (Oder zu mindest keine die Deiner Würdig sind), denn es steht ja alles in irgendwelchen Handbüchern oder Webseiten.

                        Ist es denn eines Dipl.Ings. "würdig", sich triviale Sprachgrundlagen nicht aus dem zugehörigen Manual erschließen zu können?

                        gruß,
                        wahsaga

                        --
                        /voodoo.css:
                        #GeorgeWBush { position:absolute; bottom:-6ft; }
                        1. hi,
                          ich weiß zwar nicht was mein Dipl.Ing. mit dieser Sache zu tun hat, aber ich kann auch Dir nur ein Rat geben:

                          Wenn es so unter Deinem Niveau ist, dann mache doch bitte einen Bogen um eine Fragen, danke.

                          Gruß
                          Manfred

                          1. Hi,

                            ich weiß zwar nicht was mein Dipl.Ing. mit dieser Sache zu tun hat, aber ich kann auch Dir nur ein Rat geben:

                            Vielleicht ist wahsaga einfach der irreführenden Vorstellung aufgesessen das ein akademischer Titel eine gewisse Reife (sowohl auf charakterlichem als auch geistigen Niveau) mit sich bringt. Solche Schlußfolgerungen sind natürlich Blödsinn.

                            Marc

                      2. Hallo,

                        Also Deiner Meinung nach ist ein Forum nicht da um irgendwelche Fragen zu beantworten ...

                        richtig, nicht einfach "irgendwelche" Fragen. Ein Forum ist dazu da, Fragen zu erörtern, die sich nicht ohne weiteres aus anderen, allgemein zugänglichen Quellen (SELFHTML, sonstige Online-Doku, Google, Wikipedia, etc.) beantworten lassen.

                        Ciao,
                         Martin

                        --
                        Du kannst dem Leben nicht mehr Tage geben.
                        Aber dem Tag mehr Leben.
  2. Hellihello

    var_dump $_REQUEST;

    hilft vielleicht was.

    frankx

    1. Hallo Frankx,

      wie baue ich das denn ein und wo. Vor allem was bewirkt es???

      Gruß Manfred

      1. Hallo Frankx,

        wie baue ich das denn ein und wo. Vor allem was bewirkt es???

        Selbst ist der Mann!

        Marc

        1. Hmpf, wenn man einmal auf "Vorschau generieren" verzichtet...

          Selbst ist der Mann!

  3. Hallo,

    ich versuch es mal kurz und einfach:

    Sämtliche Variablen die du aus Formularen etc. bekommst, mußt du aus den entsprechenden superglobalen assoziativen Arrays auslesen. Diese Werte sind danach zu prüfen/zu behandeln. Ansonsten besteht z.B. die Möglichkeit dein Layout zu sprengen etc.

    Ein weiterer Grund dafür dass register_globals deaktiviert sein sollte ist der, dass damit Variablen in deinem Code event. überschrieben werden können oder neue, die du gar nicht haben willst in den Code kommen.

    Weitere Details sind im PHP Manual, dass auf php.net zu bekommen ist zu finden. Ich empfehle die englische Version, da diese stellenweise ausführlicher ist.

    Gruß

    Stareagle

    1. Hi Stareagle,

      auch Dir ein Dankeschön. Ich habe von anderer Stelle auch schon ein Rat in dieser Hinsicht bekommen.
      So ist mein Bild von diesem Forum doch noch nicht ganz getrübt.

      Gruß
      Manfred

  4. echo $begrüßung;

    hat jemand eine Idee warum ich mit diesem Code die Variable $id nur
    an das Formular übergeben kann, wenn sie statisch vergebe?
    $id=123;    //Das funktioniert
    Wenn ich versuche dies über eine Input-Box zu übergeben nimmt er sie nicht.

    Es ist schon seit langem nicht mehr so, dass PHP automatisch Variablen für übergebene GET/POST/COOKIE-Parameter anlegt. Und das ist auch gut so, weil zusammen mit schlampiger Programmierung dies zu Sicherheitsproblemen führen kann. Früher war das Feature Register Globals standardmäßig aktiviert und auch bei vielen Providern hielt/hält sich diese Einstellung noch lange/immer, weswegen auch heute noch viele Anfänger und nicht mehr zeitgemäße Tutorials davon ausgehen, dass das bei PHP so üblich sei. Du solltest auch nicht mehr auf dieses Feature setzen, denn, abgesehen von der Sicherheitsproblematik, lässt PHP6 nicht mehr allzu lange auf sich warten und wird dieses Feature nicht mehr kennen.

    function edit1_entry($id) {
    global $action;

    global benötigt man nur innerhalb von Funktionen, um im globalen Adressraum liegende Variablen ansprechen zu können. Das ist aber kein besonders guter Stil, weil idealerweise Funktionen abgeschlossene Gebilde sein sollten, die nur über Parameter und Rückgabewerte mit ihrer Umgebung kommunizieren.

    global $HTTP_SERVER_VARS;
    global $HTTP_GET_VARS;
    global $HTTP_POST_VARS;

    $HTTP_*_VARS sind ebenfalls "hornalte Kamellen" die mittlerweile durch die superglobalen $_SERVER, $_GET, $_POST etc. ersetzt wurden. Superglobal bedeutet, dass sie in jedem Kontext zur Verfügung stehen, also auch innerhalb von Funktionen.

    echo "$verabschiedung $name";

    1. Hi Dedlfix,

      danke für Deine Antwort, so stelle ich mir eine Antwort vor die man in einem Forum postet und wie ich sie wenn ich die Ahnung hätte auch
      geben würde.
      Das diese Methode veraltet ist und eine Sicherheitslücke darstellt wußte ich nicht. Also werde ich meine Variablen schön wieder mit POST und GET übertragen.

      Gruß
      Manfred