Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Indy für Dummies (https://www.delphipraxis.net/161037-indy-fuer-dummies.html)

DeddyH 15. Jun 2011 07:08

AW: Indy für Dummies
 
Abgesehen davon:
Zitat:

Delphi-Quellcode:
var
Post:TIdMultipartFormDataStream;
begin
Stream := TIdMultipartFormDataStream.Create;

Was denn nun, Post oder Stream, wie soll die Variable heißen?

-187- 15. Jun 2011 11:10

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.

Exterminans 15. Jun 2011 15:15

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;
?>

-187- 16. Jun 2011 05:49

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!

Exterminans 17. Jun 2011 10:19

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)

Aphton 17. Jun 2011 10:42

AW: Indy für Dummies
 
Zitat:

Das du so ein simples problem nicht alleine lösen kannst ist total lächerlich
hör auf die leute hier zu nerven und google das einfach
punkt aus !!!!
Zitat:

kann ich dir jetzt helfen oder was ?
ich hätte jetzt kurz zeit !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Aha, du hast ihm ursprünglich also eigentlich nicht helfen können, weil du keine Zeit hattest. Dies gibt dir aber nicht das Recht, auf eine Person so loszugehen. Das ist einfach nur böse!
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?

DeddyH 17. Jun 2011 10:43

AW: Indy für Dummies
 
Man kommt sich vor wie im Kindergarten *koppschüttel* :?

Aphton 17. Jun 2011 10:47

AW: Indy für Dummies
 
Zitat:

Man kommt sich vor wie im Kindergarten *koppschüttel*
Ja sorry, normalerweise begebe ich mich nicht auf dieses Niveau aber um des Forums Wegen habe ich das einmal getan :P Und ich bin willig, noch tiefer zu gehen ^^

Zitat:

ja wenn ich doch jetzt zeit habe dann lass mich doch
und misch dich da nicht ein !!!!!
Ich habe dir nichts verboten. Du darfst mir auch nichts verbieten!

DeddyH 17. Jun 2011 10:48

AW: Indy für Dummies
 
Dich hatte ich gar nicht gemeint ;)

Aphton 17. Jun 2011 10:49

AW: Indy für Dummies
 
:roll:

Phoenix 17. Jun 2011 10:53

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 :)

-187- 17. Jun 2011 10:56

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 :)

DeddyH 17. Jun 2011 10:58

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?

fui-tak 17. Jun 2011 12:06

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: http://www.delphipraxis.net/post421959.html)
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
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;
Und der Aufruf:
Delphi-Quellcode:
sendeDatenAnServer(Memo1.Text);

Alles Ungetestet

Exterminans 19. Jun 2011 00:11

AW: Indy für Dummies
 
Aber der erwarted doch ,,Get´´

-187- 19. Jun 2011 13:59

AW: Indy für Dummies
 
Wo ist das Problem ? Vielleicht solltest du dich etwas mehr einbringen, es geht hier nur um dein Problem :P

fui-tak 20. Jun 2011 14:49

AW: Indy für Dummies
 
Zitat:

Zitat von Exterminans (Beitrag 1107254)
Aber der erwarted doch ,,Get´´

Wer ist denn er?


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.

Exterminans 21. Jun 2011 08:38

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 !!!

DeddyH 21. Jun 2011 08:54

AW: Indy für Dummies
 
Und wie sollen wir Dir da jetzt weiterhelfen?

Exterminans 21. Jun 2011 09:05

AW: Indy für Dummies
 
Mein delphi kennt weder ,,Stream'' noch ,,ResponseMemo''

DeddyH 21. Jun 2011 09:33

AW: Indy für Dummies
 
Worauf beziehst Du Dich jetzt?

x000x 21. Jun 2011 14:29

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.

fui-tak 23. Jun 2011 19:06

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:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdHttp, StdCtrls, Menus, ComCtrls,
  IdComponent;
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

Exterminans 26. Jun 2011 15:12

AW: Indy für Dummies
 
@fui-tak

wenn ich das so mache
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
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;
kommen die fehlermeldungen

[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:

fui-tak 26. Jun 2011 16:03

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;

himitsu 27. Jun 2011 13:02

AW: Indy für Dummies
 
Zitat:

Delphi-Quellcode:
  IdHttp:=TIdHttp.Create(nil);//Vorher vergessene Erzeugung

Und wann gibst du das wieder frei?

fui-tak 27. Jun 2011 13:36

AW: Indy für Dummies
 
Zitat:

Zitat von himitsu (Beitrag 1108516)
Und wann gibst du das wieder frei?

Hoppla :oops:
Ich hab anscheinend in letzter Zeit zu viel in Java gemacht...

Natürlich brauchen wir am Ende der Funktion noch das Freigeben:
Delphi-Quellcode:
...
  finally
    Strings.Free;
    Stream.Free;
    IdHttp.Free;
  end;
...
Jetzt sollte es das aber gewesen sein :lol:

Exterminans 27. Jun 2011 16:32

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.

bernhard_LA 2. Jul 2011 07:10

AW: Indy für Dummies
 
nur zur Info :
---------------

falls demos zu INDY10 und Delphi 2010 benötigt werden : http://sourceforge.net/projects/indy10clieservr/


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.
Seite 2 von 2     12   

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