ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
590
590
EMPFEHLEN
-
Hallo zusammen,
ich habe ein CGI-Programm geschrieben, welches die Methode POST auswertet.
Im Prinzip habe das Beispielprogramm aus dem FREE-PASCAL-Buch der Herren Van
Canneyt und Klämpfl abgetippt und ein paar kleine Erweiterungen
hinzugefügt.
Nun zum Problem:
Das Programm schreibt naturgemäß nur in die Standardausgabe. Es will mir
einfach nicht gelingen, einen Teil der Daten aus dem Programm irgendwie
anders auszugeben.
Das Programm soll eine Eingabe an meine Bilderdatenbank schicken, (Ein
Parser wertet alles aus). Die Datenbankausgabe wird in eine Datei
geschrieben, die wiederrum in mein CGI-Programm eingelesen wird (Lesen aus
Datei klappt).
Gibt es doch eine Möglichkeit zum Schreiben/Senden der Daten?
mit ipc (msgtool.pp) habe ich auch schon experimentiert. Das greift das UNIT
aber auch auf das Dateisystem zu (key := Ftok('.',ord('M')). Das hat mir
nicht weitergeholfen. Ich habe mich aber nicht so sehr vertieft.
Wie weiter? Eigentlich mach ich ja nichts Neuartiges.
An den Apache-Einstellungen habe ich nichts gemacht. Nur unter SuseLinux 9.2
eingeschaltet.
Vielen Dank
Jan-Rene
Es folgt der Quelltext, der noch ziemlich Roh ist (Die 1000 Felder brauch
ich zum Beispiel gar nicht, aber das Prinzip soll ja erst mal klappen).
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
uses DOS, Sysutils, oldLinux; const MaxData = 1000; type DataRec = Record name, value : String; end; var Data : Array [1..MaxData] of DataRec; i, j, NrData : LongInt; c : Char; literal, aname : Boolean; f : Text; s : String; begin (*abgetippt und leicht verändert*) Writeln('Content-type: text/html'); Writeln; if GetEnv('REQUEST_METHOD')<>'POST' then begin Writeln('POST erwartet!'); halt(1); end; if GetEnv('CONTENT_TYPE')<>'application/x-www-form-urlencoded' Then begin Writeln('application/x-www-form-urlencoded erwartet!'); halt(1); end; NrData :=1; aname:=True; while Not Eof(input) do begin literal := False; read(c); if c='\' Then begin literal := True; read(c); end; if literal or ((c<>'=') and (c<>'&')) Then begin with data[nrData] do begin if aname then name := name + c Else value := value + c; end; end else begin if c='&' Then begin inc(nrData); aname:=True; end Else aname := False; end; end; Writeln('<p>'); for i:= 1 to NrData do begin if length(data[i].value)>0 Then for j:=1 to length(data[i].value) do // gleich die Leerzeichen wiederherstellen if data[i].value[j]='+' Then data[i].value[j]:=' ' ; Writeln(data[i].value); end; if NrData=1 Then Writeln(' '); Writeln('</p><hr>'); (*EndOF abgetippt*) (* hier ist der Knackpunkt, ich will auf die Festplatte des Servers schreiben *) assign (f,'test'); rewrite(f); Writeln(f,'PROBLEME ?');close(f); //Warten bis die Generierung der Ausgabedatei abgeschlossen ist repeat until fileExists('/home/rene/jrabd.dynamic.cgi.free'); //Einlesen der Daten und anzeigen assign(f,'/home/rene/jrabd.dynamic.cgi'); reset(f); while not eof(f) do begin readln(f,s); Writeln(s); end; close(f); if Deletefile('/home/rene/jrabd.dynamic.cgi.free') Then; //neues Aufrufen des Programmes ermöglichen Writeln('Formulardaten...'); end.
-
Hallo,
mir ist deine Frage nicht klar:
MitDas Programm schreibt naturgemäß nur in die Standardausgabe. Es will mir
einfach nicht gelingen, einen Teil der Daten aus dem Programm irgendwie
anders auszugeben.schreibt du nicht mehr in die Standardausgabe, sondern in ein File. Die Standardausgabe ist der Bildschirm, welcher in deinem Source überCode :1 2
assign (f,'test'); rewrite(f); Writeln(f,'PROBLEME ?');close(f);
angesprochen wird.Code :1
Writeln('</p><hr>');
Schreib etwas genauer, was du machen möchtest, vielleicht kann ich dir dann helfen.
-
Hallo WieGehts
ich habe die Lösung im PHP Forum gefunden.
Natürlich was mit chmod
Ich glaube, ich mach die Verbindung zwischen Server und meinem Programm via PHP.
Deine Anmerkung:
Mein CGI-Programm sollte neben der Bildschirmausgabe auch in eine Datei schreiben, was es aber nicht gemacht hat.
An der Stelle "PROBLEME ?" sollte eigentlich eine Steuersequenz für meine Bilddatenbank stehen. (Suchen usw.)
Ich mache mit PHP weiter und habe auch ein paar Fragen...
Vielen Dank.





Zitieren
Login





