kostenloser Webspace werbefrei: lima-city


Formular mittels POST senden

lima-cityForumProgrammiersprachenC/C++ und D

  1. Hallo Dominik!

    jeder Client kann ein Form simulieren.

    <form method="post"
    action="http://limonero.milten.lima-city.de/testhttplogger/formsample1.php">
    <input size="10" name="sender" value="limonero">
    <input size="40" name="line" value="Hallo !!">
    <input type="submit">
    </form>

    Das simulierst du durch das Erzeugen der folgenden http Information.

    POST /testhttplogger/formsample1.php HTTP/1.0
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash,

    */*
    Referer: http://limonero.milten.lima-city.de/testhttplogger/formsample1.php
    Accept-Language: de-at
    Content-Type: application/x-www-form-urlencoded
    Proxy-Connection: Keep-Alive
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
    Host: limonero.milten.lima-city.de
    Content-Length: 33
    Pragma: no-cache

    sender=limonero&line=Hallo+%21%21

    Das ist ziemlich selbst erkl?rend. Wenn du nicht weisst, was genau die Methoden deiner Objekte auf http ebene anrichten, dann brauchst du einen http logger. Entweder ergreifst du die Gelegenheit und schreibst dir so etwas als Vor?bung, oder du nimmst einen freeware Proxyserver. Ich glaube, mich erinnern zu k?nnen, dass proxomitron und der Internet Junkbuster (bzw. Nachfolger) das k?nnen.

    Mit lima-city gibt es keine Besonderheiten, ausser den Cookies. Folgender http traffic gibt eine erfolgreiche Anmeldung wieder:

    POST /usercp.php HTTP/1.0
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash,

    */*
    Referer: http://www.lima-city.de/login.php
    Accept-Language: de-at
    Content-Type: application/x-www-form-urlencoded
    Proxy-Connection: Keep-Alive
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
    Host: www.lima-city.de
    Content-Length: 72
    Pragma: no-cache
    Cookie: PHPSESSID=?pgj?agj?ajg?apdofjb+pajboapj

    form_username=limonero&form_password=xT56%$R&autologin=on&action=login
    proxyclient read on 2246 from 193.201.52.189: 80
    server -> proxyclient:
    HTTP/1.1 200 OK
    Date: Sun, 18 Sep 2005 19:22:30 GMT
    Server: Apache/1.3.26 (Unix) Debian GNU/Linux PHP/4.4.0
    X-Powered-By: PHP/4.4.0
    Expires: Mon, 26 Jul 1997 05:00:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate
    Pragma: no-cache
    Set-Cookie: additional_securitys=deleted; expires=Saturday, 18-Sep-04 19:22:29 GMT
    Set-Cookie: autousername=limonero; expires=Tuesday, 18-Oct-05 19:22:30 GMT
    Set-Cookie: autopassword=agja?dpgj?apdfjg?apdoj?pohj; expires=Tuesday, 18-Oct-05 19:22:30 GMT
    Last-Modified: Sun, 18 Sep 2005 19:22:30 GMT
    Cache-Control: post-check=0, pre-check=0
    Connection: close
    Content-Type: text/html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    .........
    Willkommen, <a href="javascript:void(0);" onClick="openmenu('xxxxxx')">limonero</a>
    .........

    Bei Fragen, melde dich bitte, C kenne ich nicht, aber etwas http.

    Die Sorge wegen Spam teile ich nicht ganz. F?r einen kindischen Scherz ist das ganze zu aufw?ndig zu schreiben. Die Profis machen das schon lange, wie ich selbst erfahren musste. Die Profis kann man aber bei der Registrierung stoppen. Ein Schulkind schreibt den Spam notfalls auch mit der Hand rein.

    Btw die Passw?rter sind ?berschrieben worden, was da steht sind nicht mehr die funktionierenden Passw?rter.

    Gr?sse,
    limonero

    Beitrag ge?ndert am 19.09.2005 18:02 von limonero
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Ahhh, ich habe die Connection falsch gesendet! Sie musste keep-alive und ich hatte da closed. Bei Piranho hat es funktioniert, aber bei Lima-City nicht :confused: Nun habe ich als weiterleitung www.xardas.lima-city.de bekommen, aber da war der Fehler, dass ich den Header nicht nach da senden konnte.

    MfG Dominik

    PS: Jetzt geht es erstmal darum die Startseite von lima-city aufzurufen. Also ich glaube, dass der Server meint, wenn ich javadomi.lima-city.de aufrufe, was ?brigens auch geht, ist das selbe, wenn ich www.lima-city.de aufrufe. Also dass das www der Benutzername ist und mich automatisch nach www.xardas.lima-city.de weiterleitet, denn bei javadomi leitet er mich auf milten weiter.

    Beitrag ge?ndert am 19.09.2005 16:30 von javadomi
  4. ich bin jetzt nicht, sicher, ob ich deine Anmerkung unter PS richtig verstehe, aber wenn ich www.lima-city.de/usercp.php aufrufe gibts keine Weiterleitung, sondern ein 200 OK.

    Allerdings funktioniert der Aufruf der Homepages ohne die Angabe des tats?chlichen Servers ?ber ein 302 FOUND. Das ist elegant gel?st, niemand braucht sich die Servernamen zu merken und sie k?nnen uns auf einen anderen Server schieben, w?hrend alles wie bisher funktioniert. Auf http sieht das so aus:

    GET / HTTP/1.0
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
    Accept-Language: de-at
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
    Host: limonero.lima-city.de
    Proxy-Connection: Keep-Alive


    pc read on 1158 from 193.201.52.189: 80
    s -> pc
    HTTP/1.1 302 Found
    Date: Mon, 19 Sep 2005 16:13:24 GMT
    Server: Apache/1.3.26 (Unix) Debian GNU/Linux PHP/4.4.0
    Location: http://limonero.milten.lima-city.de/
    Connection: close
    Content-Type: text/html; charset=iso-8859-1

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <HTML><HEAD>
    <TITLE>302 Found</TITLE>
    </HEAD><BODY>
    <H1>Found</H1>
    The document has moved <A HREF="http://limonero.milten.lima-city.de/">here</A>.<P>
    <HR>
    <ADDRESS>Apache/1.3.26 Server at server19320152189.serverpool.info Port 80</ADDRESS>
    </BODY></HTML>

    Im Browser, der ja auf die Location: Angabe reagiert sieht man dies 302 Found Seite nicht, nur scheint in der Adresszeile die um den Server erweiterte Adresse Auf.

    Gr?sse,
    limonero

    Beitrag ge?ndert am 19.09.2005 18:27 von limonero
  5. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.


    ich bin jetzt nicht, sicher, ob ich deine Anmerkung unter PS richtig verstehe, aber wenn ich www.lima-city.de/usercp.php aufrufe gibts keine Weiterleitung, sondern ein 200 OK.


    Tja, jetzt geht es pl?tzlich. Ich glaube, dass es mit den Serverausfall von Lima-City zu tun hatte. Aber jetzt funktioniert es. Also an die Loginseite m?chte ich jetzt diese Posteintr?ge senden, ist kein Problem. Dann habe ich die Location. Soll ich sie dann einfach per GET aufrufen?
  6. Jetzt steht die ganze Information schon im Thread. Wenn du noch Fragen hast, dann stelle sie etwas genauer. Welche Datei willst du jetzt zu welchem Zeck aufrufen? Der allgemeine Zeck, den du verfolgst, der ist schon bekannt, aber mit welchem Teilschritt besch?ftigst du dich gerade?

    Zuerst rufst du usercp.php mit POST auf und ?bergibst deine Logininformationen. Der http Traffic dazu steht in meinem Posting. Wenn das Anmelden geklappt hat, dann rufst du deine Gulden?bersicht mit GET auf und wertest die aus.

    limonero


  7. ich bin jetzt nicht, sicher, ob ich deine Anmerkung unter PS richtig verstehe, aber wenn ich www.lima-city.de/usercp.php aufrufe gibts keine Weiterleitung, sondern ein 200 OK.


    Tja, jetzt geht es pl?tzlich. Ich glaube, dass es mit den Serverausfall von Lima-City zu tun hatte. Aber jetzt funktioniert es. Also an die Loginseite m?chte ich jetzt diese Posteintr?ge senden, ist kein Problem. Dann habe ich die Location. Soll ich sie dann einfach per GET aufrufen?


    Yep. Genau so geht auch ein Browser vor, wenn er eine vorl?ufige Redirection (Weiterleitung) findet. Die Status-Codes 301 oder 302 stehen eben genau f?r eine Weiterleitung.

    MfG
    alopex
  8. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Also jetzt habe ich auf http://www.piranho.com unter der Userseite die Formulardaten eingegeben und sie mittels Post abgesendet. Nun habe ich als Location "home.php?xid=?pgj?agj?ajg?apdofjb+pajboapj" mittels soein GET Header gesendet:

    GET /home/mypiranho/home.php?xid=?pgj?agj?ajg?apdofjb+pajboapj HTTP/1.0
    Host: WWW.PIRANHO.COM
    User-Agent: Mozilla/4.0
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*

    Aber er gibt mir keinen Antwort Header, also ich wei? nicht, on HTTP OK, oder was los ist. Wie kann ich machen, dass ich da in die Userseite gerate?
  9. Wenn deine Anfrage angenommen wurde, muss der Server auch irgendeine Antwort geben. Vielleicht solltest du den Hostnamen auch klein schreiben?
  10. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Also es brachte auch nichts den Hostnamen klein zu schreiben. Hier ist jetzt der aktuelle Code:

    #include <windows.h>
    #include <stdio.h>
    #include <iostream.h>

    int iam=0;
    char *session="";

    // left copy
    void leftcopy(char* input,char* output,int pos)
    {
    int index = 0;
    for(int i = 0; i < pos; i++)
    {
    output[index] = input;
    index++;
    }
    output[index] = 0;
    }
    // right copy
    void rightcopy(char* input,char* output,int pos)
    {
    int index = 0;
    int len = strlen(input);
    for(int i = pos; i < len; i++)
    {
    output[index] = input;
    index++;
    }
    output[index] = 0;

    }
    // mid copy
    void midcopy(char* input,char* output,int start_pos, int stop_pos)
    {
    int index = 0;
    for(int i = start_pos; i < stop_pos; i++)
    {
    output[index] = input;
    index++;
    }

    output[index] = 0;
    }

    class CWinTcpSocket
    {
    public:
    CWinTcpSocket( void );
    virtual ~CWinTcpSocket( void );

    virtual bool Create( int af = AF_INET );
    virtual bool Connect( const char *pszHost, int nPort );
    virtual bool Bind( int nLocalPort );
    virtual bool Accept( CWinTcpSocket *pSocket );
    virtual bool Listen( int nBacklog = SOMAXCONN );
    virtual int Send( const void *pData, int nDataLen, int nFlags = 0 );
    virtual int SendText( const char *pszText );
    virtual int Recv( void *pData, int nDataLen, int nFlags = 0 );
    virtual int RecvLine( char *pszBuf, int nLen, bool bEcho = false );
    virtual bool Shutdown( int nHow );
    virtual bool Close( void );

    SOCKET m_hSocket;

    private:
    static DWORD m_dwRefCount;
    };

    char *header1 = "POST %s HTTP/1.0\r\nHost: www.piranho.com\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\nContent-Length: 25\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nUSR=javadomi&PWD=xxxxxxx\r\n\r\n";
    char *header2 = "GET %s HTTP/1.0\r\nHost: www.piranho.com\r\nUser-Agent: Mozilla/4.0\r\nConnection: close\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*\r\n\r\n";
    #define HTTP_END_HEADER_STRING "\r\n\r\n"

    #define HTTP_OK_STRING "200 OK"
    #define HTTP_OK 200

    #define HTTPERR_REQUEST 0x0001
    #define HTTPERR_RESPONSE 0x0002
    #define HTTPERR_NOTOK 0x0004
    #define HTTPERR_HEADERSKIP 0x0008
    #define HTTPERR_FILEIO 0x0010
    #define HTTPERR_MEMORY 0x0020
    #define HTTPERR_DISCONNECTED 0x0040

    #define HttpErrorString( x, y ) itoa( y, x, sizeof( x ) )

    typedef enum _tagHttpVersion
    {
    HTTPVER_10 = 0x0100,
    HTTPVER_11 = 0x0101

    } HttpVersion;

    class CHttpDownload : public CWinTcpSocket
    {
    public:
    CHttpDownload( void );

    virtual int DownloadFile( const char *pszRemoteFile, const char *pszLocalFile );

    protected:
    bool MakeRequest( const char *pszRequest );
    int GetResponse( char *pszBuf );
    bool IsResponseOK( const char *pszResponse );
    int SkipHeader( void );
    int WriteToFile( const char *pszFile );
    };

    CHttpDownload *pDownloader = 0;

    #define SERVER "www.piranho.com"
    #define FILENAME "/home/mypiranho/index.php"
    #define LOCALNAME "index.html"
    char *FILEDANN = "/home/mypiranho/home.php?xid=";

    int main()
    {
    pDownloader = new CHttpDownload();

    pDownloader->Create();
    pDownloader->Connect( SERVER, 80 );
    if( pDownloader->DownloadFile( FILENAME, LOCALNAME ) != 0 )
    {
    MessageBox( NULL, "Unable to download file", NULL, MB_OK );
    }
    if( pDownloader->DownloadFile( FILEDANN, LOCALNAME ) != 0 )
    {
    MessageBox( NULL, "Unable to download file", NULL, MB_OK );
    }

    pDownloader->Close();
    delete pDownloader;

    MessageBox( NULL, "Download complete!", NULL, MB_OK );

    return 0;
    }

    #define RECV_BUFFER_SIZE 2048

    CHttpDownload::CHttpDownload( void )
    : CWinTcpSocket()
    {

    }

    int CHttpDownload::DownloadFile( const char *pszRemoteFile, const char *pszLocalFile )
    {
    char *pMemBuf;

    if( !MakeRequest( pszRemoteFile ) )
    {
    MessageBox(NULL,"Fehler1^^","1",NULL);
    return HTTPERR_REQUEST;
    }

    pMemBuf = new char[ RECV_BUFFER_SIZE ];

    if( pMemBuf == 0 )
    {
    MessageBox(NULL,"Fehler2^^","1",NULL);
    return HTTPERR_MEMORY;
    }
    MessageBox(NULL,pMemBuf,"MemBuffer nach 2",NULL);

    if( GetResponse( pMemBuf ) != 0 )
    {
    MessageBox(NULL,"Fehler3^^","1",NULL);
    return HTTPERR_RESPONSE;
    }

    if( !IsResponseOK( pMemBuf ) )
    {
    MessageBox(NULL,"Fehler4^^","1",NULL);
    return HTTPERR_NOTOK;
    }

    delete[] pMemBuf;

    if( SkipHeader() != 0 )
    {
    return HTTPERR_HEADERSKIP;
    }

    return WriteToFile( pszLocalFile );
    }

    bool CHttpDownload::MakeRequest( const char *pszRequest )
    {
    char *pReqStr = new char[ 256 + strlen( pszRequest ) ];

    iam++;
    if (iam == 1)
    sprintf( pReqStr, header1, pszRequest );
    if (iam == 2)
    sprintf( pReqStr, header2, pszRequest );

    int nErr = SendText( pReqStr );

    MessageBox(NULL,pReqStr,"3",NULL);
    delete[] pReqStr;

    if( nErr == 0 || nErr == SOCKET_ERROR )
    {
    return false;
    }
    else
    {
    return true;
    }
    }

    int CHttpDownload::GetResponse( char *pszBuf )
    {
    int nErr = RecvLine( pszBuf, RECV_BUFFER_SIZE );

    if( nErr == 0 || nErr == SOCKET_ERROR )
    {
    return HTTPERR_DISCONNECTED;
    }
    else
    {
    return 0;
    }
    }

    bool CHttpDownload::IsResponseOK( const char *pszResponse )
    {
    if( strstr( pszResponse, HTTP_OK_STRING ) == 0 )
    {
    return false;
    }
    else
    {
    return true;
    }
    }

    int CHttpDownload::SkipHeader( void )
    {
    int nLen;
    bool bFound = false;
    char cur = 0, prev_1 = 0, prev_2 = 0, prev_3 = 0;

    while( !bFound )
    {
    nLen = Recv( &cur, 1 );

    if( nLen == 0 || nLen == SOCKET_ERROR )
    {
    return HTTPERR_DISCONNECTED;
    }

    if( (cur == '\n') && (prev_1 == '\r') && (prev_2 == '\n') && (prev_3 == '\r') )
    {
    bFound = true;
    }
    else
    {
    prev_3 = prev_2;
    prev_2 = prev_1;
    prev_1 = cur;
    }
    }

    return 0;
    }

    int CHttpDownload::WriteToFile( const char *pszFile )
    {
    char *pBuf = new char[ RECV_BUFFER_SIZE ];
    FILE *pFile = fopen( pszFile, "w+b" );
    int nErr;

    if( pFile == 0 )
    {
    return HTTPERR_FILEIO;
    }

    for( ;; )
    {
    nErr = Recv( pBuf, RECV_BUFFER_SIZE );

    if( nErr == 0 )
    {
    break;
    }
    else if( nErr == SOCKET_ERROR )
    {
    fclose( pFile );
    delete[] pBuf;

    return HTTPERR_DISCONNECTED;
    }
    else
    {
    fwrite( pBuf, sizeof( char ), nErr, pFile );
    }
    }

    fclose( pFile );
    delete[] pBuf;

    return 0;
    }

    DWORD CWinTcpSocket::m_dwRefCount = 0;

    CWinTcpSocket::CWinTcpSocket( void )
    {
    WSADATA wd;

    if( ++m_dwRefCount == 1 )
    {
    ::WSAStartup( 0x0101, &wd );
    }
    }


    CWinTcpSocket::~CWinTcpSocket( void )
    {
    Close();

    if( --m_dwRefCount == 0 )
    {
    ::WSACleanup();
    }
    }


    bool CWinTcpSocket::Create( int af )
    {
    m_hSocket = ::socket( af, SOCK_STREAM, IPPROTO_TCP );

    if( m_hSocket == INVALID_SOCKET )
    {
    #ifdef _DEBUG
    ::MessageBox( NULL, "Socket creation failed - why?!", NULL, MB_OK | MB_ICONERROR );
    #endif

    return false;
    }
    else
    {
    return true;
    }
    }


    bool CWinTcpSocket::Connect( const char *pszHost, int nPort )
    {
    unsigned long ulAddr = 0;
    hostent *pEnt = ::gethostbyname( pszHost );
    SOCKADDR_IN addr;

    if( pEnt == 0 )
    {
    ulAddr = ::inet_addr( pszHost );

    if( ulAddr == INADDR_NONE )
    {
    #ifdef _DEBUG
    ::MessageBox( NULL, "Invalid address!", NULL, MB_OK | MB_ICONERROR );
    #endif
    return false;
    }
    else
    {
    addr.sin_family = AF_INET;
    }
    }
    else
    {
    memcpy( &ulAddr, pEnt->h_addr_list[0], sizeof( long ) );

    addr.sin_family = pEnt->h_addrtype;
    }

    addr.sin_addr.s_addr = ulAddr;
    addr.sin_port = ::htons( nPort );

    memset( addr.sin_zero, 0, sizeof( addr.sin_zero ) );

    if( ::connect( m_hSocket, (const sockaddr *)&addr, sizeof( SOCKADDR_IN ) ) == SOCKET_ERROR )
    {
    #ifdef _DEBUG
    char szBuf[64];

    sprintf( szBuf, "Unable to connect: %X / %d", ::WSAGetLastError(), ::WSAGetLastError() );

    ::MessageBox( NULL, szBuf, NULL, MB_OK | MB_ICONERROR );
    #endif

    return false;
    }
    else
    {
    return true;
    }
    }


    bool CWinTcpSocket::Bind( int nLocalPort )
    {
    SOCKADDR_IN addr;

    addr.sin_addr.s_addr = INADDR_ANY;
    addr.sin_family = AF_INET;
    addr.sin_port = ::htons( nLocalPort );
    memset( addr.sin_zero, 0, sizeof( addr.sin_zero ) );

    if( ::bind( m_hSocket, (const sockaddr *)&addr, sizeof( SOCKADDR_IN ) ) == SOCKET_ERROR )
    {
    return false;
    }
    else
    {
    return true;
    }
    }


    bool CWinTcpSocket::Accept( CWinTcpSocket *pSocket )
    {
    if( pSocket == 0 )
    {
    return false;
    }

    SOCKADDR_IN addr;
    int len = sizeof( SOCKADDR_IN );
    memset( &addr, 0, sizeof( SOCKADDR_IN ) );

    pSocket->m_hSocket = ::accept( m_hSocket, (sockaddr*)&addr, &len );

    if( pSocket->m_hSocket == INVALID_SOCKET )
    {
    return false;
    }
    else
    {
    return true;
    }
    }


    bool CWinTcpSocket::Listen( int nBackLog )
    {
    if( ::listen( m_hSocket, nBackLog ) == SOCKET_ERROR )
    {
    return false;
    }
    else
    {
    return true;
    }
    }


    int CWinTcpSocket::Send( const void *pData, int nDataLen, int nFlags )
    {
    return ::send( m_hSocket, (const char *)pData, nDataLen, nFlags );
    }


    int CWinTcpSocket::SendText( const char *pszText )
    {
    return Send( pszText, strlen( pszText ) );
    }


    int CWinTcpSocket::Recv( void *pData, int nDataLen, int nFlags )
    {
    return ::recv( m_hSocket, (char *)pData, nDataLen, nFlags );
    }


    int CWinTcpSocket::RecvLine( char *pszBuf, int nLen, bool bEcho )
    {
    int nCount = 0;
    int nRdLen;
    char ch = 0;

    while( ch != 'C' && nCount < nLen )
    {
    nRdLen = Recv( &ch, 1 );

    if( nRdLen == 0 || nRdLen == SOCKET_ERROR )
    {
    nCount = 0;
    break;
    }

    if( ch != '\n' && ch != '\r' )
    {
    pszBuf[nCount] = ch;
    nCount++;
    }

    if( bEcho )
    {
    Send( &ch, 1 );
    }
    }

    if( nCount != 0 )
    {
    pszBuf[nCount] = 0;
    }
    MessageBox(NULL,pszBuf,"Buf Response",NULL);
    if (iam == 1) {
    rightcopy(pszBuf,session,strlen(pszBuf)-33);
    leftcopy(session,session,32);
    for (int i = 0; i < strlen(session)+10; i++)
    FILEDANN[29+i]=session;
    MessageBox(NULL,pszBuf,"Buf Response",NULL);
    MessageBox(NULL,FILEDANN,"session",NULL);
    }

    return nCount ? nCount : nRdLen;
    }


    bool CWinTcpSocket::Shutdown( int nHow )
    {
    return ::shutdown( m_hSocket, nHow ) == SOCKET_ERROR ? false : true;
    }


    bool CWinTcpSocket::Close( void )
    {
    return ::closesocket( m_hSocket ) == SOCKET_ERROR ? false : true;
    }


    Den kann man mit den Borland Compiler 5.5 kompilieren.
    MfG Dominik
  11. Sorry, aber C-Qu?lcode durchforsten? Ohne mich!

    Das Einzige, das mir aufgefallen ist, sind die "rn"-Zeichenfolgen. Kann beim Copy-N-Paste passiert sein, aber wenn nicht, solltest du es mal mit "\\r\\n" oder nur mit "\\n" probieren. Den Rest muss ein C-Kundiger Lima ?bernehmen ...

    *nachtr?glich_einf?g*

    Vergiss den Hinweis, die Backslashes hat das Lima-Board-Script gefressen. Im Eingabefeld sind sie noch da. :slant:

    Beitrag ge?ndert am 19.09.2005 23:16 von alopex
  12. Dominik,

    deine Fragen werden dann beantwortbar, wenn du den http Traffic vollst?ndig postest. Nur das html kannst du dabei k?rzen, aber das Wesentliche muss auch hier erkennbar sein. Als z.B:

    Erster http request, Antwortheader dazu, gek?rztest html, zweiter http request, Antwortheader dazu, gek?rztes html usw.

    Dann wird es interessanter als so ein R?tselquiz.

    BTW crlf und crlfcrlf im httpheader ist ok.

    limonero
  13. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Entschuldigt Leute, aber es ist zum Verzweifeln. Ich habe an das Loginformular per POST die Dateien gesendet und habe diesen 302 Found Header, wie gewollt bekommen (also wenn ich falsche Daten angebe, dann bekomme ich den Header 200 OK, deshalb wei? ich, dass ich es richtig gemacht habe). Nun habe ich die Location aus den Header rausgesucht, also in diesen Falle: "home.php?xid=blablabla" Nun schicke ich ein GET Header an diese Datei. Soeinen hier:

    GET home.php?xid=blablabla HTTP/1.0
    Host: www.piranho.com
    User-Agent: Mozilla/4.0
    Accept-Language: en-us
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*

    Aber ich bekomme keinen zur?ck. Ich dachte, dass ich irgendwas im Quelltext falsch habe. Ich komme einfach nicht weiter.

    MfG Dominik
  14. Das war wieder eine ungenaue Frage mit unvollst?ndiger Hintergrundinformation, so ist sie nicht beantwortbar, darum 7 R?ckfragen:

    1. Ist der Request mit einer Leerzeile abgeschlossen worden?

    Erst wenn der Server crlfcrlf erh?lt, antwortet er.

    2. Schaut der Request eines erfolgreichen Zugriffs mit dem Browser ganz genau so aus, wie der Request, den du geschickt hast?

    3. Woher weisst du das definitiv?

    4. Hat der Server nicht geantwortet, oder hat dein Programm die Antwort nicht verarbeitet?

    5. Wie erkennst du, ob der Server geantwortet oder nicht geantwortet hat, unabh?ngig von dem Programm, das noch nicht fertig ist?

    6. ist die verwendete xid g?ltig?

    7. Woher weisst du das?

    limonero

    Beitrag ge?ndert am 20.09.2005 18:07 von limonero
  15. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.


    Das war wieder eine ungenaue Frage mit unvollst?ndiger Hintergrundinformation, so ist sie nicht beantwortbar, darum 7 R?ckfragen:

    1. Ist der Request mit einer Leerzeile abgeschlossen worden?

    Erst wenn der Server crlfcrlf erh?lt, antwortet er.

    2. Schaut der Request eines erfolgreichen Zugriffs mit dem Browser ganz genau so aus, wie der Request, den du geschickt hast?

    3. Woher weisst du das definitiv?

    4. Hat der Server nicht geantwortet, oder hat dein Programm die Antwort nicht verarbeitet?

    5. Wie erkennst du, ob der Server geantwortet oder nicht geantwortet hat, unabh?ngig von dem Programm, das noch nicht fertig ist?

    6. ist die verwendete xid g?ltig?

    7. Woher weisst du das?

    limonero

    Beitrag ge?ndert am 20.09.2005 18:07 von limonero


    Entschuldige mal wieder, aber ich bin aufgeregt wegen diesen Programm.
    Zu 1: Nach jeder Zeile habe ich ein /r/n und am ende habe ich /r/n/r/n, sonst w?rden die ersten Seiten nicht funktionieren.

    Zu 2: Ja, genau so, ausser, dass ich Accept encoding weggelassen habe, ansonsten gibt es da ein Fehler bei Windows.

    Zu 3: Weil ich soein Browsertoll habe und damit gings, wenn ich die einzellnen POST Dinger eingetragen habe und dann oben in der URL die Location Adresse und mit GET best?tigt (hier ist das Tool: http://www.codeproject.com/internet/httpget-post.asp)

    Zu 4: Ich glaube, dass es ein Fehler im Programm sein sollte, weil das Tool ja alles richtig gemacht hat.

    Zu 5: Die Funktion
    int CWinTcpSocket::RecvLine( char *pszBuf, int nLen, bool bEcho ) in den Quellcode. Dann gibt er eine MessageBox aus mit den erhaltenen Header, so wie ich ihn anpassen will.

    Zu 6 und 7: Naja, ich habe sie aus den Header rausgenommen und sollte g?ltig sein.
  16. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.


    Eine Frage:

    Du hast nicht meinen Rat mit Ethereal befolgt oder?

    Gru? Tobi


    Ja, das habe ich mir gedownloaded, aber ich komme damit nicht ganz klar.
  17. F?r deine gegenw?rtigen Probleme brauchst du eher einen http logger, als einen sniffer. Du hast die Probleme ja nicht auf tcp Ebene sondern http Ebene. Da ist ein Sniffer wenig komfortabel.

    Der URI in dem von dir geposteten Request ist falsch, das sehe ich erst jetzt. Der muss mit einem Slash beginnen.

    Sonst ist der Request in Ordnung und funktioniert.

    Gr?sse
    limonero
  18. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Naja, ich hatte schon vorher den Slash drin. Sorry. Aber es funktioniert immer noch nicht. Also nach POST kommt dann diese Adresse: /home/mypiranho/index.php sonst h?tte es ja zum ersten Mal nicht funktioniert.

    Nur beim zweiten Mal, da kriege ich einfach keinen Header zur?ck.
  19. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Habe ich auch. Ich habe genau den selben Header gesendet, wie der Browser, aber nicht den selben bekommen.

    MfG Dominik
  20. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Jaa!! Es hat funktioniert! Ich habe bei den Header HTTP 1.0 gesendet. Jetzt ist mir aufgefallen, dass ich nicht HTTP 1.1 gesendet habe. Danke!

    Au?erdem: Ich hole die Session ID etwas komisch aus meinen Header raus. Wie kann ich sie mit einfach Befehlen in eine Variable speichern und wie kann ich aus der HTML Seite "Du hast schon X Gulden verdient" heraussuchen und das X in eine Zahl umwandeln?
  21. Also in PHP k?nntest du die Guldenzahl etwa so ermitteln:

    // $html_file = der Inhalt vom HTTP-Response
    // nach dem HTTP-Header

    $rx_matches = array();
    preg_match(
    '/Du\s+hast\s+schon(\s+)\d+\s+Gulden\s+verdient/',
    $html_file,
    $rx_matches
    $);

    $gulden = $rx_matches[1];

    In C musst du dir das mit den String-Funktionen zusammenbasteln ... :slant:

    MfG
    alopex
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!