| Autor |
Beitrag |
OliverN_26
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Fr 21.01.11 22:02
Hi
Kann ich mit der Komponente auch "direkt" einen Wert ändern?
Ich habe z.B. eine .txt Datei auf dem Server. Bisher lade ich die Datei runter,änder und schick sie wieder hoch.
Das geht doch bitte auch eleganter oder?
danke
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 21.01.11 22:18
Du weißt schon wofür FTP steht, oder?
File Transfer Protocol
Dieses Protokoll ist eben genau für den Transfer von Dateien gedacht. Zu etwas anderem ist das nicht geeignet.
Wenn du Daten ändern willst, dann geht das z.B. über ein PHP-Skript auf dem Server, das du per HTTP normal ansprichst.
Und ganz nebenbei: Ich würde nie auf die Idee kommen den Benutzern meines Programms meine FTP-Zugangsdaten zu geben. Denn anders geht das ja nun einmal nicht, die stehen ja in der Exe, wahrscheinlich sogar im Klartext.
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Fr 21.01.11 22:38
Also grundsätzlich hast du sicher Recht und "wenn ich wüsste wie es geht", würde ich auch versuchen dass zu vermeiden.
1. ist der Kreis der das Programm nutzt sehr klein, engste Familie, und keiner hat nen Schimmer wie man das Wort COMPUTER schreibt.
2. habe ich, da du mir das letztens schon einmal gesagt hast, versucht mich da ein wenig auseinander zu setzen, aber ich bin da eher Anfänger und weiss nicht wo ich ansetzen soll, geschweige denn wie man so was mit PHP umsetzt ..
--- Moderiert von Narses: Beiträge zusammengefasst---
Hättest du vielleicht mal ein Beispiel wo man sehen kann wie das gemeint ist und das gegebenenfalls auch derart umsetzen kann?
danke
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Fr 21.01.11 23:17
Dazu wäre es gut zu wissen wie die Datei aufgebaut ist, und was geändert werden soll.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Fr 21.01.11 23:26
Also das mit dem "ÄNDERN" lass ich mal aussen vor, da ich wahrscheinlich ne Datenbank-Datei Online ablegen werde.
Is nachher leichter auszuwerten. Die Frage bezieht sich auf das was jaenicke geschrieben hat.
Wenn ich eine Datei mit idhttp "downloade" oder mit idftp hochlade muss ich jedesmal meine Serverdaten angeben (Server,User,Passwort).
Wie kann ich diese Daten übermitteln, ohne sie im klartext ins Programm schreiben zu müssen, dann aber auf dem Server auch als "richtig" erkannt werden 
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Sa 22.01.11 00:13
Wenn es ne Datenbank ist, wäre es man naheliegendsten überhaupt kein FTP zu verwenden, sondern eine MySQL-Datenbank auf dem Server zu haben, die du über PHP-Scripts ansteuerst und die wiederum kannst du mit HTTP per Indy aufrufen.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Sa 22.01.11 04:25
Ok
Ich versuch mal das zu realisieren, da ich denke, da ich mit meiner Lösung auf Dauer nicht weit komme.
Ich habe nun eine Datenbank und eine Tabelle mit phpmysql auf meinem Server angelegt.
"WIE" kann ich diese nun aus Delphi raus füllen? Brauch ich bestimmte Komponenten?
vielen Dank
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 22.01.11 04:40
Du brauchst eine PHP-Datei, der du dann die Parameter übergibst.
Hier findest du ein entsprechendes Beispiel:
www.delphi-forum.de/....php?p=225590#225590
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Sa 22.01.11 04:53
1-2 Sachen kapier ich nich. Online Datenbank alles schön und gut und macht ja für das was ich machen will auch wirklich Sinn.
SQL is mir ein Begriff und nachdem was ich grad so an Schnipseln bei Mr.Google gefunden habe auch machbar. Fand das folgende Tutorial sehr hilfreich.
www.delphipraxis.net...hne-komponenten.html
1. Frage: Bin ich mit dem Tutorial auf dem richtigen Weg?
2. Frage: Da muss ich mich doch auch bei dem SQL-Server anmelden und die LogIn-Daten ins Programm hämmern
Sorry der ganzen Fragen aber das ist echt Neuland für mich nur irgendwann muss ich da ja mal ran
--- Moderiert von Narses: Beiträge zusammengefasst---
Ok
Werd mal schauen was ich davon so alles verstehe
Danke
--- Moderiert von Narses: Beiträge zusammengefasst---
Also wenn ich das jetzt richtig verstanden habe müsste das in dieser Zeile form1.idhttp1.Post('http://www.domain.de/Ordner/Highscore_add.php',t); so aussehen?
Damit werden die jeweiligen Informationen gesendet. Das Script verbindet sich automatisch (?!) mit config.php, wo die LogIn-Daten sind (dieses liegt einfach nur so auf meinem Server richtig?) und die Daten dann in die SQL Datenbank geschoben werden. Die Datei ShowHighscores.php wäre für mich interessant wenn ich die Daten auf ner Page anzeigen lassen will, was ich ja nicht will ?!
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 22.01.11 06:56
Ja, genau. Und dadurch kommt niemand an die Logindaten heran.
Um zu verhindern, dass jemand manuell das Skript aufruft, kannst du z.B. den Benutzer sich einloggen lassen. Oder einen Wert mitschicken, der sich nicht sofort erschließt, z.B. eine Zahl, die aus der Uhrzeit gebildet wird oder sowas. Das ist dann zwar kein 100%iger Schutz, aber man muss zumindest erst herausfinden wie die Zahl gebildet wird.
In jedem Fall solltest du ggf. eine Plausibilitätsprüfung auf dem Server machen, ob die Daten denn so stimmen können.
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Sa 22.01.11 07:14
Ich hab das jetzt mal für meine Zwecke abgewandelt und Delphi sagt zumindest mal keinen Fehler.
Allerdings wenn ich bei phpmysql schaue ist da "kein" Eintrag!
aus Delphi:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| sl := TStringlist.Create; sl.Add('ID=1'); sl.Add('Name=Oliver'); sl.Add('Nickname=Oli'); sl.Add('Programm=ToDo'); sl.Add('Status=main'); sl.Add('Online=1'); sl.Add('Datum=' + DateToStr(Date())); sl.Add('Zeit=' + TimeToStr(Now())); try IdHTTP1.Post('http://www.domain.de/add.php',sl); except Showmessage('Es ist ein Fehler aufgetreten!'); end; sl.Free; |
add.php
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| <?PHP require_once("config.php");
if(isset($_POST['Name'])){ mysql_query("INSERT INTO $Online_Statistic (ID,Name,Nickname,Programm,Status,Online,Datum,Zeit) VALUES ('$_POST[ID]', '$_POST[Name]', '$_POST[Nickname]', '$_POST[Programm]', '$_POST[Status]', '$_POST[Online]', '$_POST[Datum]', '$_POST[Zeit]')"); } mysql_close(); ?> |
config.php
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <?php
$mysql['hostname'] = "hostname"; $mysql['username'] = "username"; $mysql['password'] = "password"; $mysql['database'] = "database";
@mysql_pconnect($mysql['hostname'], $mysql['username'], $mysql['password']) or die ("<p>Es konnte keine Verbindung zu der Datenbank erstellt werden!"); @mysql_select_db($mysql['database']); ?> |
Ist das so richtig??
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 22.01.11 07:28
Dann schau doch einfach einmal was vom Server zurückkommt, also im Rückgabewert von Post.
Zudem kannst du in dem PHP-Skript mit echo auch eigene Debugmeldungen ausgeben.
// EDIT:
Und wie gesagt:
Vergiss nicht die Prüfung der Eingabewerte. Und maskier die auch noch schön, sonst kann ich dir mit der Skriptadresse in wenigen Sekunden die ganze DB löschen. 
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Sa 22.01.11 09:16
Rückgabewert von POST?
Sorry aber ich steh auf de Schlauch. Ich kenn mich "0" aus mit PHP.
Was meinst du damit oder besser gesagt wie gebe ich den aus?
Ich denke Eingabefelder muss ich in dem Fall nicht prüfen, da alle Werte automatisch generiert werden.
Der Benutzer hat also nicht die Möglichkeit einen der Werte manuell fest zu legen oder gegebenenfalls ein Script mit zu schicken.
Wenn ich dich richtig verstanden habe, ging es darum ?!
Die "festen" Werte habe ich jetzt nur Testweise drin. Im Program werden da variablen übergeben in denen die jeweiligen Werte sind.
Zuletzt bearbeitet von OliverN_26 am Sa 22.01.11 09:25, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 22.01.11 09:24
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Sa 22.01.11 09:33
Als Rückgabe bekomme ich den Wert von "Name". Also "Oliver".
Das andere hab ich dann auch geschnallt
Wenn ich den ersten Teil (mit dem LogIn) mit einbaue hab ich doch sicher gestellt dass das Script nur läuft wenn die Daten mit denen, die aus dem Programm kommen, übereinstimmen. Richtig?
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 22.01.11 09:41
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Sa 22.01.11 09:50
Oh man .. peinlich .. ich hatte noch das ECHO in dem Script stehen. Daher kam der Name. Sorry
Der Rückgabewert ist also "" !
Muss man da bei der IdHTTP Komponente was einstellen? Request? 
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 22.01.11 09:53
Ich hab den Fehler auch schon gesehen:
Du benutzt die Variable $Online_Statistic in dem INSERT SQL-Befehl ohne diese vorher zuzuweisen. Du gibst also gar keine Tabelle an... Vergleich mal mit dem Originalcode...
(Wenn das der Tabellenname ist, lass das $ Zeichen weg.)
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Sa 22.01.11 10:09
Oh man was für ein dummer Fehler.
Das liegt wohl daran dass ich nicht wusste das "$" eine Variable bezeichnet.
Das hat dann auch gleichzeitig mein Problem gelöst, dass ich mit der "show.php" hatte.
Damit kann ich jetzt arbeiten.
 Vielen Dank
--- Moderiert von Narses: Beiträge zusammengefasst---
Ähm .. zu früh gefreut .. wie greif ich denn nun auf die Werte zu? Auch mit IdHTTP?
Aus Delphi meine ich jetzt ..
--- Moderiert von Narses: Beiträge zusammengefasst---
Das Thema raubt mir noch jeden Nerv.
Was mache ich denn wenn ich in dem Ordner wo die PHP Scripte liegen einen .htaccess Schutz drauf habe?
Kann ich den raus nehmen, wenn ich die Dateien in einen eigens angelegten Ordner verfrachte? Schon oder?
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 22.01.11 11:33
OliverN_26 hat folgendes geschrieben : | | Was mache ich denn wenn ich in dem Ordner wo die PHP Scripte liegen einen .htaccess Schutz drauf habe? |
Naja, wenn du da einen Passwortschutz gesetzt hast, kommst du da nicht ohne heran. In einem anderen Verzeichnis geht es dann natürlich.
Ja, und um die Werte abzufragen, musst du auch wieder ein Skript nehmen. Wie du von dem IdHttp.Post die Ausgabe des Skripts bekommst, weißt du ja jetzt.
|
|