Autor Beitrag
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Fr 18.05.07 04: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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 18.05.07 08:24 
Die Daten mit IdHTTP.Post() an das Script senden:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 18.05.07 15: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Fr 18.05.07 20: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 :gruebel:
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 18.05.07 21: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Sa 19.05.07 00: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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 19.05.07 07:33 
user profile iconGTA-Place hat folgendes geschrieben:
Die Daten mit IdHTTP.Post() an das Script senden:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Sa 19.05.07 15:38 
Moin,

Dein Skript funktioniert bei mir nicht. Es kommt einfach garnichts wenn man es aufruft! (Weder ok noch fehler).
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 19.05.07 16: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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
BeitragVerfasst: Sa 19.05.07 16: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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 19.05.07 17: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Sa 19.05.07 17: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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 19.05.07 18:15 

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)