tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
30
ZUGRIFFE
1069
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Divo1984 Divo1984 ist offline Mitglied Gold
    Registriert seit
    Aug 2010
    Beiträge
    128
    Hallo liebe Community,

    ich habe grade folgendes Problem. Ich betreibe eine Webseite, über die man (User) sich bei Fremdseiten anmelden kann! Dies ganze geschieht über folgende Funktion:

    PHP-Code:
    function reg_it($wo$genau$womit) {
    $temp_wo=explode("/",$wo);
    $wo=$temp_wo[0];
    if(
    count($temp_wo)>1)
    {
    $genau="/".$temp_wo[1]."".$genau;
    }
      
    $wer=$_SERVER["SERVER_NAME"];
      
    $con fsockopen($wo80);
      
    $handle "POST $genau HTTP/1.1\r\n";
      
    $handle.= "Host: $wo\r\n";
      
    $handle.= "Referer: $wer\r\n";
      
    $handle.= "Content-type:application/x-www-form-urlencoded\r\n";
      
    $handle.= "Content-length: "strlen($womit) ."\r\n";
      
    $handle.= "Connection: close\r\n\r\n";
      
    $handle.= $womit;
      
    fputs($con$handle);
      while(
    $con AND !feof($con)) {
          
    $res .= fgets($con128);
      }
      
    fclose($con);
      return 
    $res;

    nun möchte ich aber Daten an eine Seite, die mit https aufgerufen wird, mit $_POST senden! Hat da jmd. eine Ahnung wie ich das bewerkstelligen könnte?
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Tipp: Du nimmst statt Sockets die curl-Funktionen.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    Divo1984 Divo1984 ist offline Mitglied Gold
    Registriert seit
    Aug 2010
    Beiträge
    128
    Ich stehe da grad a wenig auf dem Schlauch, kenne mich mit Curl noch net aus, kann mir jmd. ein Beisüiel schreiben?
     

  4. #4
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Hallo!

    Wenn Du Dich mit dem Server per HTTPS verbinden willst, solltest Du auch den entsprechenden Port (443) verwenden, und nicht den für HTTP (80).
    http://de.wikipedia.org/wiki/Port_(Protokoll)

    Gruss Dr Dau
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

  5. #5
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Allerdings muss er den SSL dann komplett selbst implementieren. Deswegen ja CURL.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  6. #6
    Divo1984 Divo1984 ist offline Mitglied Gold
    Registriert seit
    Aug 2010
    Beiträge
    128
    Trotzdem kriege ich das net gebacken *heul*
     

  7. #7
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Hast du hier schon mal die Suche verwendet? Da gibts dutzende Beispiele. Außerdem gibts in google einige prima Anleitungen:

    http://davidwalsh.name/execute-http-post-php-curl

    Wir helfen gern weiter, wenn du einen Fehler hast, ihn aber nicht finden kannst. Aber ein komplettes Beispiel, was dann auch noch per Copy&Paste funktioniert, verursacht einfach zu viel Aufwand

    Notfalls postest du ne Anfrage im Jobs-Forum.


    Sorry, aber ein bisschen Eigeninitiative musst du schon zeigen.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  8. #8
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Hallo Divo,

    wobei du für die Einstellung CURLOPT_POSTFIELDS auch ganz einfach ein Array verwenden kannst*:
    PHP-Code:
    $post_data = array('param1' => 'val1''param2' => 'val2');

    // ...
    curl_setopt($curl_objCURLOPT_POSTFIELDS$post_data); 
    Und mit folgenden 2 Zeilen kannst du evtl. SSL-Zertifikats-Fehler unterdrücken:
    PHP-Code:
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0); 
    Sicherheits-Lücke:
    In dem Code auf der Seite, die saftmeister verlinkt hat, ist eine große Sicherheitslücke! Mittels extract() werden alle per POST übergebene Variablen in den globalen Raum geschrieben.

    Dies ist ähnlich wie die bereits veraltete Einstellung Register Globals.



    * Wobei dann der Content-Type-Header auf multipart/form-data gesetzt wird.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  9. #9
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Naja, es ist genauso gefährlich, wie direkt die $_POST-Variablen zu übernehmen. Außerdem ging es mir eigentlich nur um den Teil mit curl()

    Aber es ist schon richtig, extract() sollte man nicht gedankenlos verwenden.

    @ComFreek: Er kann den Code IMHO ohnehin nicht mittels Copy&Past übernehmen.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  10. #10
    Divo1984 Divo1984 ist offline Mitglied Gold
    Registriert seit
    Aug 2010
    Beiträge
    128
    Die Daten werden vor der Übergabe mit dem mysql_real_escape_string maskiert
     

  11. #11
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Wenn du sie per String übergibst, musst du sie trotzdem per urlencode() maskieren.

    Außerdem besteht auch eine Sicherheitslücke darin, das Datei-Lese-Feature von cURL mittels @-Zeichen auszunutzen!

    Siehe auch diesen Kommentar auf php.net: http://php.net/manual/function.curl-setopt.php#102519


    PS: Hast du es jetzt hinbekommen?
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  12. #12
    Divo1984 Divo1984 ist offline Mitglied Gold
    Registriert seit
    Aug 2010
    Beiträge
    128
    So ich habe mich jetzt mal dran gesetzt - folgendes kam dabei raus:

    PHP-Code:
    <?php
    $data 
    "t:formdata=H4sIAAAAAAAAAJWPMU7DQBBFh0hGoHRI3AAEBFhTEAqo0iAhRQjJ4gBre2IW2d5lZoJNw1E4AeISKei4AwegpaLAdhREZ235v/6b/+f1C4LqGA4JM8NCWowtw6syxfr8v3VypmaGWEpdIBOMLWVKO53coRLtsIk9jVViCXMTq1gzqkncsolcGszTnQhl7nZvF8PP7fefAaxNYZjYUsjm181Fga3pvX7UYa7LLIyETJld1E5gsyttI/4bJ74bb8gmyBzN48IwNwcXb+np7PvlYwBQu2oE+/0DMmxc4gd4BhBYX0oftCWD6gD2+gEstMlXVUGnPMBl0RGM+vNOM1eW0lXXxsrwwz1eE6SC/17rlAfYFf0C3t0t9tkCAAA=&firstName=Jan&gender=M&email=admin@morecash4mail.de&password=Benita08&terms=checked&REF=fVqCcazP3N5eg3q";
    $tuCurl curl_init();
    curl_setopt($tuCurlCURLOPT_URL"https://www.euroclix.de/registration/index.registration06.registrationform");
    curl_setopt($tuCurlCURLOPT_PORT 443);
    curl_setopt($tuCurlCURLOPT_VERBOSE0);
    curl_setopt($tuCurlCURLOPT_HEADER0);
    curl_setopt($tuCurlCURLOPT_SSLVERSION3);
    curl_setopt($tuCurlCURLOPT_POST1);
    curl_setopt($tuCurlCURLOPT_SSL_VERIFYPEER1);
    curl_setopt($tuCurlCURLOPT_RETURNTRANSFER1);
    curl_setopt($tuCurlCURLOPT_POSTFIELDS$data);
    curl_setopt($tuCurlCURLOPT_HTTPHEADER, array("Content-Type: html/text"));

    $tuData curl_exec($tuCurl);
    if(!
    curl_errno($tuCurl)){
      
    $info curl_getinfo($tuCurl);
      echo 
    'Took ' $info['total_time'] . ' seconds to send a request to ' $info['url'];
    } else {
      echo 
    'Curl error: ' curl_error($tuCurl);
    }

    curl_close($tuCurl);
    echo 
    $tuData;
    ?>
    Dazu ne Frage: Wie kann ich mir da die Haeder ausgeben lassen?

    Die Variablen für die zu postenden Daten habe ich von der Startseite: www.euroclix.de

    Kann es sein, dass dort durch das t:formdata Tapestry automatische Eingebaen verhindert werden?
     

  13. #13
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.364
    Blog-Einträge
    4
    Dafür gibt es die Option CURLOPT_HEADER, welche du auf 0 gestellt hast:
    PHP-Code:
    curl_setopt($tuCurlCURLOPT_HEADER0); 
    Die musst du auf 1 stellen:
    PHP-Code:
    curl_setopt($tuCurlCURLOPT_HEADER1); 
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  14. #14
    Divo1984 Divo1984 ist offline Mitglied Gold
    Registriert seit
    Aug 2010
    Beiträge
    128
    Nun bin ich bei foolgender Ausgabe im Header
    STATUS-CODE: 500 X-Tapestry-ErrorMessage: Forms require that the request method be POST and that the t:formdata query parameter have values.

    stelle ich nun auf multipart/formdata kommt das - ich werd noch kirre

    STATUS-CODE: 500 X-Tapestry-ErrorMessage: Unable to decode multipart encoded request.
     

  15. #15
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Du musst den $data-Inhalt vorher vermutlich noch durch urlencode() jagen.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

Ähnliche Themen

  1. SQL-Daten != $_POST
    Von Infernus im Forum PHP
    Antworten: 1
    Letzter Beitrag: 07.11.07, 18:09
  2. problem $_POST daten gehen verloren
    Von vedam im Forum PHP
    Antworten: 8
    Letzter Beitrag: 23.05.07, 09:43
  3. $_POST Daten weiterversenden?
    Von Nizomi im Forum PHP
    Antworten: 5
    Letzter Beitrag: 27.01.06, 20:18
  4. erneutes Senden von $_POST verhindern
    Von Katzehuhn im Forum PHP
    Antworten: 7
    Letzter Beitrag: 16.12.05, 10:47
  5. Antworten: 13
    Letzter Beitrag: 15.04.03, 10:15