[Homepage] exe starten (auf Server) per Button

  • #1
F

Fizbin

Bekanntes Mitglied
Themenersteller
Dabei seit
09.07.2003
Beiträge
220
Reaktionspunkte
0
Hallo.

Mein grundlegende Problem ist, das ich (noch) keine Ahnung von Webprogrammierung habe. Daraus resultiert das eigendliche Problem:

Ich möchte auf der Homepage ein Button einfügen der auf dem Server eine exe-Datei ausführt. Es soll eine Meldung erscheinen das die exe gestartet wurde.

Bei meinen bisherigen Versuchen habe ich folgendes geschafft:
- per Link wird eine php- Seite aufgerufen die mit der exec()- Funktion die Datei startet.
- ein Button der onclick per Java-Skript eine MassageBox öffnet.

Leider fehlen mir die Kenntisse diese beiden Sachen zusammenzukriegen: Ein Button der eine Datei startet und eine MsgBox anzeigt.

Kann mir jemand weiterhelfen und mir ein Codebespiel posten?

Weitere Infos: Webserver (Jana2) läuft im lokalem Netzwerk. PHP ist installiert. Die exe muss mit Parametern ausgeführt werden und beendet sich nach 5 sek. von selbst. Lösung soll mittels html, Javaskript, php erfolgen; kein ActiveX.
 
  • #2
Hi

Schreib in die php Datei einfach noch die Asugabe rein:

...
<body onload=msgbox('mein Text')>
..
</body>

Gruß, Michael
 
  • #3
Danke schonmal für die Antwort. Leider klappt es bei mir nicht. Frontpage meckert die Zeile immer an.

Zudem ist es leider auch nicht ganz das was ich suche. Bei der Lösung wird es so aussehen das ich eine Seite lade die die Datei startet und die Meldung ausgibt. Der Besucher soll aber auf der Seite mit dem Button bleiben; es soll keine andere Seite geladen werden.

Da ich wirklich wenig Ahnung von Webprogrammierung habe wäre es auch nett wenn ihr Beispielquelltexte komplett posten könntet, ansonsten wäre es denkbar das ich an eingentlichen Selbstverständlichkeiten scheitere.
 
  • #4
Also das Frontepage etwas anmeckert was Standartkonform ist wundert mich eh nicht. Was mich viel eher wundert ist das es heute noch Leute gibt die mit Frontepage arbeiten. Aber genug vom Thema abgewichen, ich glaube man hat bereits gemerkt was ich von Frontpage halte. Zunächst mal gebe ich dir den Tipp besorg dir entweder ein Programm wie Dreamweaver oder eine der vielen und fast genauso guten Ersatzprogramme (oftmals als Freeware u.ä. erhältlich) Hier z.B. findest du ein paar schöne Programme: http://www.wintotal.de/Software/index.php?rb=24

So aber nun zu deinem Problem. Ich glaube hiermit müsste es klappen:

<a href=zuöffnendedatei.php onClick=javascript:alert('Hier steht dein Text');><img src=BilddesButtons.jpg></a>

alternativ dazu:

<a href=zuöffnendedatei.php onClick=javascript:alert('Hier steht dein Text');>Text Button</a>

Allerdings wird die zuöffnende Datei erst dann geöffnet und erst dann ausgeführt sobald die Alert Meldung bestätigt wurde! Aber ne andere Möglichkeit fällt mir spontan nicht ein. Falls dir das immer noch nicht ausreicht melde dich nochmal dann schau ich nochmal nach ob mir ne andere Möglichkeit einfällt.
 
  • #5
Gandalf_the_Grey schrieb:
<a href=zuöffnendedatei.php onClick=javascript:alert('Hier steht dein Text');><img src=BilddesButtons.jpg></a>

alternativ dazu:

<a href=zuöffnendedatei.php onClick=javascript:alert('Hier steht dein Text');>Text Button</a>

Das wäre aber auch nicht der Sinn der Sache (wenn ich Fizbin richtig verstanden habe), da die Meldung, dass die EXE-Datei gestartet wurde, ja vor dem Start der EXE bereits erscheint...

Ich würde folgendermaßen vorgehen (die exec()-Funktion gibt als Rückgabe die letzte Ergebnis-Zeile des ausgeführten Programms zurück. Ich geh davon aus, dass die die bekannt ist):

