Hanni: benutzer-registrierung

hallo,

ich habe ende 2003 ein kleines forum bei rapidforum.de angemeldet (http://14815.rapidforum.com/).
Jetzt bin ich auf die glorreiche idee gekommen, dieses forum in eine website einzubinden, die ich selbst erstellen will. aus benutzerfreundlichen gründen stelle ich mir vor dass sich alle user nur einmal einloggen müssen und dann in allen bereichen der website zugriff mit ihren accounts haben, bzw dass sie automatisch im rapidforum eingeloggt werden.

die passwörter der user des forums wären zu vernachlässigen da ich jedem benutzer der website manuell ein pw mit user fürs forum zuweise, welches sie dann nichtmal kennen bräuchten.

so weit hab ich mir das bisher überlegt. jetzt habe ich allerdings keine ahnung wie ich das umsetzen soll (und bei google oder mit der forumsuche hier bin ich auch nicht weitergekommen)

danke,
hanni

  1. Hi,

    jetzt habe ich allerdings keine ahnung wie ich das umsetzen soll

    wie funktioniert der Login-Mechanismus bei Rapidforum?

    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,

      jetzt habe ich allerdings keine ahnung wie ich das umsetzen soll

      wie funktioniert der Login-Mechanismus bei Rapidforum?

      Cheatah

      ich weis nur was im quelltext zum einloggen steht:

      <form action="/" method="post">
      <input type="text" name="userid" size="7" class="input">
      <input type="password" name="password" size="7" class="input">
      <input type="submit" name="login" value="Login" class="input">
      </form>
      <!--ich hoffe das wird angezeigt-->

      wirklich was damit anfangen kann ich nicht.

      MfG hanni

      1. Hallo hanni.

        ich weis nur was im quelltext zum einloggen steht:

        Kommst du überhaupt an den PHP-Quelltext?
        Den brauchst du schließlich um das System ein bisschen zu verändern...
        Oder wie komfortabel ist rapidforum?

        Man liest sich, H2O

        --
        #*~!:     Download Opera
        Selfcode: [ie:% fl:( br:< va:) ls:[ fo:| rl:( n4:( ss:) de:> js:| ch:? sh:( mo:| zu:}](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%25%20fl%3A(%20br%3A%3C%20va%3A)%20ls%3A%5B%20fo%3A%7C%20rl%3A(%20n4%3A(%20ss%3A)%20de%3A%3E%20js%3A%7C%20ch%3A%3F%20sh%3A(%20mo%3A%7C%20zu%3A%7D)
                                  Decoder    -    Infos
        1. im admin bereich steht dass rapidforum in pearl und c++ geschrieben ist. ich habe auf templates zugriff...

          ich habe keine ahnung wie das forum funktioniert, ich betreibe es hobbymäßig und habe ab und an was im design verändert.

          also leider kann ich dir da nicht weiterhelfen, sorry

          MfG hanni

          1. Hi,

            im admin bereich steht dass rapidforum in pearl und c++ geschrieben ist.

            C++ kenne ich, aber was ist "pearl"?

            also leider kann ich dir da nicht weiterhelfen, sorry

            Du musst es so sehen, dass Du mit der Beantwortung unserer Fragen _Dir_ hilfst. Wir sind in ziemlich genau der selben Lage wie Du, mit dem Abstrich, dass wir keine Erfahrung in der Verwendung des Forums haben - und akut auch keine Möglichkeit dazu. Du bist diesbezüglich im Vorteil, und deshalb liegt die Aufgabe der Analyse auch in Deiner Hand. Wir können nur auf Deine Ergebnisse warten.

            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. Perl war gemeint.

              Du musst es so sehen, dass Du mit der Beantwortung unserer Fragen _Dir_ hilfst.

              Ich weis dass ich im enfeffekt mir selbst im weg stehe... vielleicht war es falsch um hilfe zu bitten

              alles was ich bisher in den templates gefunden habe sieht so aus:

              <USERMODE!1>
              hier steht der text der angezeigt wird wenn man eingeloggt ist
              </USERMODE>´
              <USERMODE=1>
              und hier, wenn man nicht eingeloggt ist.
              </USERMODE>

              auf das was hinter diesen tags steckt hab ich keinen zugriff.

              MfG hanni

              1. Hi,

                vielleicht war es falsch um hilfe zu bitten

                das wohl nicht. Du darfst nur nicht erwarten, dass wir Dinge tun, die Du viel besser kannst.

                alles was ich bisher in den templates gefunden habe

                Die Templates bringen nichts.

                Du hast schon den richtigen Themenbereich gewählt: HTTP. Es geht um die übertragenen Daten, also nicht um eine der beiden Seiten, sondern um das Dazwischen, die Kommunikation zwischen Client und Server. Diese musst Du untersuchen - vergleiche meine zweite Antwort.

                auf das was hinter diesen tags steckt hab ich keinen zugriff.

                Auf die übertragenen Daten hast Du Zugriff. Sowohl das, was Dein Rechner versendet, als auch das, was er empfängt, befindet sich zu irgend einem Zeitpunkt auf eben diesem Rechner.

                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. Auf die übertragenen Daten hast Du Zugriff. Sowohl das, was Dein Rechner versendet, als auch das, was er empfängt, befindet sich zu irgend einem Zeitpunkt auf eben diesem Rechner.

                  genau darauf will ich hinaus. aber wie?

                  trotz meinen gigantischen informationen könnt ihr mir wohl nicht helfen :P

                  trotzdem danke, hanni

                  1. Hi,

                    na ja, um dir mal einen kleinen Stoß in die richtige Richtung zu geben: Tu doch einfach so, als wärst du das Formular und wolltest dich an das Forum schicken: http://www.php-faq.de/q/q-code-post.html.
                    Du musst dich natürlich damit befassen, wie man einzelne "Felder" simuliert und das ganze dementsprechend anpassen, aber das Prinzip sollte stimmen.

                    MfG
                    Rouven

                    --
                    -------------------
                    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
                    1. na ja, um dir mal einen kleinen Stoß in die richtige Richtung zu geben

                      danke.. jetzt weis ich wenigstens wonach ich suchen muss!

                      danke auch an cheatah

                    2. HTTP/1.1 200 OK
                      Date: Tue, 09 Aug 2005 08:02:41 GMT
                      Server: Apache/1.3.29 (Unix) mod_fastcgi/2.4.2
                      P3P: CP="ALL DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa TELa OUR STP UNI NAV STA PRE"
                      Set-Cookie: dates=0%2C1123574561; path=/; expires=Fri, 07-Aug-2015 08:02:41 GMT
                      Connection: close

                      das bekomm ich wenn ich das script aus Rouven's url nehme und die unten aufgeführten werte einsetze. damit kann ich aber nix anfangen :/
                      nur weis ich dass der cockie mich nicht einloggt.
                      außerdem weis ich nicht wie ich dem die daten von user und pw senden soll.

                      $x = PostToHost(
                                    "14815.rapidforum.com",
                                    "/",
                                    "http://14815.rapidforum.com",
                                    "benutzernameundpasswort");

                      danke, hanni

                  2. Hi,

                    genau darauf will ich hinaus. aber wie?

                    ergänzend zu Rouvens Posting: Es lohnt sich, diese Funktion in einem möglichst allgemeinen Script zu implementieren. Solche Tools gibt es zwar schon zur Genüge und in den verschiedensten Farben und Formen, aber erstens hast Du dann eines, welches Deinen Bedürfnissen entspricht, und zweitens lernst Du gewaltig viel über HTTP.

                    trotz meinen gigantischen informationen könnt ihr mir wohl nicht helfen :P

                    Hilf Dir selbst, dann hilft Dir SelfHTML!

                    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
      2. Hi,

        ich weis nur was im quelltext zum einloggen steht:
        wirklich was damit anfangen kann ich nicht.

        das kann ich verstehen, denn der HTML-Code liefert allenfalls vage Hinweise. Analysiere die Requests und Responses, um die Vorgehensweise zu analysieren.

        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
    2. Hi,

      Jetzt hab ich es geschafft, dem Server von rapidforum einen einigermaßen ordentlichen request zu senden.

      <?php

      function PostToHost($host, $path, $referer, $data_to_send) {

      $fp = fsockopen($host, 80);

      printf("Open!\n");

      fputs($fp, "POST $path HTTP/1.1\r\n");

      fputs($fp, "Host: $host\r\n");

      fputs($fp, "Referer: $referer\r\n");

      fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");

      fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");

      fputs($fp, "Connection: close\r\n\r\n");

      fputs($fp, $data_to_send);

      printf("Sent!\n");

      while(!feof($fp)) {

      $res = fgets($fp, 128);

      echo $res;

      }

      printf("Done!\n");

      fclose($fp);

      return $res;

      }

      $data = "login=1&userid=testaccount&password=test";
      #der account existiert wirklich

      printf("Go!\n");

      $x = PostToHost(

      "14815.rapidforum.com",

      "/?",

      "http://14815.rapidforum.com/login",

      $data);

      ?>

      Folgendes Problem tritt aber auf
      http://www.hannin.de/extern/einloggen.php

      Der Request müsste stimmen, denn wenn ich als pw etwas anderes angebe sagt mir der server dass das pw falsch eingegeben wurde. Außerdem möchte er die richtigen cookies setzen.

      Irgendwo ist doch noch ein Fehler, aber wo?
      Ich hab keine ahnung wo er liegen könnte :/

      Danke, Hanni

      1. Hi,

        der Server ist der Meinung das sei so in Ordnung. Wenn du die Daten von Hand dort einträgst und auf Login gehst kommt genau das selbe zurück. Der Browser verarbeitet allerdings das Ergebnis und leitet weiter auf die angegebene URL (Inhalt von Location). Der Server hat dir mitgeteilt, dass er die Ressource erfolgreich anfordern konnte, aber eine temporär geänderte Adresse vorliegt, siehe Selfhtml: http://de.selfhtml.org/servercgi/server/httpstatuscodes.htm

        MfG
        Rouven

        --
        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
        1. hi,

          hört sich gut an!
          Wie kann ich jetzt mein script so schreiben, dass der browser die kopfdaten so interpretiert wie wenn sie direkt vom server kommen?

          danke,
          hanni

          1. Na ja,
            es ist eigentlich nicht so wild. Das was du zurückbekommst ist ja ein String. Du kannst dir jetzt entweder eine regular expression oder String-Funktionen schnappen um in der Rückgabe "Location: " zu finden. Alles, was ab da bis zum Zeilenende (\n oder \r\n) kommt ist die URL, die der Server dir nahelegt. Hierhin musst du verzweigen, je nachdem was du vorhast:

            1. per JavaScript (unzuverlässig)
            2. per Header (erfordert aber, dass vorher noch nichts ausgegeben wurde per echo o.ä. oder aber die Ausgabe gepuffert wird)
            3. in dem du analog oben den Inhalt anforderst und selbst ausgibst.

            MfG
            Rouven

            --
            -------------------
            ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
              1. per Header (erfordert aber, dass vorher noch nichts ausgegeben wurde per echo o.ä. oder aber die Ausgabe gepuffert wird)

              eigentlich müsste das doch so stimmen:

              <?php
              function PostToHost($host, $path, $referer, $data_to_send) {
                $fp = fsockopen($host, 80);
                fputs($fp, "POST $path HTTP/1.1\r\n");
                fputs($fp, "Host: $host\r\n");
                fputs($fp, "Referer: $referer\r\n");
                fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
                fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
                fputs($fp, "Connection: close\r\n\r\n");
                fputs($fp, $data_to_send);
                while(!feof($fp)) {
                    $res .= fgets($fp, 128);
                }
                fclose($fp);
                $head = explode("\n", $res);
                for($i=0;$i<count($head);$i++) {
                  header($head[$i]);
                }
                return $res;
              }

              $data = "login=1&userid=testaccount&password=test";
              $x = PostToHost(
                            "14815.rapidforum.com",
                            "/?",
                            "http://14815.rapidforum.com/?c=1",
                            $data);
              ?>

              damit werde ich zwar zum forum weitergeleitet aber die cookies werden nicht geschrieben, dh. ich bin nicht im forum eingeloggt.

              Gleiches problem wenn ich als header einfach nur
              header("Location: http://14815.rapidforum.com");
              angebe. ich bin zwar im forum, aber logischerweise nicht eingeloggt.

              also wie kann ich den browser die cookies erfolgreich schreiben lassen? dazu reicht die header() funktion allem anschein nach nicht

              Gruß
              Hanni