Andreas: mehrere Parameter

Hallo,
mal eine grundsätzliche Frage: worin liegt der Unterschied zwischen folgenden beiden Zeilen?
action=dloadrubrik&rubrik=Abfrage&cat=Access
action=dloadrubrik;rubrik=Abfrage;cat=Access

Gruß Andreas

  1. Hallo,

    mal eine grundsätzliche Frage: worin liegt der Unterschied zwischen folgenden beiden Zeilen?
    action=dloadrubrik&rubrik=Abfrage&cat=Access
    action=dloadrubrik;rubrik=Abfrage;cat=Access

    Da sind einfach zwei verschiedene Trennzeichen.
    Das "&" muss _in_HTML_ immer als & codiert werden.
    Das ";" kann einfach so geschrieben werden, ist also
    etwas "autorenfreundlicher".

    Welche Trennzeichen vom verarbeitenden Skript erkannt werden,
    muss mit der Variable arg_separator.input _ausserhalb_
    des Skripts definiert werden, d.h. in der php.ini,
    httpd.conf oder .htaccess

    http://www.php.net/manual/en/function.ini-set.php

    Name:       arg_separator.input
    Default:    "&"
    Changeable: PHP_INI_SYSTEM|PHP_INI_PERDIR

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
  2. Hallo!

    mal eine grundsätzliche Frage: worin liegt der Unterschied zwischen folgenden beiden Zeilen?

    action=dloadrubrik&rubrik=Abfrage&cat=Access
    action=dloadrubrik;rubrik=Abfrage;cat=Access

    In der 1. Zeile kommen 2 "&" vor, in der 2. Zeile an Stelle dessen 2 ";".

    Wenn das URL-Parameter sein sollen, dann rufe mit diesen Parametern mal ein Script auf in dem nur folgendes steht:

    <?php
    echo '<pre>';
    print_r($_GET);
    ?>

    Dann siehst Du vielleicht noch einen Unterschied.

    Grüße
    Andreas

    1. Hallo,

      <?php
      echo '<pre>';
      print_r($_GET);
      ?>

      Also ist die erste Methode eine Trennung in 3 Parameter, und im 2. Fall 1 Parameter, der zusammengesetzt ist.
      Dann weiß ich jetzt Bescheid.

      Gruß und Danke,
      Andreas

      1. Hi!

        Also ist die erste Methode eine Trennung in 3 Parameter, und im 2. Fall 1 Parameter, der zusammengesetzt ist.
        Dann weiß ich jetzt Bescheid.

        Normalerweise schon, aber wie Thomas richtig sagt lässt sich das mit entsprechenden Rechten auch ändern. Die erste Version ist aber sicher die gebräuchlichere.

        Grüße
        Andreas

      2. Hallo,

        Also ist die erste Methode eine Trennung in 3 Parameter, und im 2. Fall 1 Parameter, der zusammengesetzt ist.

        Ich vermute, Du hast eine Variable
        $_GET['action']
        mit folgendem String als Inhalt:
        "dloadrubrik;rubrik=Abfrage;cat=Access"

        Das gilt aber nur fuer _diesen_ Server. Heute.

        Auf einem anderen Server kann es sein, dass
        der Admin auch das Semikolon ";" als Trennzeichen
        zugelassen hat; dann haette auch dieser Link
           blabla.php?action=dloadrubrik;rubrik=Abfrage;cat=Access
        "drei Parameter", die dann in PHP wie folgt vorliegen:
        $_GET['action'] mit dem Inhalt "dloadrubrik"
        $_GET['rubrik'] mit dem Inhalt "Abfrage"
        $_GET['cat']    mit dem Inhalt "Access"

        Es kann auch sein, dass der Admin Deines Servers
        das eines Tages aendert, dann ist es auch auf
        Deinem Server so...

        Gruesse,

        Thomas

        --
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
        Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
        1. Danke für die Information.
          Werde nur noch & verwenden, damit ich auf der sicheren Seite bin.

          Gruß Andreas

          1. Hallo,

            Werde nur noch & verwenden, damit ich auf der sicheren Seite bin.

            Auf der sicheren Seite bist Du damit, das stimmt.
            Das "&" ist das "traditionelle" Trennzeichen,
            und der Standard (Default) bei PHP.

            Denk daran, in HTML alle & als & zu schreiben.

            Alternativ koenntest Du auch in der .htaccess selbst
            definieren, dass sowohl das "&" als auch das ";"
            als Trennzeichen verarbeitet werden sollen:
              php_flag arg_separator.input "&;"

            So verstehe ich zumindest die Angaben auf diesen Seiten:
            http://www.php.net/manual/en/configuration.directives.php
            http://www.php.net/manual/en/function.ini-set.php

            Fuer die Parameter, welche PHP automatisch anhaengt,
            z.B. die PHPSESSID, sollte man - sofern man Wert auf
            valides HTML legt und Probleme vermeiden will - festlegen,
            dass PHP dort & ausgibt (statt dem defaultmaessigen &).
            In der .htaccess:
              php_flag arg_separator.output "&"

            mfg
            Thomas