Link: <a href=startexe.php>Linktext</a>

in der startexe dann
Code:
<?
  if(exec(...)!=die letzte Zeile) { //Erfolgsfall. Datei wurde ausgeführt
    $message=Datei wurde erflolgreich ausgeführt.;
  }
  else { //Kein Erfolg
    $message=Datei wurde NICHT erfolgreich ausgeführt!;
  }
?>

<html>
<head>...</head>
<body onload=javascript:alert('<?echo $message?>')>
...
</body>
</html>
 
  • #6
Hallo.

Erstmal Danke für die Vorschläge. Fangen wir unten an.
Die MassageBox: Prinzipiell ist es mir egal ob der User vor dem Start, zur Laufzeit oder nach Beendigung des Programmes die Meldung erhält.
Die Lösung mit der Auswertung der Rückgabe gefällt mir gut, leider weiss ich noch nicht genau wie ich es anwenden muss, werde es mir aber nochmal genauer anschauen.
Was ist denn eine Ergebniszeile des ausgeführten Programmes? Hier häng ich mommentan. Bekannt ist das Programm recht gut, da selbst geschrieben. Das Programm schaltet übrigens, je nach Parameterübergabe, unterschiedliche LEDs ein und aus.

Leider funktioniert das Starten de EXE auf dem Server mit
Code:
<a href=licht.exe onClick=javascript:alert('Hier steht dein Text');>Text Button</a>
auch nicht. Der Browser versucht dann die Datei runterzuladen. Sie soll aber auf dem Server gestartet werden (mit Parametern!).
(Desweiteren soll keine neue Seite geöffnet werden, wenn auf den Button geklickt wird).

@Gandalf:
Mein Editor werde ich bei Zeiten ändern.
 
  • #7
Das das Starten per HTML nicht funktioniert ist klar und liegt am Webbrowser. Es ist allgmein nicht möglich eine .exe Datei einfach so auszuführen. Liegt am Konzept von allen Web und Scriptsprachen. Denn um es einfach auszudrücken: Dafür ist z.B. HTML nicht gedacht! Über PHP ist das was anderes weil diese Scriptsprache eine ganz andere Zielsetzung als z.B. HTML. Außerdem ist HTML, wie auch alle anderen Websprachen eine Platformunabhänige!!! Aber das jetzt alles zu erklären bzw. zu diskutieren führt denke ich zu weit.
 
  • #8
Ach übrigens, noch was allgemeines. Das ausführen von Dateien auf einem Zielrechner das von einem anderen Rechner angestoßen wird, wiederspricht jeglichem Sicherheitskonzept. Sowas macht man entweder über Fernsteuerungen oder andere gesicherte Funktionen. Alles andere ist eine Unterminierung jeglichen Sicherheitsgebahrens.

Ein Beispiel:

Könntest du per CLIENTseitiger HTML Datei eine EXE auf einem Server ausführen könnte ich das auch illegal mit einer manipulierten HTML Datei von meinem Rechner aus.

Da PHP SERVERseitig ist, ist das schonmal was ganz anderes, wobei ich auch diese Möglichkeit schon als ziemlich gefährlich und zweifelhaft halte.
 
  • #9
Hallo.

Das das clientseitige Ausführen von Dateien auf dem Server nicht sicher ist, dachte ich mir ja auch schon. Der Hinweis mit dem serverseitigen PHP hat nun meine andere Vermutung bestätigt, das das mit PHP (einigermassen) in Ordnung ist (Danke).


Zum besseren Verständnis erläutere ich mal genauer was ich vorhabe.

Der Server läuft in meinem Netzwerk und ist auch über das Internet erreichbar, aber nur für Freunde. Das Netzwerk hängt an einem dsl-Router (128kbit/s UP). Da (aus Sicherheits- und Trafficgründen) nur Freunde auf den Server sollen, habe ich das wie folgt gelöst:
- IP- Posting auf unbekannte Site (Freunde kennen diese Site)
- Server nicht auf Port 80 erreichbar
- Root- Verzeichnis ist .htaccess geschützt.

Ich hoffe das reicht sicherheitstechnisch fürs erste.


