![]() |
AW: Indy für Dummies
Abgesehen davon:
Zitat:
|
AW: Indy für Dummies
Naja die Basics fehlen :) Beim dem Wissensstand ist es eigentlich unmöglich alleine ein funktionierendes Programm in der Größenordnung zu schreiben.
Trotzdem, ich hab auch mal angefangen weil ich mir irgendwas basteln wollte und jap, da hab ich ich mich auch von Anfang an übernommen. Geschadet hat es eigentlich nichts, wenigstens bin ich dran geblieben :)(Keiner hat Lust in seiner Freizeit einen Taschenrechner zu programmieren 8-)) @Topic, ich würde dir auch das Tutorial von geskill empfehlen. Vielleicht zeigst du uns mal dein PHP Script damit wir sehen können wie du die Daten übermitteln musst/willst. |
AW: Indy für Dummies
Code:
<?php
$returnValue = "FAIL"; if(isset($_GET['Dir'])) { $uploaddir = $_GET['Dir']; if (is_uploaded_file($_FILES['file']['tmp_name'])) { $uploadfile = $uploaddir.basename($_FILES['file']['name']); if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { $returnValue = "SUCCESS"; } } } echo $returnValue; ?> |
AW: Indy für Dummies
Hmm ich muss dich nochmal fragen: Warum willst du einen Datei Upload machen? Erwartet dein System auf dem Server eine Datei? Normalerweise müsste man, wie schon einmal erwähnt, die Werte in einer Datenbank schreiben und aus dieser Datenbank mittels PHP den Content dynamisch erzeugen.
Erklär mal den Weg den deine Daten zurücklegen von A-Z! |
AW: Indy für Dummies
ich wollte schlicht und ergreifend die daten die in das programm eingegeben werden, (erstmal manuell) verwerted werden können.
was heißt sie müssen zu uns gelangen und/oder zumindest von uns einsehbar sein.(uns=,,Spiele-Server Team´´) daher plante ich diese vom programm als .txt speichern und verschicken zu lassen. die Ftp-komponente scheidet hierfür aus denn mir ist zu ohren gekommen das das ein relativ hohes sicherheits risoko birgt. (außerdem würde ich das auch nicht beherrschen) bleibt bloß noch PHP (IdhttP) hiermit dachte ich diese txt-datei verschicken zu können. (abgesehen davon das ich nicht weiß wie) |
AW: Indy für Dummies
Zitat:
Zitat:
![]() Um ehrlich zu sein, bin ich von dir mehr genervt, als vom Threadstarter. Edit: Ich habe aber die für mich interessante Vermutung, dass du eigentlich Exterminans bist =D. Falls ich richtig liege - was willst du damit bezwecken? Psychospielchen? Willst du, dass andere sich auf deine Seite gesellen und dann behilflicher werden? |
AW: Indy für Dummies
Man kommt sich vor wie im Kindergarten *koppschüttel* :?
|
AW: Indy für Dummies
Zitat:
Zitat:
|
AW: Indy für Dummies
Dich hatte ich gar nicht gemeint ;)
|
AW: Indy für Dummies
:roll:
|
AW: Indy für Dummies
Das Spam-Flag war der schnellste Weg seine Beiträge loszuwerden.
Daniel wird sich bei Gelegenheit im den selbsternannten 'Profi' :roll: kümmern. Nun bitte back to topic und sich nicht über solche Kleingeister aufregen :) |
AW: Indy für Dummies
Bring mal einen Ansatz, ich habe keine Lust dir das Teil von Scratch an zu schreiben und jemand anders wird es auch nicht tun -> u.a weils dir nichts bringt...
Welches Sicherheitsrisiko meinst du? Wenn man PHP nicht richtig einsetzt ist das auch ein rießen Sicherheitsriskio. Alternativ könnte man die Datei auch per Mail versenden aber dann hat man ja wieder dieses Sicherheitsrisiko :) |
AW: Indy für Dummies
Und ob das Erstellen einer Textdatei und deren anschließender Upload einen echten Mehrwert gegenüber einem Script-Aufruf mit POST-Daten hat?
|
AW: Indy für Dummies
Hi,
ich denke ein möglichst einfacher und sicherer Weg ist, wie schon diskutiert wurde, die Daten per IdHTTP an ein PHP Script zu schicken. Um das PHP-Script einfach zu halten und da du (zunächst) mit einer manuellen Verarbeitung der Daten zufrieden bist, könnte man das PHP-Script eine E-Mail an dich versenden lassen. Dann könnte das Script so aussehen:
Code:
<?php
if(isset($_POST['daten'])){ //wenn die Post Daten da sind... mail('meineAdresse@googlemail.com', 'Ein Betreff', $_POST['daten']); //... sende eine E-Mail an meineAdresse@googlemail.com mit dem Text $_POST['daten'] (das was zuvor im Delphi-Memo stand) }else{ echo "Fehler. Daten nicht angekommen."; } ?> Und eine Delphifunktion zum Aufrufen des PHP Scriptes kann so aussehen (von hier: ![]()
Delphi-Quellcode:
Und der Aufruf:
function sendeDatenAnServer(datenString: string):string;//Rückgabewert ist die Ausgabe des PHP-Scriptes
var Strings: TStringList; //Zusammengesetze Post-Daten Stream: TStringStream;//Ausgabe der Aufgerufenen Seite begin Result := ''; Stream := TStringStream.Create('');//Rückgabe-Stream erstellen Strings := TStringList.Create; //Post-Daten-StringList erstellen try Strings.Add('daten=' + datenString);//Memo1.Text (= datenString) soll im PHP-Script über $_POST['daten'] erreichbar sein try idHTTP.Post("http://www.meineseite.de/meinscript.php", Strings, Stream);//Datei abrufen Result := Stream.DataString; //dem Ausgabe-String die zurückgegebenen Daten zuweisen (alles was im PHP Script z.B. mit echo "..."; ausgegeben wurde) except //Fehlerbehandlung on E: Exception do ShowMessage('Error encountered during POST: ' + E.Message); end; finally Strings.Free; Stream.Free; end; end;
Delphi-Quellcode:
sendeDatenAnServer(Memo1.Text);
Alles Ungetestet |
AW: Indy für Dummies
Aber der erwarted doch ,,Get´´
|
AW: Indy für Dummies
Wo ist das Problem ? Vielleicht solltest du dich etwas mehr einbringen, es geht hier nur um dein Problem :P
|
AW: Indy für Dummies
Zitat:
Naja, vielleicht zur Erklärung. Ein "GET-Parameter" ist das, was in der URL steht. Z.B. bei "www.abc.de/abc.php?xyz=37" ist "xyz" der Parameter und der Wert ist 37. In PHP bekommst du diesen Wert dann mit $_GET['xyz']. POST-Daten werden "mit gesendet" und nicht in die Adresse geschrieben. Den Inhalt eines Memo mit all den Leerzeichen und so würde ich lieber als POST-Daten senden. Auf was du noch achten solltest, vor dem Verschicken des Memo-Textes, ist alle Fragezeichen heraus zu nehmen, bzw. durch irgendein Schlüsselwort zu ersetzen, sonst wird das später als mehrere POST-Parameter erkannt. |
AW: Indy für Dummies
@ Aphton ich hab das nicht geschrieben :?
würdest du mich kennen wüsstest du das ich da nicht war :) @AlleAnderen+Aphton das bringt so nix ich kann mir die Beträge durchlesen und weiß am ende genauso viel wie vorher. Und ich hab wie gesagt keine Ahnung. Ich verstehe fremde Programmtexte nicht, sry !!! |
AW: Indy für Dummies
Und wie sollen wir Dir da jetzt weiterhelfen?
|
AW: Indy für Dummies
Mein delphi kennt weder ,,Stream'' noch ,,ResponseMemo''
|
AW: Indy für Dummies
Worauf beziehst Du Dich jetzt?
|
AW: Indy für Dummies
Moin moin,
falls ich mich nicht verlesen habe, dann willst du die Daten (Text) an dich und einen Server schicken, um sie vorerst manuell zu sichten/zu speichern was auch immer. Was spricht dagegen, dies per Mail zu machen? Um Mail(s) zu verschicken, wirst du schon fertige Funktionen finden. Später kannst du diese Sachen dann immer noch mit anderen Protokollen auf deinen Server/zu dir befördern. |
AW: Indy für Dummies
Ich habe dir doch bereits eine fertige Version angegeben (in meinem letzten Post)
Den PHP-Code kopierst du in deinen Windows-Editor und speicherst ihn als "irgendwas.php" (im Speichern-Fenster des Editors dabei "Dateityp:" auf "Alle Dateien" stellen) Dann lädst du "irgendwas.php" auf deinen Server. Die Delphi-Funktion kopierst du einfach in dein Delphi Projekt (den Link darin nicht vergessen entsprechend zu ändern) und rufst dann in einem Abschicken-Button oder so "sendeDatenAnServer(Memo1.Text);" auf. Bei den Uses (ganz oben) schreibst du:
Delphi-Quellcode:
Da sind jetzt auch ein paar für dich Überflüssige dabei (aus einem von meinen Programmen kopiert), aber ich hab jetzt keine Lust die Richtigen rauszusuchen :-D
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdHttp, StdCtrls, Menus, ComCtrls, IdComponent; |
AW: Indy für Dummies
@fui-tak
wenn ich das so mache
Delphi-Quellcode:
kommen die fehlermeldungen
function sendeDatenAnServer(datenString: string):string;//Rückgabewert ist die Ausgabe des PHP-Scriptes
var Strings: TStringList; //Zusammengesetze Post-Daten Stream: TStringStream;//Ausgabe der Aufgerufenen Seite begin Result := ''; Stream := TStringStream.Create('');//Rückgabe-Stream erstellen Strings := TStringList.Create; //Post-Daten-StringList erstellen try Strings.Add('daten=' + datenString);//Memo1.Text (= datenString) soll im PHP-Script über $_POST['daten'] erreichbar sein try idHTTP.Post("http://#Die Adresse#.dyndns.org/upload.php?Dir=", Strings, Stream);//Datei abrufen Result := Stream.DataString; //dem Ausgabe-String die zurückgegebenen Daten zuweisen (alles was im PHP Script z.B. mit echo "..."; ausgegeben wurde) except //Fehlerbehandlung on E: Exception do ShowMessage('Error encountered during POST: ' + E.Message); end; finally Strings.Free; Stream.Free; end; end; [Fehler] Chartrans.pas(123): Undefinierter Bezeichner: 'Post' [Fehler] Chartrans.pas(124): Der linken Seite kann nichts zugewiesen werden //Bei ,,Result := Stream.DataString;'' [Fehler] Chartrans.pas(124): Anweisung erforderlich, aber Ausdruck vom Typ 'String' gefunden //nochmal bei ,,Result := Stream.DataString;'' [Fataler Fehler] Chartransfer.dpr(5): Verwendete Unit 'Chartrans.pas' kann nicht compiliert werden :?:?:shock: |
AW: Indy für Dummies
Ups, in dem Code fehlt die Erzeugung und Deklarierung der IdHTTP-Komponente
Neuer Code:
Delphi-Quellcode:
function sendeDatenAnServer(datenString: string):string;//Rückgabewert ist die Ausgabe des PHP-Scriptes
var Strings: TStringList; //Zusammengesetze Post-Daten Stream: TStringStream;//Ausgabe der Aufgerufenen Seite IdHttp: TIdHttp;//Vorher vergessene Deklaration begin IdHttp:=TIdHttp.Create(nil);//Vorher vergessene Erzeugung Result := ''; Stream := TStringStream.Create('');//Rückgabe-Stream erstellen Strings := TStringList.Create; //Post-Daten-StringList erstellen try Strings.Add('daten=' + datenString);//Memo1.Text (= datenString) soll im PHP-Script über $_POST['daten'] erreichbar sein try idHTTP.Post('http://#Die Adresse#.dyndns.org/upload.php?Dir=', Strings, Stream);//Datei abrufen Result := Stream.DataString; //dem Ausgabe-String die zurückgegebenen Daten zuweisen (alles was im PHP Script z.B. mit echo "..."; ausgegeben wurde) except //Fehlerbehandlung on E: Exception do ShowMessage('Error encountered during POST: ' + E.Message); end; finally Strings.Free; Stream.Free; end; end; |
AW: Indy für Dummies
Zitat:
|
AW: Indy für Dummies
Zitat:
Ich hab anscheinend in letzter Zeit zu viel in Java gemacht... Natürlich brauchen wir am Ende der Funktion noch das Freigeben:
Delphi-Quellcode:
Jetzt sollte es das aber gewesen sein :lol:
...
finally Strings.Free; Stream.Free; IdHttp.Free; end; ... |
AW: Indy für Dummies
Erst einmal vielen Dank an alle
Ich hab immer noch net so ganz den durchblick. Aber mein Programm macht jetz ETWAS (was ja schon eine steigerung zu vorher ist) aber wie, wo, wann, was hab ich immer noch net 100%ig gerafft. |
AW: Indy für Dummies
nur zur Info :
--------------- falls demos zu INDY10 und Delphi 2010 benötigt werden : ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz