amos89: Benutzername (das vor dem @) auslesen

das thema sagt schon alles! mmit welchem php-code kann ich den beutzer einer Seite auslesen
z.B.
max@www.mustermannn.de
möchte ich MAX in einer Variable speichern, wie geht das?

  1. hallo,

    das thema sagt schon alles!

    Nein, das "Thema" sagt gar nichts.

    mmit welchem php-code kann ich den beutzer einer Seite auslesen

    Das kommt darauf an, ob und wie sich der "Benutzer" denn zu erkennen gibt. Beschäftige dich mit den Umgebungsvartiablen, wobei dir phpinfo() hilfreich sein kann.

    max@www.mustermannn.de
    möchte ich MAX in einer Variable speichern, wie geht das?

    Wenn dein "Benutzer" sich in ein Formular mit einem Eingabefeld, das "name" heißt, eintragen muß, steht seine Eingabe in $name. Beschäftige dich mit dem grundsätzlichen Aufbau von Variablen in PHP.

    Grüße aus Berlin

    Christoph S.

    1. Hi,

      das thema sagt schon alles!
      Nein, das "Thema" sagt gar nichts.

      in diesem Fall sagt es aber schon recht viel: PHP impliziert HTTP, und in HTTP-URLs ist ein "@" vor dem Hostnamen, also dort, wo in anderen URL-Schemata ein Benutzername steht, explizit verboten - und zudem seit Jahren auch nicht mehr über die User-Interfaces wichtiger Browser unterstützt.

      Wenn dein "Benutzer" sich in ein Formular mit einem Eingabefeld, das "name" heißt, eintragen muß, steht seine Eingabe in $name.

      Wieso sollte das passieren?

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Hi Cheatah,

        [...] in HTTP-URLs ist ein "@" vor dem Hostnamen, also dort, wo in anderen URL-Schemata ein Benutzername steht, explizit verboten

        Richtig.

        und zudem seit Jahren auch nicht mehr über die User-Interfaces wichtiger Browser unterstützt.

        Falsch.

        Firefox erkennt die Notation http://user:password@example.org und fragt mich per Meldungsfenster, ob ich mich mit diesen Credentials anmelden möchte.

        Opera ebenso (zumindest noch die 7er-Versionen).

        Und dem IE6 (wichtig zumindest aufgrund seiner Verbreitung) kann man über einen Registry-Eintrag erlauben, wenn man möchte, derartige URLs ungefragt in einen kompletten HTTP-Request mit HTTP-AUTH umzusetzen, wie es schon seine Vorgänger taten.

        Wieso sollte das passieren?

        Gute Frage. ;-)
        Die meisten Leute schreiben leider nicht jeden Schritt, den sie denken. Gerade das macht es uns ja oft so schwer, aus konfus formulierten Fragen oder sogenannten Problembeschreibungen herauszulesen, was der Schreiber wirklich meint.

        Schönen Abend noch,

        Martin

        1. Hi,

          und zudem seit Jahren auch nicht mehr über die User-Interfaces wichtiger Browser unterstützt.
          Falsch.

          nein, richtig - die Menge der meisten IE 6 Installationen halte ich durchaus für wichtig. Ich habe bewusst kein Absolutum gewählt.

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. n'Abend!

            und zudem seit Jahren auch nicht mehr über die User-Interfaces wichtiger Browser unterstützt.
            Falsch.
            nein, richtig - die Menge der meisten IE 6 Installationen halte ich durchaus für wichtig.

            Moment!
            Erstens hast du in deinem Originaltext mit keinem Wort den Verbreitungsgrad erwähnt, sondern nur von "User-Interfaces wichtiger Browser" gesprochen. Diese Formulierung hebt IMHO nicht auf die Population ab, sondern auf eine zu betrachtende Anzahl der unterschiedlichen Spezies.

            Wir sind uns also offensichtlich einig, dass der IE6 kraft seiner marktbeherrschenden Verbreitung zu den wichtigen Browsern gezählt werden muss.
            Und genau dieser Browser unterstützt sehr wohl die verbotene, wenn auch bequeme Notation von Username und Passwort in der URL (ebenso wie die anderen beiden von mir genannten Browser). Zwar ist die Interpretation solcher URLs im IE6 per Defaulteinstellung deaktiviert. Das ändert aber für mich nichts an der Feststellung, dass er es im Prinzip unterstützt.

            Ich habe bewusst kein Absolutum gewählt.

            Na, na? "nicht mehr" drückt ein klares und ziemlich absolutes "nein" aus.

            Schönen Abend noch,

            Martin

            1. hi,

              Wir sind uns also offensichtlich einig, dass der IE6 kraft seiner marktbeherrschenden Verbreitung zu den wichtigen Browsern gezählt werden muss.

              mag sein, ja.

              Und genau dieser Browser unterstützt sehr wohl die verbotene, wenn auch bequeme Notation von Username und Passwort in der URL (ebenso wie die anderen beiden von mir genannten Browser). Zwar ist die Interpretation solcher URLs im IE6 per Defaulteinstellung deaktiviert. Das ändert aber für mich nichts an der Feststellung, dass er es im Prinzip unterstützt.

              und wenn wir dann mal die menge der IEs betrachten, die diesbezüglich noch in der default-konfiguration betrieben werden, im vergleich zu der derer, die wie von dir erwähnt anders konfiguriert wurden, so dass sie das ohne fehlermeldung unterstützen - wie viel "marktbeherrschung" bleibt dann für letztere gruppe noch übrig ...?

              gruß,
              wahsaga

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

                und wenn wir dann mal die menge der IEs betrachten, die diesbezüglich noch in der default-konfiguration betrieben werden, im vergleich zu der derer, die wie von dir erwähnt anders konfiguriert wurden, so dass sie das ohne fehlermeldung unterstützen - wie viel "marktbeherrschung" bleibt dann für letztere gruppe noch übrig ...?

                Ich nehme an, ungefähr Null.  :)
                Aber das ist nicht meine Sichtweise.
                Ich sage: Wenn ein Stück Software eine bestimmte Fähigkeit hat, dann ist das unabhängig von äußeren Einwirkungen, die die Voraussetzung für diese Fähigkeit eliminieren.
                Wenn mein Auto z.B. einen Getriebeschaden hat, dann ändert das nichts daran, dass ich grundsätzlich mit einem Schaltgetriebe umgehen kann.

                So long,

                Martin

                1. hi,

                  Ich sage: Wenn ein Stück Software eine bestimmte Fähigkeit hat, dann ist das unabhängig von äußeren Einwirkungen, die die Voraussetzung für diese Fähigkeit eliminieren.

                  wenn man irgendwo in der registry rumfummeln muss, um eine software austricksender weise zu "konfigurieren", dann halte ich das nicht mehr für eine generelle fähigkeit dieser software.

                  Wenn mein Auto z.B. einen Getriebeschaden hat, dann ändert das nichts daran, dass ich grundsätzlich mit einem Schaltgetriebe umgehen kann.

                  es bedeutet aber, dass dein auto nicht fahrtüchtig ist.
                  und als vergleich zu obiger aussage: ja, vielleicht kann dein auto auch fliegen, wenn du es mit genügen helium befüllt kriegst - deshalb ist das aber sicher keine generelle "fähigkeit", die du deinem auto bescheinigen möchtest.

                  gruß,
                  wahsaga

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

                    wenn man irgendwo in der registry rumfummeln muss, um eine software austricksender weise zu "konfigurieren", dann halte ich das nicht mehr für eine generelle fähigkeit dieser software.

                    Das sehe ich nicht so. Als Windows-User habe ich mich inzwischen daran gewöhnt, dass die Konfiguration einer Software per Registry-Eintrag ein ganz normaler Vorgang ist (das soll nicht heißen, dass ich das gut finde).
                    Außerdem geht es in diesem Fall darum, eine mutwillig gesetzte Sperre wieder zu lösen.

                    Wenn mein Auto z.B. einen Getriebeschaden hat, dann ändert das nichts daran, dass ich grundsätzlich mit einem Schaltgetriebe umgehen kann.
                    es bedeutet aber, dass dein auto nicht fahrtüchtig ist.

                    Oder vielleicht nur noch im zweiten Gang. So wie ein IE6, der mit der genannten URL-Blockade eine empfindliche Einschränkung des Bedienungskomforts hat. Und ich bin heilfroh, dass man diesen Schaden so leicht beheben kann.

                    und als vergleich zu obiger aussage: ja, vielleicht kann dein auto auch fliegen, wenn du es mit genügen helium befüllt kriegst - deshalb ist das aber sicher keine generelle "fähigkeit", die du deinem auto bescheinigen möchtest.

                    Nicht alles, was hinkt, ist ein Vergleich. :)

                    Gute Nacht,

                    Martin

      2. hallo Cheatah,

        Wenn dein "Benutzer" sich in ein Formular mit einem Eingabefeld, das "name" heißt, eintragen muß, steht seine Eingabe in $name.
        Wieso sollte das passieren?

        Nimm an, im Formular steht sowas:
          <input type="text" name="name">
        Dann kannst du, falls das nach deinem Wunsch ein "required"-Feld ist, von der Benutzereingabe bereits Scriptreaktionen abhängig machen:
          if ($name) {tu was Vernünftiges;}
          if (!$name) {hau ihm eine runter;}
        Die Eingabe kann in einer Funktion auch mit
          $name = $GLOBALS['name'];
        verwendet werden. Ich mache das schon eine ganze Weile und wüßte nicht, warum das nicht funktionieren sollte.

        Grüße aus Berlin

        Christoph S.

        1. echo $begrüßung;

          if ($name) {tu was Vernünftiges;}
            if (!$name) {hau ihm eine runter;}
          ... wüßte nicht, warum das nicht funktionieren sollte.

          weil register_globals per default auf 0 (= off) steht

          Ich mache das schon eine ganze Weile ...

          weil der Defaultwert für register_globals früher mal 1 (= on) war

          echo "$verabschiedung $name";

          1. hallo dedlfix,

            ... wüßte nicht, warum das nicht funktionieren sollte.
            weil register_globals per default auf 0 (= off) steht

            Na und? Damit wird ein Script doch umgehen können. Lesestoff dazu: http://forum.de.selfhtml.org/archiv/2005/7/t111999

            Grüße aus Berlin

            Christoph S.

            1. echo $begrüßung;

              hallo dedlfix,

              ... wüßte nicht, warum das nicht funktionieren sollte.
              weil register_globals per default auf 0 (= off) steht

              Na und? Damit wird ein Script doch umgehen können.

              Ich sehe hier einen für mich unauflösbaren Widerspruch in deinen Aussagen. Einerseits setzt du hier unbedingt auf den eingeschalteten register_globals-Automatismus um gleich darauf zu behaupten, dass Scripte auch mit dem ausgeschalteten Zustand umgehen können müssen.

              Als kleinste Gemeinsamkeit wäre nun Off anzusehen und dann geht $name nunmal nicht automatisch.

              echo "$verabschiedung $name";

        2. Hallo Christoph,

          <input type="text" name="name">
          [...]
            if ($name) {tu was Vernünftiges;}

          nein, der Wert aus dem Formular steht dann in $_GET['name'] bzw. $_POST['name'] (je nach dem welchen Wert das method-Attribut des Formulars hat)

          Die Eingabe kann in einer Funktion auch mit
            $name = $GLOBALS['name'];
          verwendet werden.

          Unsinn. $_GET und $_POST sind superglobal und können überall verwendet werden - da muss man nicht mit $GLOBALS rumpfuschen.

          Ich mache das schon eine ganze Weile und wüßte nicht, warum das nicht funktionieren sollte.

          weil register_globals abgeschaltet sein kann? - dann funktioniert der Zugriff mit $name nicht mehr.

          Grüße aus Nürnberg
          Tobias

  2. Hallo amos89,

    das thema sagt schon alles! mmit welchem php-code kann ich den beutzer einer Seite auslesen
    z.B.
    max@www.mustermannn.de
    möchte ich MAX in einer Variable speichern, wie geht das?

    $var = "MAX";

    Wenn du "max" aus der obigen Zeichenfolge extrahieren möchtest, solltest du dir die Stringfunktionen in der PHP-Dokumentation anschauen.

    Grüße aus Barsinghausen,
    Fabian

    --
    "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>