Autor |
Beitrag |
Karlson
Beiträge: 2088
|
Verfasst: Fr 18.05.07 03:07
Hallo,
Mein Programm soll über eine automatische Auftrag senden Funktion verfügen.
Zunächst dachte ich daran die Daten auf einen FTP-Server hochzuladen. Das Problem ist das Passwort. Jeder etwas fortgeschrittene User könnte das Passwort via Packetsniffer oder Hexeditor auslesen und sonstigen Unfug mit dem Server treiben.
Daher dachte ich an ein PHP-Skript das auf dem Server liegt. Dieses soll die Datei hochladen und auf dem Server speichern. Funktioniert das wenn ich die URL aufrufe und den Pfad der Datei als Parameter für das PHP Skript übergebe? Einen solchen PHP-Upload Befehl gibt es ja (siehe alle Seiten bei denen man etwas hochladen kann). Doch wie sehen die Einschränkungen aus? Eigentlich müsste es da doch Sicherheitsbeschränkungen geben. Es wäre ja schließlich fatal wenn man durch das einfache Aufrufen einen PHP-Seite unbemerkt Daten ins Internet hochladen würde können.
Meine konkrete Frage ist folgende: Meines Wissens ist das nur ein Befehl in PHP und ein paar Übergabeparameter: Könnte mir jemand dieses PHP Skript schreiben und mir sagen wie ich es aufrufen muss? Ich weiss natürlich das niemand sowas hier gerne macht, aber ich habe in PHP noch nie etwas gemacht und möchte mich eigentlich auch nur ungern in die Materie einarbeiten um so ein kleines Skript zu schreiben.
Möglichkeit 2: Ich habe ein einfaches PHP Skript gefunden mit dem ich an eine eMailadresse eine Nachricht verschicken kann:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| <?php $empfaenger = "k******@googlemail.com"; //eMailadresse des empfängers. $betreff = "Aufgtrag XYZ."; $from="From:Bla@bla.de"; $text = "Hier müssten dann die Auftragsdaten rein!";
$senden = mail($empfaenger, $betreff, $text, $from);
if($senden == true) { echo "Ok."; } else { echo "Error."; } ?> |
Im Grunde wäre das Senden ein eMail auch in Ordnung! Denn im Prinzip bestehen die Auftragsdaten nur aus Plaintext. Allerdings müsste das dann entsprechend formatiert in der eMail angezeigt werden. Sprich ich müsste mit HTML-Code arbeiten.
Doch wie kann ich mit Delphi diesem PHP Skript eine Stringvariable übergeben?
Und wie lange können die Strings sein? Kann gut sein dass die spezifische Auftragsdaten länger als 1000 Zeichen sind.
Also, danke schonmal.
lg.
|
|
GTA-Place
Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 18.05.07 07:24
Die Daten mit IdHTTP.Post() an das Script senden:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| <?php $empfaenger = "k******@googlemail.com"; //eMailadresse des empfängers. $betreff = "Aufgtrag XYZ."; $from="From:Bla@bla.de";
if (!empty($_POST['data'])) { $text = $_POST['data']; $text = htmlentities(stripslashes($text)); // Könnte eventuell noch zu unsicher sein. $senden = mail($empfaenger, $betreff, $text, $from); if ($senden) echo 'Okay.'; else echo 'Error.'; } ?> |
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
BenBE
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 18.05.07 14:47
Wieso sendest Du die Auftragsdaten nicht direkt mit IdSMTP???
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Karlson
Beiträge: 2088
|
Verfasst: Fr 18.05.07 19:38
Weil ich mich dann doch auch mit Passwort und Username am Mailserver authorizieren muss! Und schon stünde das PW wieder in der Exe und ließe sich auslesen. Glaub ich zumindest
|
|
BenBE
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 18.05.07 20:11
Dann gibt es zwei Möglichkeiten:
1. Du konfigurierst den Mailserver so, dass mit den besagten Login-Daten allein an die Ziel-Adresse Mails gesendet werden können. Zwar nicht elegant, aber ausreichend.
2. (Favorisiert) Sagst dem User, dass er seine Login-Daten für seinen Email-Postfach als Absender angeben muss.
Wenn Du unbedingt am PHP-Skript festhalten willst:
- Würde es gehen, dass das PHP-Skript die empfangenen Daten bereits in eine Datenbank abspeichert, aus der Du die Infos zentral weiterverarbeiten kannst.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Karlson
Beiträge: 2088
|
Verfasst: Fr 18.05.07 23:25
Hi,
Also zu 1.) Ich hab keine Konfigurationsmöglichkeiten am Mailserver, da es nicht mein Mailserver ist. Das Programm wird dynamisch einstellbar, sprich der Empfänger der Auftragsdaten ist nicht statisch. Kann sein dass vielleicht sogar ein Funpicserver die eMail verschickt! Je nachdem was der Benutzer für einen Server einstellt.
Zu 2.) Dann könnte man dem Benutzer gleich sagen: Schicken sie diese eMail an folgende eMail adresse. Das wäre nicht das was ich mir vorstelle.
Ich würde schon gerne an dem PHP Skript festhalten. Die Datenbanklösung wäre auch Möglich. Dann müsste das Abrufprogramm eben auf diese Datenbank zugreifen.
Ich bin jetzt etwas weiter gekommen:
Quelltext 1: 2: 3:
| <?php echo $_GET["CMD"]; ?> |
Ich könnte dem Skript die relevanten DAten dann ganz einfach als Übergabeparamter übergeben (indem ich mit idhttp diese Url anspreche: "http://www.domain.de/testskr.php?CMD=AuftragXYZ_vom_XYZ_von_XYZ_umfasst_XYZ_USW" )
Ich hab das vorhin mal getestet und es war sogar möglich den Parameter über 2000 Zeichen lang zu machen.
Das schönste und einfachste wäre wenn das Skript den Parameter dann direkt per eMail versenden würde. Das Problem ist dabei allerdings die Darstellung. Die ist halt ziemlich hässlich, da keine Leerzeichen (und viele andere Sonderzeichen) nicht mit übergeben werden können. Wie könnte ich die Nachricht ein wenig formatieren? Sprich das ich wenigstens Zeilenumbrüche und Leerzeichen habe? Wie ginge das wenn ich eine HTML Email versenden wollte?
lg.
|
|
GTA-Place
Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 19.05.07 06:33
GTA-Place hat folgendes geschrieben: | Die Daten mit IdHTTP.Post() an das Script senden:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| <?php $empfaenger = "k******@googlemail.com"; //eMailadresse des empfängers. $betreff = "Aufgtrag XYZ."; $from="From:Bla@bla.de";
if (!empty($_POST['data'])) { $text = $_POST['data']; $text = htmlentities(stripslashes($text)); // Könnte eventuell noch zu unsicher sein. $senden = mail($empfaenger, $betreff, $text, $from); if ($senden) echo 'Okay.'; else echo 'Error.'; } ?> | |
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Karlson
Beiträge: 2088
|
Verfasst: Sa 19.05.07 14:38
Moin,
Dein Skript funktioniert bei mir nicht. Es kommt einfach garnichts wenn man es aufruft! (Weder ok noch fehler).
|
|
GTA-Place
Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 19.05.07 15:16
Logisch, weil $_POST['data'] leer ist. Ruf das ganze mal mit Indy auf und schicke irgendwas für "data". Dann kannst du mit ShowMessage den Rückgabewert ausgeben.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
arj
Beiträge: 378
Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
|
Verfasst: Sa 19.05.07 15:18
Naja, mal kurz ein Vorschlag:
Wie wäre es denn, SSL-Verschlüsselung zu verwenden.
Die meisten handelsüblichen SMTP-Server unterstützen das,
damit ist eine verschlüsselte Übertragung möglich.
(für das wurde es schließlich entwickelt )
|
|
BenBE
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 19.05.07 16:06
Weil dem Skript die Daten über POST geschickt werden müssen und nicht über GET, wo es mich eh schon wundert, dass der getestet Server nicht mit ner 502 als Statuscode geantwortet hat.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Karlson
Beiträge: 2088
|
Verfasst: Sa 19.05.07 16:14
Ich verwende zum testen das IdHTTP Demo. Method ist Post, und ins Postinformationfeld gebe ich meine Daten ein.
Wie muss ich es denn richtig machen?
|
|
GTA-Place
Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 19.05.07 17:15
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
|