Auf der Site selber wird per javascript immer ein aktuelles Bild der Webcam geladen. Die Software zum Capturen ist auch aus eigener Feder.
Das Webcambild zeigt eine Höhle meines Aquariums. Mit ein wenig Bastelei habe ich in diese Höhle superhelle LED's zur Beleuchtung eingebaut die über den Rechner geschaltet werden können; mittels einem IO-WARRIOR40-Chip(http://www.codemercs.com).
Der IO-WARRIOR ist eine Schaltung die an den USB-Port angeschlossen wird. Über die Ports des IO-WARRIORS lassen sich recht einfach LEDs zum Leuchten bringen. (Desweiteren bringt der IO-Warrior auch tolle SpecialModeFunktionen, wie die Ansteuerung von IIC-Bus und LCD mit.

Ich hab mit der IO-Warrior Schaltung schon rumprobiert, Allerdings immer nur mit VB da mir dies flüssig aus der Hand geht.

Da ich von cgi-bin auch gar keine Ahnung habe, werde ich hierfür eine (ersteinmal) eine EXE einsetzten. Zudem weiss ich auch garnicht ob die IO-WARRIOR-API cgi-bin-skripsprachen unterstützt.
Deswegen die EXE die ich auf dem Server ausführen möchte.





Ist es zwingend notwendig das ich eine neue Seite mit dem php-Code starte, der die EXE ausführt?????



EDIT: Hab eben in Erfahrung gebracht das die IO-WARRIOR-APi auch von einem delphi-cgi-bin angesprochen werden kann.
 
  • #10
Also, zunächst einmal würde ich dir raten wenn es möglich ist den IO-Warrior per CGI anzusprechen. Da du VB ja scheinbar recht gut kannst und du wahrscheinlich mehr kannst als nur Fenster und Funktionen mit Hilfe einer grafischen Oberfläche zusammen zu pfuschen. Dürfte es ja für dich kein Problem geben CGI und PHP in den Grundlagen schnell zu erlernen. Sobald du da einen sicheren Stand hast würde ich das ganze tatsächlich gänzlich über eine Scriptsprache lösen (zumindest was das starten angeht). Denn eine unsaubere Schnittstelle (nichts anderes ist das ausführen einer *.exe per PHP) Birgt IMMER große Sicherheitsrisiken. Nicht umsonst wurden gewisse Hirarchien was wie wo wann und von wem gestarten werden darf festgelegt. Denn über das Remote ausführen dieser Exe ermöglichst du unter Umständen einem dritten Zugriff zu deinem System zu verschaffen. Ist zwar abwegig, muss aber nicht sein. Ist schon ärgerlich genug wenn man sich über die von Fremdanbietern eingeschleusten Sicherheitsprobleme gedanken machen muss. Da muss man nicht noch eigene Lücken fabrizieren. Vor allem im Bereich Webserver auf Heim PC's sollte man da verdammt vorsichtig sein, vor allem was die konfiguration des Servers angeht.
Aber genug meiner Vorträge und Schwarzmalerien. Wollen wir mal wieder von Fakten reden. Wenn ich das richtig sehe und verstehe ist es meines erachtens nicht notwendig eine gänzlich neue Seite aufzumachen um den Code auszuführen. Wenn du es anders haben willst musst du halt das PHP Script ein wenig abändern. Du kannst z.B. bei meiner Variante mit dem target Attribut die Seite in dem bereits geöffneten Browserfenster arbeiten. Aber wie du das genau lösen willst, überlasse ich dir. Fakt ist es ist NICHT zwingend notwendig ein neues Browserfenster zu öffnen. Zum Abschluss noch eine alt bekannte Weisheit eines guten Freundes und sehr sehr guten Web und Anwendungsprogrammierers: MÖGLICH IST ALLES, DIE FRAGE IST NUR WAS ES KOSTEN DARF UND WIE LANGE SIE ZEIT HABEN!!!
 
  • #11
Hallo

Danke für den Tipp. Ich denke ich werd Deinen Ratschlag befolgen und versuchen das ganze über ein Perl-CGI zu lösen, irgendwann muss ich ja mal mit dem Kram anfangen (besser man macht es gleich richtig).

Ich werd bestimmt noch die ein oder andere Frage hier in dem Forum stellen müssen.

Noch eine Frage: Kennt jemand eine gute Seite über PERL-CGI für Einsteiger? Ich mein sowas wo grundlegende Fragen geklärt werden, wie z.B. wo bekomme ich den Interpreter her, was für ein Editor ist geeignet, muss ich was installieren, etc.
 
  • #12
Also eine wirklich gute Seite kann ich nicht empfehlen. Außer mein Standardforum für Fragen rund um Webdesign http://www.php-resource.de dort findest du Spezis für alles was mit Webdesign zusammen hängt. Zum Thema Interpreter kann ich nur sagen das dieser beim Apache Webserver schon standard mäßig mit dabei ist und in der Standardkonfiguration funktionsfähig ist. Ansonsten lade dir einen XAMPP runter (fertig konfiguriertes Webserver Packet mit MySQL, PHP, CGI usw. und das alles fertig konfiguriert out of the Box) Als Editior eigent sich eigentlich jeder halbwegs vernünftige Webeditor (Dreamweaver, Homesite, Go Live und wie sie alle heißen). Also ist alles nichts besonders.
 
  • #13
Hm, jetzt muss ich auch mal meinen Senf dazu geben ;D

Ich verstehe nciht ganz, warum das ganze jetzt über nen CGI-Script machen willst. Michael_B hat deine Frage doch bereits beantwortet - mit PHP.

Ist es zwingend notwendig das ich eine neue Seite mit dem php-Code starte, der die EXE ausführt?????
Die Frage verstehe ich nicht. Du brauchst natürlich eine PHP-Seite, die interpretiert wird. Mit HTML geht es nunmal nicht. Eine Extra-Seite? Nein, es kann auch die Seite deine Exe Starten, von der du den Button drückst. Das ist auch möglich.

Was die letzte Zeile angeht, so kannst du die Funktion exec() im Manual auf www.php.net angucken. Gibt es auch auf Deutsch.
 
  • #14
Ich verstehe nciht ganz, warum das ganze jetzt über nen CGI-Script machen willst. Michael_B hat deine Frage doch bereits beantwortet - mit PHP.

Ich will die EXE UMSCHREIBEN in ein cgi, NICHT die EXE mit php aufrufen. Deswegen die CGI. Bin mir übrigens doch nicht so sicher das das mit PERL gehen wird (s.o.), dafür aber zumindest mit Delphie und C++.

Die Frage verstehe ich nicht.
:-[
Das mag daran liegen das ich von php keine Ahnung habe.
Das Manual kenn ich, hab es aber in den letzten 3 Tagen noch nicht komplett geschafft, da ich nebenher auch noch andere Manuals lese....
 
  • #15
Dein Server läuft mit Win9x,Nt,2k oder xp nehm ich mal an. Wenns per php nicht geht, warum auch immer, mach doch einfach folgendes: Erzeug ne Exe Datei, die auf nem anderen Port (z.B.81) eine art zweiten Webserver bereitstellt. Allerdings is das einzige was sie macht, Parameter entgegennehmen. Mit diesen startet sie dann die fest definierte Exe (Sicherheitsrisiko besteht natürlich, kann aber durch gute programmierung gedämpft werden) und schmeißt über den TCP Socket das Resultat des Startens der anderen Exe an den anfragenden Browser zurück.
Weißt du wie ich das mein? Kannst dus realisieren? Wenn nein, meld dich per Mail und schreib am besten deine Icq Nummer mit dazu, dann helf ich dir.
Grüße aus München,
Servus!
 
  • #16
Witzig das der Thread nach der langen Zeit wieder vorgekramt wird.
Mittlerweile hat sich das Programm und die Hardware noch ein wenig weiterentwickelt. So wird nun auch noch ein Schrittmotor angesteuert, Temperaturfühler ausgewertet, Webcambilder gecaptured (usw.).

Mit der Website bin ich zwar immer noch nicht weiter, aber ich plane in das Programm eine Routine einzubauen, die eine Text- oder Binärdatei in Intervallen auswertet. Die (temporäre) Text- oder Bin-Datei soll über die Website angelegt werden.

Das mit dem Webserver einbauen ist zwar auch eine gute Idee, aber ein wenig komplizierter als die Lösung die ich mir überlegt habe ;)
 
Thema:

[Homepage] exe starten (auf Server) per Button

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben