GET-|POSTRequest an PHP Senden?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

GET-|POSTRequest an PHP Senden?

Beitrag von Blackskyliner »

Hi iwe kann ich einen GET- oder einen POSTRequest an PHP Senden? weil der bringt mir immer: "Could not open input file: www\index.php?pb=get. "

um php aufzurufen nutze ich folgende funktion:

Code: Alles auswählen

Structure MySTARTUPINFO 
  cb.l 
  lpReserved.l 
  lpDesktop.l 
  lpTitle.l 
  dwX.l 
  dwY.l 
  dwXSize.l 
  dwYSize.l 
  dwXCountChars.l 
  dwYCountChars.l 
  dwFillAttribute.l 
  dwFlags.l 
  wShowWindow.w 
  cbReserved2.w 
  lpReserved2.l 
  hStdInput.l 
  hStdOutput.l 
  hStdError.l 
EndStructure 

Procedure.s RunGetOutput(Datei.s) 
  
  Protected ret.l, hReadPipe.l, hWritePipe.l, lngBytesread.l 
  Protected proc.PROCESS_INFORMATION, start.MySTARTUPINFO, sa.SECURITY_ATTRIBUTES 
  Protected strBuff.s 
  Protected mOutputs.s
  
  strBuff.s=Space(256) 
  
  #NORMAL_PRIORITY_CLASS = $20 
  #STARTF_USESTDHANDLES = $100 
  #STARTF_USESHOWWINDOW = $1 
  
  ;Create the Pipe 
  sa\nLength              = SizeOf(SECURITY_ATTRIBUTES) 
  sa\bInheritHandle       = 1 
  sa\lpSecurityDescriptor = 0 
  ret = CreatePipe_(@hReadPipe, @hWritePipe, @sa, 0) 
  If ret = 0 
    mOutputs = "500 Interner Server Error";
  EndIf 
  
  
  start\cb = SizeOf(MySTARTUPINFO) 
  start\dwFlags = #STARTF_USESHOWWINDOW | #STARTF_USESTDHANDLES 
  
  ; set the StdOutput And the StdError output To the same Write Pipe handle 
  start\hStdOutput  = hWritePipe 
  start\hStdError   = hWritePipe 
  
  ; Execute the command 
  ret = CreateProcess_(0, "php/php.exe "+Chr(34)+Datei+Chr(34), sa, sa, 1, #NORMAL_PRIORITY_CLASS, 0, 0, @start, @proc) 
  
  
  If ret <> 1 
    mOutputs = "404 File Not Found("+Datei+")";
  Else 
    WaitForSingleObject_(ret, #INFINITE) 
  EndIf 
  
  
  ret = CloseHandle_(hWritePipe) 
  
  
  ;Read the ReadPipe handle 
  While ret<>0 
    ret = ReadFile_(hReadPipe, strBuff, 255, @lngBytesread, 0) 
    If lngBytesread>0 
      mOutputs = mOutputs + Left(strBuff, lngBytesread) 
    EndIf 
  Wend 
  
  ;Close the opened handles 
  ret = CloseHandle_(proc\hProcess) 
  ret = CloseHandle_(proc\hThread) 
  ret = CloseHandle_(hReadPipe) 
  
  ProcedureReturn mOutputs 
EndProcedure 
aufruffen tue ich das ganze dann mit:

string$ = RunGetOutput(BaseDirectory$+RequestedFile$)


Den Post verarbeitet er nicht und beim GET bekomme ich diese Fehlermeldung.... was kann ich da noch machen hat da jmd. erfahrung darin oder so?
Thx4Help

MFG
Blackskyliner
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Wenn das jetzt auch ser ähm unhöflich klingt aber...: Keiner ne ahnung?

Jaja ich weiß zu früh gefragt....
Benutzeravatar
iF
Beiträge: 84
Registriert: 17.07.2005 20:20
Wohnort: Berlin
Kontaktdaten:

Beitrag von iF »

Warum so kompliziert?

Eine php "starten" tust Du doch indem Du von der php "downloadest".

Nimm doch einfach der URLMoniker URLDownloadToFile und setze diesen auf die PHP an. Parameter übergibst du einfach so: http://bla.de/myphp.php?param1=lol&param2=lalala

Dies ist das GET Verfahren.

Salve, iF.
Achtung: kein PB'ler - habt bitte erbarmen. :mrgreen: /:->
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Oo des ist mir zu hoch *gg* :oops:
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

[joke]dann hol´s dir runter :mrgreen: :lol: [/joke] <- Nicht ernst nehmen... ^^

Schau mal. Ein PHP Script läuft, wenn du es downloadest, (das macht auch der Browser!) durch den installierten PHP-Interpreter. Den brauchst du selber nicht. Es wird dann interpretiert und du kannst mit GET ganz einfach Parameter übergeben, wie du es auch im Browser machst.

UrlDownloadToFile_() ist einfach dazu da, um die Datei herunterzuladen und dadurch zu interpretieren :)

Allerdings weiß ich nicht, wie man es mit POST macht.
Müsste man wohl irgendwie das $_POST Array modifizieren, kann aber glaub ich nicht gehen :| Kannst ja ein bisschen stöbern, vllt findeste was :allright: :mrgreen:

Hoffe das hilft dir n bisschen auf die Sprünge ^___^

greetz,
(the allmighty ^^) AndyX :)
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Ich denke ein PHPScript ist serverseitig warum läuft des dann wenn ich das downloade?? Ich muss doch nix laden.. ich hab das doch alles auf der platte liegen im verzeichniss www ich will das doch an den user senden also die html ausgabe die php generiert und nun dem interpreter mein GET oder POST verständlich machen... ich glaub ich lass des lieber.... bin da eh zu dumm für...
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Der Server Interpretiert aber alles, was er sendet, sofern die Datei Extension
mit irgend einer Extension in den Einstellungen übereinstimmt.
Bild
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

ich glaub ich lass des lieber.... bin da eh zu dumm für...
Das darfste nie sagen, wenn du mal richtig guter Progger werden willst :allright: <)
Benutzeravatar
iF
Beiträge: 84
Registriert: 17.07.2005 20:20
Wohnort: Berlin
Kontaktdaten:

Beitrag von iF »

@Black:
>>Ich muss doch nix laden!

Doch! PHP Downloaden um diese auszuführen!

http://forums.purebasic.com/german/posting.php wird ja auch nicht "downgeloaded" sondern der Browser möchte "http://forums.purebasic.com/german/posting.php?" downloaden und erhält das von der posting.php verarbeitete echo (resultat).

Teste es doch mal - erstelle eine php namens t.php mit dem Inhalt: <? echo "lol! - kommt an :P" ?> und nimm UrlDownloadToFile_() auf http://deinserver/t.php und du wirst sehen - nicht der Source der php - sondern das Echo kommt an!

Testen macht den Progger. :allright: :lol:

Achso - an Deiner Stelle arbeite zunächst für das Übermitteln von Variablenwerten mit dem Get-Verfahren - also so wie ich oben beschrieben habe - für das Postverfahren müsstest Du den Header selber senden - das wird bisl komplizerter - aber im schlimmsten Fall bau ich Dir nen asm dafür. PB kann doch asm oda? :?

Salve, iF.
Achtung: kein PB'ler - habt bitte erbarmen. :mrgreen: /:->
Antworten