If|else --> warum interpretieren das einige Server anders als gewollt

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

  • If|else --> warum interpretieren das einige Server anders als gewollt

    Ich habe ein ganz eigenartiges Problem. Folgende Zeile:

    PHP-Code:
    if($_GET["action"]) $action $_GET["action"];
    else 
    $action $_POST["action"]; 
    Wenn ich das Formular per Get absende erhält die Variable den entsprechenden Wert, ebenso bei Post. Auf einigen wenigen Servern wird aber in jedem Fall der Wert aus dem Array $_GET zugewiesen, selbst wenn ich das Formular mit der Methode Post versende.

    Ich persönlich kann mir das Problem nicht erklären und würde gerne wissen, wie sich das Problem beheben lässt. Der Versand per Post ist zwingend notwendig, das innerhlab des Formulares ein Upload stattfindet.

    Wie kann ich das Problem nun beheben?

    Danke,
    Stephan
    [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
    [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

  • #2
    Sachen die dabei ne Rolle spielen könnten:
    1. Für Datei-Uploads gibt es den Superglobal $_FILES
    2. Wie sieht dein Formular aus? im action-Parameter eines Formulars haben GET-Parameter nix zu suchen!
    3. Browser & Version
    4. Die php.ini könnte rein theoretisch auch noch mitspielen; aber bei deiner Fehlerbeschreibung halt ich das für unwahrscheinlich; lassen wir also erstmal aus.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Original geschrieben von Titus
      Sachen die dabei ne Rolle spielen könnten:
      1. Für Datei-Uploads gibt es den Superglobal $_FILES
      2. Wie sieht dein Formular aus? im action-Parameter eines Formulars haben GET-Parameter nix zu suchen!
      3. Browser & Version
      4. Die php.ini könnte rein theoretisch auch noch mitspielen; aber bei deiner Fehlerbeschreibung halt ich das für unwahrscheinlich; lassen wir also erstmal aus.
      Es scheint als würde der ELSE-Part ignoriert werden

      1.) wird verwendet, der Dateiupload ist nicht das Problem
      2.)
      Code:
      <form action="index.php" method="POST" ...>
      ...
      <input type="hidden" name="action" value="send_newsletter">
      ...
      3.) Bei mir daheim funktioniert es mit meinem Browser, auf einen anderen Server funktioniert es mit demselben Browser nicht.

      4.) Vermutlich, wüsste nicht was
      [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
      [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

      Kommentar


      • #4
        überprüf mal welche PHP Version auf dem Server liegt
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar


        • #5
          Original geschrieben von TBT
          überprüf mal welche PHP Version auf dem Server liegt
          4.3

          Ich habe den Betroffenen eine abgeänderte Variante meines Scriptes zugesandt.

          PHP-Code:
          $action $_REQUEST["action"]; 
          Mit etwas Glück funktioniert es.

          Aber den Fehler kann ich dennoch nicht nachvollziehen
          [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
          [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

          Kommentar


          • #6
            Re: If|else --&gt; warum interpretieren das einige Server anders als gewollt

            Original geschrieben von Crake
            Ich habe ein ganz eigenartiges Problem. Folgende Zeile:

            PHP-Code:
            if($_GET["action"]) $action $_GET["action"];
            else 
            $action $_POST["action"]; 
            Wenn ich das Formular per Get absende erhält die Variable den entsprechenden Wert, ebenso bei Post. Auf einigen wenigen Servern wird aber in jedem Fall der Wert aus dem Array $_GET zugewiesen, selbst wenn ich das Formular mit der Methode Post versende.

            Bedeutet dass, das der Wert $_GET['action'] gesetzt ist?
            bzw welcehr wert wird da zu gewiesen???
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Grundsätzlich wird der Varioable "action" ein Wert mit der Methode GET zugewiesen. (Navigation)

              Bei einem Formular mit Dateiupload verwende ich Post und weise der Variable Action mit einem versteckten Formularelement einen Wert zu. Es funktionioert ja auch, nur auf einer anderen Serverkonfiguration (nicht meine) leider nicht.
              [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
              [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

              Kommentar


              • #8
                versuche mal bitte testweise, dem input-feld einen anderen namen als "action" zu geben - hab letzte tage von einem fall gelesen, wo genau das probleme machte, weil es irgendwie mit dem attribut "action" im form-tag kollidierte (frag mich nicht mehr wieso ...).
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Daran scheint es nicht zu liegen. $_REQUEST["action"] funktioniert übrigens auch nicht.

                  Benutze ich folgenden Code:

                  PHP-Code:
                  <form action="test2.php" method="POST">
                  <input type="hidden" name="action" value="ok">
                  <input type="hidden" name="id" value="ok">
                  <input type="Submit" name="" value="Absenden">
                  </form><br><br>

                  <b>Ausgabe:</b>
                  <?php
                  echo "<br>Action: " $action;
                  echo 
                  "<br>POST-Action: " $_POST["action"];
                  echo 
                  "<br>REQUEST-Action: " $_REQUEST["action"];

                  echo 
                  "<br><br>Id: " $id;
                  echo 
                  "<br>POST-Id: " $_POST["id"];
                  echo 
                  "<br>REQUEST-Id: " $_REQUEST["id"];
                  ?>
                  wird jedoch überall "ok" ausgegeben.
                  Ich verstehe die Welt nicht mehr
                  [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
                  [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

                  Kommentar


                  • #10
                    mach doch ma in deinem script print_r($_POST) bzw $_GET und schau ma ob sich da evtl was überschneidet..
                    oder versuch ma was anderes zu nehmen als action

                    mfg

                    Kommentar


                    • #11
                      An dem action kann es eigentlich nicht liegen, siehe letztes Codebeispiel.

                      Kann man das Problem evtl. auf den Dateiupload und der damit verbundenen multitype-Deklaration des Formulares zurückführen?
                      [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
                      [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

                      Kommentar


                      • #12
                        wäre mir neu aber probieren geht über studieren

                        mfg

                        OffTopic:
                        yeah iam the devil 666 posts

                        Kommentar


                        • #13
                          Original geschrieben von Trashar
                          wäre mir neu aber probieren geht über studieren
                          Mir ehrlich gesagt auch
                          Ich arbeite schon seit längerem auch beruflich mit PHP, aber verstehen tu ich das nicht

                          Edit: Habe das enctype entfernt und es funktioniert
                          Zuletzt geändert von Crake; 30.09.2003, 20:06.
                          [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
                          [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

                          Kommentar


                          • #14
                            Das Thema hier hat mich beschäftigt und nach einigem Suchen, habe ich (glaube ich) die Erklärung gefunden.
                            Wenn man das Array $_REQUEST benutzt, so kann man in der php.ini Regeln definieren, welche Variablen aus welchem der Arrays ($Get, $Post,...) in welcher Reihenfolge über $_REQEUST geliefert werden sollen.
                            Dies kann man über die Einstellung "variables_order" beinflussen.

                            Hat man eine gleichnamige Variable sowohl in $_GET als auch in $_POST definiert (und diese können ja durchaus unterschiedliche Werte haben), so wird hier geregelt, welchem Wert der Vorzug (bei Einbindung über $_REQUEST) gegeben werden soll.

                            experts-exchange
                            variables_order string
                            Set the order of the EGPCS (Environment, GET, POST, Cookie, Server) variable parsing. The default setting of this directive is "EGPCS". Setting this to "GP", for example, will cause PHP to completely ignore environment variables, cookies and server variables, and to overwrite any GET method variables with POST-method variables of the same name.
                            Oder Klartext auf deutsch *g*:
                            eine Einstellung des Wertes "variables_order" auf den Wert "GP" würde bedeuten, dass alle Werte der Umgebung, aus Cookies und vom Server ignoriert werden. Lediglich die Variablen aus der GET- und POST-Umgebung würden geliefert, wobei bei gleichnamigen Variablen der Wert der POST-Umgebung zurückgeliefert werden würde (und der Wert aus GET damit überschrieben wird).
                            Uff, was für ein Satz.

                            Also lässt sich das unterschiedliche Verhalten der Server letztlich auf eine andere Einstellung des Wertes "variables_order" in der Konfiguration zurückführen.

                            Kommentar


                            • #15
                              Wäre zu einfach gewesen. Der Server hat den Versand des Formulares mit enctype="multipart/form-data" nicht unterstützt. Nach Entfernen dieser Zeile funktionierte alles reibungslos. Leider ist somit kein Dateiupload mehr möglich.

                              Gibt es da evtl. eine andere Variante?
                              multipart/mixed und multipart/parallel funktionieren nicht.
                              [COLOR=red]Gesellschaftsforum.net[/COLOR] - Projekt zur Wiederbelebung der Diskussionskultur im Internet
                              [COLOR=orange]1st News[/COLOR] - Das Newsletterscript für den professionellen Einsatz

                              Kommentar

                              Lädt...
                              X