Curl Login Form Http/Https Post

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

  • Curl Login Form Http/Https Post

    Hallo Profis!
    Ich drehe bald durch. Curl Login funzt nicht. Ich habe tausend Beispiele angesehen und ausprobiert. Es wird einfach nicht eingeloggt. Ich bekomme die Seite mit Formular und nichts weiter. Kein Fehler oder so. Was mache ich falsch?
    PHP-Code:
    $url 'http://www.domain.de';
                
    $ch curl_init();

                
    //Variablen setzen
                
    $arrSubmit="usrname=admin&pass=123456";

    curl_setopt($chCURLOPT_URL,$url);
    curl_setopt ($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_POSTFIELDS$arrSubmit);
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    curl_setopt($chCURLOPT_HEADER0);

                
    //Ausführen der Aktionen
    $result curl_exec($ch);
    $code curl_getinfo ($chCURLINFO_HTTP_CODE);

    switch(
    $code)
    {
    case 
    200:
    $message 'Access Granted';
    $success 1;
    break;
    case 
    401:
    $message 'Access Denied';
    break;
    default:
    $message 'Result unknown, access denied.';
    break;
    }
    //Session beenden
    curl_close($ch);
    echo 
    $message.'<br>'.$code.'<br>'.$result
    Zuletzt geändert von vitalinka; 14.06.2010, 12:06.

  • #2
    Hallo,

    mir fällt auf Anhieb nur eins auf: Du akzeptierst keine Cookies. (CURLOPT_COOKIEFILE und CURLOPT_COOKIEJAR setzen.)

    Wenn der Login im Browser mit temporär abgestellten Cookies dennoch funktioniert, liegt es doch nicht daran und du solltest dich dann nochmal melden.

    Achso: Code gehört in entsprechende Tags, bitte Beitrag ändern und das beheben (siehe Forenregeln)!

    Gruß,

    Amica
    Zuletzt geändert von AmicaNoctis; 12.06.2010, 19:56.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Danke für die Antwort. Ich habe es schon früher mit cookie ausprobiert, kein unterschied. Auch an verschiedenen Seiten, gleiche Ergebnis.
      PHP-Code:
       $url="http://domain.de/index.php";
                  
      $ch curl_init();

                  
      //Variablen setzen
                  
      $arrSubmit="bla=bla&blad=blad";

                  
      $cookies="cooc.txt";
                  
      //Session Optionen setzen

      curl_setopt($chCURLOPT_URL,$url);
      curl_setopt ($chCURLOPT_POSTtrue);
      curl_setopt($chCURLOPT_POSTFIELDS$arrSubmit);
      curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
      curl_setopt($chCURLOPT_HEADERtrue);
      curl_setopt($chCURLOPT_COOKIEJAR$cookies);
      curl_setopt($chCURLOPT_COOKIEFILE$cookies);

      //Ausführen der Aktionen
      $result curl_exec($ch);
      $code curl_getinfo ($chCURLINFO_HTTP_CODE);

      switch(
      $code)
      {
      case 
      200:
      $message 'Access Granted';
      $success 1;
      break;
      case 
      401:
      $message 'Access Denied';
      break;
      default:
      $message 'Result unknown, access denied.';
      break;
      }
      //Session beenden


                  #curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

      echo $message.$code.$result

      Kommentar


      • #4
        Bitte bearbeite den ersten Beitrag und formatiere den Code (Ändern => Erweitert)!

        Warum siehst du dir nicht erstmal an, was vom Server überhaupt zurückkommt (CURLOPT_HEADER, CURLOPT_RETURNTRANSFER)?

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Zitat von vitalinka Beitrag anzeigen
          Es wird einfach nicht eingeloggt. [...] Was mache ich falsch?
          Wenn ich sehe, dass du in deinem Code auf den HTTP-Statuscode 401 abfragst - dann vermute ich, dass du gar keinen „Login“-Mechanismus meinst, sondern HTTP Authentication.

          Ich sehe aber nirgends, dass du CURLOPT_USERPWD und CURLOPT_HTTPAUTH benutzt hättest.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Server Antwort:
            Access Granted200HTTP/1.1 200 OK Date: Mon, 14 Jun 2010 11:13:21 GMT Server: Apache/2.2.3 (CentOS) Set-Cookie: UICSESSION=12j1vfg7cersf3rit167lfmgq5; path=/ Expires: Sat, Jan 01 2000 01:01:01 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: ui_language=germany Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8
            Da hast du recht Wahsaga. Es ist ganz normales Login Html POST Formular.
            Kann es sein, dass Server,PHP Einstellungen eine Rolle spielen?
            MfG

            Kommentar


            • #7
              Gegenfrage: Woran erkennst du, ob der Login erfolgreich war, ohne dir die Response Entity mit CURLOPT_RETURNTRANSFER angesehen zu haben?
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar

              Lädt...
              X