Per PHP Login, SessionID bekommen?!

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

  • #16
    Moment, du schaust dir die Header über ein Browser-Plugin an?
    Dabei bekommst du natürlich die Header-Kommunikation zwischen deinem Browser und deinem Script mit - aber doch nicht die zwischen deinem Script und dem anderen Server ...
    Ok wieder was gelernt,...


    Siehe Zlib-Funktionen im Manual.
    Das hab ich mir gerade mal angeschaut,... ich müsste also nur das was ankommt mit gzdecode dekompremieren richtig?!...

    Dann kommt aber bei mir der Fehler dass die Funktion nicht gefunden wird. Aber bei phpinfo() steht unter "Registered PHP Streams" --> "compress.zlib" was laut google zlib ist nur dass es umbenannt wurde...

    edit:

    macht der erst das gzip und dann deflate und muss ich es dann auch wieder auf umgekehrte Weise dekomprimieren?...
    Zuletzt geändert von Nucular; 15.05.2009, 21:49.

    Kommentar


    • #17
      Ok vergesst den letzten Thread,... alles Mist ;-)

      Aber Fragen aber ich dennoch :-/....

      1. Man kann nicht schauen auf welche Art es komprimiert ankommt richtig? also gzip oder deflate...

      2. Ich kann einen String gzcompress() und danach auch wieder gzuncompress() ohne Probleme,... aber den Response den ich schon seit Stunden probiere zu "entschlüsseln" lässt sich mit gzuncompress() nicht dekomprimieren,... data error! D.h. entweder nicht mit gzip compressed oder ich will womöglich zuviel/zuwenig gzuncompressen...

      Wenn ich sich jemand die Zeit nehmen will/kann und mir mit ein paar Sätzen unter die Arme greifen könnte wäre ich sehr dankbar ;-)

      Kommentar


      • #18
        Es ist ja normal nicht meine Art solche Mengen an Code "vorzukauen" aber ich hab da schon einen Ziemlich weiten Ansatz wie sich das ganze relativ bequem lösen lässt.

        Nötige Links zu dieser Methode:
        PHP: file_get_contents - Manual / PHP: HTTP and HTTPS - Manual
        PHP: stream_context_create - Manual
        In den Kommentaren finden sich jeweils zahlreiche Beispiele die die verschienen Möglichkeiten demonstrieren.

        Irgend eine kleinigkeit ist daran noch faul, sobald ich einen anständigen Netzwerk-Sniffer für Linux gefunden habe finde ich das bestimmt auch noch raus Aber für den Fall das du schneller bist hier die Funktionen und der Aufruf mit denen ich es derzeit versuche:
        PHP-Code:
        function www_get_contents($url$method$ar_params$cookies$opt_header) {
          if (
        $ar_params)
            
        $params http_build_query($ar_params);  
          if (
        strtoupper($method) == "POST") {
            
        $opts = array(
              
        'http'=>array(
                
        'method'=>"POST",
                
        'header'=>($opt_header implode("\r\n",$opt_header)."\r\n" "").GetCookieHeader($cookies).
                  
        "Content-Type: application/x-www-form-urlencoded;\r\n".
                  
        "Content-Length: ".strlen($params)."\r\n",
                
        'content'=>$params
              
        )
            );
          } else {
            
        $opts = array(
              
        'http'=>array(
                
        'method'=>"GET",
                
        'header'=>($opt_header implode("\r\n",$opt_header)."\r\n" "").GetCookieHeader($cookies)
              )
            );
            if (
        $ar_params)
              
        $url $url."?".$params;
          }
          
        //var_dump($opts);
          //echo("<hr>");
          //var_dump($url);
          
        $context stream_context_create($opts);
          
        $result file_get_contents($url0$context);
          if (
        strlen($result) > 0) {
            
        //echo("<hr>");
            //var_dump($http_response_header);
            
        $cookies = array();
            foreach (
        $http_response_header as $httpline) {
               @list(
        $header,$parameters) = explode(";",$httpline,2);
               @list(
        $attr,$value) = explode(":",$header,2);
               if (
        strtolower(trim($attr)) == "set-cookie") {
                  
        $cookies_raw explode("&"trim($value));
                  foreach(
        $cookies_raw as $cookie) {
                    list(
        $cookie_name$cookie_value) = explode("="$cookie);
                    
        $cookies[$cookie_name] = $cookie_value;
                  }
               }
            }
            if (!
        is_array($_SESSION['cookies']))
              
        $_SESSION['cookies'] = $cookies;
            else
              
        $_SESSION['cookies'] = array_merge($cookies$_SESSION['cookies']);
            return 
        $result;
          }
          echo(
        "<hr>");
          
        var_dump($http_response_header);
        }   

        function 
        GetCookieHeader($cookies) {
          if (empty(
        $cookies))
            return 
        "";
          
        $header = array();
          foreach(
        $cookies as $cookie=>$value) {
            
        $header[] = $cookie."=".$value;
          }
          return 
        "Cookie: ".implode("; "$header)."\r\n";
        }
            
        session_start();

        $uni 60;
        $user "Name";
        $pass "Passwort";

        if (!
        is_array($_SESSION['cookies']))
          
        $_SESSION['cookies'] = array();
        $_SESSION['cookies']["uni_selected_".$uni] = 1;
        $_SESSION['cookies']["uni_user"] = $user;
        $_SESSION['cookies']["uni_lastLogin"] = $uni;

        $params = array();
        $params["submitInput"] = "Login";
        $params["uni_id"] = $uni;
        $params["is_utf8"] = 0;
        $params["v"] = "2";
        $params["uni_url"] = "uni".$uni.".ogame.de";
        $params["login"] = $user;
        $params["pass"] = $pass;

        $url "http://uni".$uni.".ogame.de/game/reg/login2.php";
        //$url = "http://localhost/ogame/post.php";
        $header = array();
        $header[] = "Referer: http://ogame.de/";
        $header[] = "Accept: */*";
        // gzip nicht akzeptieren das spaart arbeit solange der Server mitmacht ;) (ogame macht es mit)
        $header[] = "Accept-Encoding: deflate";
        $result www_get_contents($url"POST"$params$_SESSION['cookies'], $header);
        if (
        preg_match("/URL\=(.+?)'/"$result$redirect_url)) {
          
        // Weiterleitung folgen
          
          
        $header = array();
          
        $header[] = "Accept: */*";
          
        // gzip nicht akzeptieren das spaart arbeit solange der Server mitmacht ;) (ogame macht es mit)
          
        $header[] = "Accept-Encoding: deflate";
          
        $header[] = "Referer: ".$url;
          
        $url "http://uni".$uni.".ogame.de".$redirect_url[1];
          
          
        $result www_get_contents($url"GET"false$_SESSION['cookies'], $header);
          echo(
        $result);

        Läuft jetzt ohne Probleme
        Zuletzt geändert von Forsaken; 16.05.2009, 16:33.
        IM: Pidgin | Browser: Chromium Firefox | HTML: SelfHTML | PHP: PHP.net SelfPHP | Linux: GnomeDo



        And remember, respect is everything!

        Kommentar


        • #19
          Die erste Funktion hab ich mir heute mittag schon angeschaut,... hattest du glaub in deinem ersten Post geschrieben,... bin ich dir dankbar für,.. nur jetzt sitzt ich seit 2 Tage an meinem Script und bin alle 1-2 Stunden ein Schritt weiter gekommen,... und irgendwie kommts mir so vor als wär ich kurz vor meinem ersten Ziel, und zwar ein einfacher Login per PHP.. ^^...
          deswegen scheuts mir davor mit einer ganz anderen Art und Weise und neuen Funktionen neu anzufangen :-P

          Irgend eine kleinigkeit ist daran noch faul
          Und genau diese Befürchtung hab ich auch....

          sobald ich einen anständigen Netzwerk-Sniffer für Linux gefunden habe finde ich das bestimmt auch noch raus
          das wär natürlich mue buenoooo!! ^^

          Aber für den Fall das du schneller bist hier die Funktionen und der Aufruf mit denen ich es derzeit versuche:
          Werd ich mir morgen aufjedenfall mal anschauen...

          So,... ne gute Nacht wünsch ich ;-)

          Kommentar


          • #20
            Hehe klar hab ich absolut Verständniss für
            Ich werd noch eben schaun ob der Post nur bei OGame nicht vernünftig erkannt wird oder ob das ein allgemeines Problem ist... aber ich Tippe eher auf ersteres.

            Gute Nacht

            Edit: Ähm ja... es ist schon ziemlich spät... Letzten endes hab ich meinen Fehler dann aber doch gefunden. So habe ich jetzt immerhin auch wieder eine ziemlich effektive funktion für http requests.
            Für den Lerneffekt hab ich die wichtigen ausgaben mal auskommentiert drin gelassen.
            Ansonsten viel Erfolg bei was auch immer du vor hast
            Zuletzt geändert von Forsaken; 16.05.2009, 00:25.
            IM: Pidgin | Browser: Chromium Firefox | HTML: SelfHTML | PHP: PHP.net SelfPHP | Linux: GnomeDo



            And remember, respect is everything!

            Kommentar


            • #21
              Ich hab mir Heute mal etwas Zeit genommen und eine Klasse geschrieben die ich dann auch in meinen Kernel übernehmen werde
              Es gibt noch viele um das man sie erweiten kann (was ich auch noch werde) aber für deine Zwecke reicht sie denke ich jetzt schon aus.

              Die Klasse ist komplett im PHP-Doc Stil Kommentiert und auch Allgemein war ich mal spendabel mit den Kommentaren
              Zum besseren Verständniss noch ein kurzes Anwendungsbeispiel:
              PHP-Code:
                require_once("sys.http.php");
                
                
              session_start();
                
                
              $ogame = new http_wrapper($_SESSION["ogame_cookies"]);
                
                
              // GZIP nicht akzeptieren
                
              $ogame->AddHeader("Accept: */*");
                
              $ogame->AddHeader("Accept-Encoding: deflate");
                
                
              // Account daten
                
              $uni 60;
                
              $user "Name";
                
              $pass "Passwort";

                
              // Login-Cookies setzen 
                
              $ogame->AddCookie("uni_selected_".$uni1);
                
              $ogame->AddCookie("uni_user"$user);
                
              $ogame->AddCookie("uni_lastLogin"$uni);
                
                
              // Parameter für den Login Setzen
                
              $params = array();
                
              $params["submitInput"] = "Login";
                
              $params["uni_id"] = $uni;
                
              $params["is_utf8"] = 0;
                
              $params["v"] = "2";
                
              $params["uni_url"] = "uni".$uni.".ogame.de";
                
              $params["login"] = $user;
                
              $params["pass"] = $pass;
                
              $ogame->AddParameters($params);
               
                
              // Login-Request abschicken
                
              $ogame->referer "http://ogame.de/";
                
              $ogame->SetMethod("POST");
                
              $result $ogame->GetURL("http://uni".$uni.".ogame.de/game/reg/login2.php");
                echo(
              "<noscript>".$result."</noscript>"); 
              Angehängte Dateien
              Zuletzt geändert von Forsaken; 16.05.2009, 18:09.
              IM: Pidgin | Browser: Chromium Firefox | HTML: SelfHTML | PHP: PHP.net SelfPHP | Linux: GnomeDo



              And remember, respect is everything!

              Kommentar

              Lädt...
              X