 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
MFox²
Anmeldungsdatum: 26.08.2007 Beiträge: 1
|
Verfasst am: 26.08.2007, 17:26 Titel: Dateien ins Internet (PHP!) senden |
|
|
Hallo ihr FB Coder da draußen,
ich Programmiere seit einiger Zeit (7 Jahre..) hier und da mal ein bisschen QB. Und seit ein paar Jahren auch ein bisschen FB. Aber naja, meine Kenntnisse sind alles andere als großzügig.
Ich möchte aber folgendes versuchen:
Ich möchte ein Programm schreiben welches eine Datei an ein PHP Script ins Internet sendet, das denke ich, geht sicherlich irgendwie per Sockets. PHP beherrsche ich gut bis sehr gut. Ein Upload Formular welches online ist kann ich ohne probleme Programmieren. Aber nun möchte ich per FB eine Datei an ein PHP Script senden. Das PHP Script soll die datei am besten per $_POST empfangen.
Könnt ihr mir Helfen meine Idee zu realisieren?
Wäre euch mehr als Dankbar! |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 26.08.2007, 17:30 Titel: |
|
|
Wie Du selbst schon sagtest, geht es am besten ueber sockets (getHTTP bzw postHTTP) ich koennte ein kleinen source eines Examples der SDL_Net anbieten bit der es recht einfach zu handlen ist....
Code: | '----------------------------------------------------------------------------------------------------------------------------------------------------------'
#inclib "SDL_net"
'Global Information from SDL_net
Type Uint16 as ushort
type Uint32 as uinteger
type IPaddress
host as Uint32
port as Uint16
end type
Type TCPsocket as _TCPsocket ptr
Extern "c"
declare function SDLNet_Init () as integer
declare function SDLNet_ResolveHost (byval address as IPaddress ptr, byval host as zstring ptr, byval port as Uint16) as integer
declare function SDLNet_TCP_Open (byval ip as IPaddress ptr, byval Port as Integer=80) as TCPsocket
declare function SDLNet_TCP_Recv (byval sock as TCPsocket, byval data as any ptr, byval maxlen as integer) as integer
declare function SDLNet_TCP_Send (byval sock as TCPsocket, byval data as any ptr, byval len as integer) as integer
declare sub SDLNet_TCP_Close (byval sock as TCPsocket)
declare sub SDLNet_Quit ()
End Extern
'----------------------------------------------------------------------------------------------------------------------------------------------------------'
'Standart HTTP Functions
Const recv_timeout = 5 '100 seconds
Const RECVBUFFLEN = 8192
Const NEWLINE = !"\r\n"
Const Referer = ""
Declare Function TCP_open (Byval hostname As String, byval Port as Integer=80) As TCPSocket
Declare Function TCP_http (Byval method As String="get", Byval Socket As TCPSocket, Byval hostname As String, Byval path As String="") As Integer
Declare Function TCP_recv (Byval socket As TCPSocket) As String
Declare Function TCP_close (Byval socket As TCPSocket) As Integer
'----------------------------------------------------------------------------------------------------------------------------------------------------------'
'****************************************************************
Function TCP_open (Byval hostname As String, byval Port as Integer=80) As TCPSocket
'****************************************************************
'' init
If( SDLNet_Init <> 0 ) Then
'print "Error: SDLNet_Init failed"
Return 0
End If
'' resolve
Dim ip As IPAddress
Dim socket As TCPSocket
If( SDLNet_ResolveHost( @ip, hostname, Port ) <> 0 ) Then
'print "Error: SDLNet_ResolveHost failed"
Return 0
End If
'' open
socket = SDLNet_TCP_Open( @ip )
If( socket = 0 ) Then
'print "Error: SDLNet_TCP_Open failed"
Return 0
End If
Return socket
'****************************************************************
End Function 'TCP_open
'****************************************************************
'****************************************************************
Function TCP_http (Byval method As String="get", _
Byval Socket As TCPSocket, _
Byval hostname As String, _
Byval path As String="") As Integer
'****************************************************************
'' send HTTP request
Dim sendbuffer As String
Dim MString As String
Select Case Lcase (method)
Case "post"
MString="POST /"
Case Else
MString="GET /"
End Select
SendBuffer= _
MString+path+" HTTP/1.1"+NEWLINE+ _
"Host: "+hostname+NEWLINE+ _
"Connection: close"+NEWLINE
If MString="POST /" Then SendBuffer+= _
"Accept-Encoding: gzip"+NEWLINE
SendBuffer+= _
"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"+NEWLINE+ _
"Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3"+NEWLINE+ _
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"+NEWLINE+ _
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"+NEWLINE+ _
"Referer: "+Referer+NEWLINE
If MString="POST /" Then SendBuffer+= _
"Content-type: application/x-www-form-urlencoded"+NEWLINE
SendBuffer+=NEWLINE
If( SDLNet_TCP_Send( socket, Strptr( sendbuffer ), Len( sendbuffer ) ) < Len( sendbuffer ) ) Then
'print "Error: SDLNet_TCP_Send failed"
Return -1
End If
Return 0
'****************************************************************
End Function 'TCP_http
'****************************************************************
'****************************************************************
Function TCP_recv (Byval socket As TCPSocket) As String
'****************************************************************
Dim TimeOut As Single
Dim TimeOutX As Single
TimeOut=Timer
'' receive til connection is closed
Dim recvbuffer As Zstring * RECVBUFFLEN+1
Dim recv_Buffer as String
Dim bytes As Integer
Do
If TimeOutX>recv_TimeOut Then Exit Do
bytes = SDLNet_TCP_Recv( socket, Strptr( recvbuffer ), RECVBUFFLEN )
If( bytes <= 0 ) Then
'Sleep (100),1
exit do
Else
timeout=Timer
End If
'' add the null-terminator
recvbuffer[bytes] = 0
'' print it as string
'Print recvbuffer;
recv_Buffer+=recvbuffer
TimeOutX=Timer-TimeOut
Loop While Instr(Lcase(recvbuffer),"</html>")=0
Return recv_Buffer
'****************************************************************
End Function 'TCP_recv
'****************************************************************
'****************************************************************
Function TCP_close (Byval socket As TCPSocket) As Integer
'****************************************************************
'' close socket
SDLNet_TCP_Close( socket )
'' quit
SDLNet_Quit
Return 0
'****************************************************************
End Function 'TCP_close
'****************************************************************
'----------------------------------------------------------------------------------------------------------------------------------------------------------'
|
Benoetigt SDL.DLL und SDL_Net.DLL
damit ist es recht einfach moeglich einen get bzw post zu senden...
erforderlich sind nur Domain und Path... vielleicht hilft es Dir weiter, muss hier und da vielleicht noch angepasst werden, wenn fragen aufkommen, einfach raus damit, und ich bemuehe mich sie zu klaeren
EP _________________
 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|