php - mit echo-Befehl auf gleicher Seite bleiben

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen

    Ich habe einen Button per HTML erstellt. Wenn ich diesen Button drücke soll es ein anderes Programm per php ausführen.
    Nach drücken des Buttons wechselt der Browser jedoch auf die Datei exec.php (Erscheint einfach eine weisse Seite).
    Ich möchte aber, dass ich auch nach dem drücken vom Button auf der gleichen Seite bleibe.

    PHP Script:

  • Hallo paper12,
    da gibt es mehrere Möglichkeiten

    • Du integrierst das PHP-Skript in das Formular (z.B. zwischen <body> und <form>
    • Du rufst das PHP-Skript in einem IFrame auf (Target des Formulars anpassen)
    • Du rufst das PHP-Skript über JS/Ajax auf

    Gruß
    Chris

    • Offizieller Beitrag

    Hallo paper12,


    (Erscheint einfach eine weisse Seite)

    die leere Seite auf exec.php erklärt sich dadurch, dass ein Kommando/Programm mit dem Namen "hallo" auf Deinem RPi nicht existiert. Du könntest statt "hallo" mal z.B. "whoami" verwenden, damit lässt Du den Benutzername anzeigen, unter dem PHP läuft. Das Beispiel und weiter Verwendung von exec findest Du hier. Wenn Du aber einfach nur "hallo" sehen willst, dann reicht ein:

    PHP
    echo "hallo";
  • Hallo zusammen danke für die Antworten, ich habe das PHP Script nun in das HTML File eingefügt:

    Dies hat auf Windows Super funktioniert.
    Jedoch muss ich dass nun auf dem Webserver vom Raspi einführen. Dort muss ich dann am Schluss ein Python Script starten.

    Weiss von euch zufälligerweise jemand, wie ich das nun umschreiben muss, wenn die Pythondatei im gleichen Ordner ist, wie die index.php und exec.php?

    Danke & Gruss

    Einmal editiert, zuletzt von paper12 (9. Juni 2017 um 15:49)

  • Hallo paper12,
    [code=php]<?php
    exec('python script.py');
    ?>[/php]
    sollte schon reichen. Falls das Skript länger läuft, würde ich zusätzlich noch ein & ans ende des Aufrufs schreiben.
    Gruß
    Chris

    Einmal editiert, zuletzt von ChrisvA (10. Juni 2017 um 07:31)

  • bei mir hat das nicht geklappt. Also ich habe diesen Code in das "exec.php" File eingefügt.
    Oder muss ich das ins index.php einfügen?


  • bei mir hat das nicht geklappt. Also ich habe diesen Code in das "exec.php" File eingefügt.

    Was bedeutet klappt nicht?
    Hast du beachtet, dass der www-data Nutzer (des Webservers) nur verminderte Rechte hat? (Siehe Forensuche)


    Oder muss ich das ins index.php einfügen?


    Keine Antwort, versuch mal zu verstehen, was der Code macht, dann stellt sich die Frage nicht :)

  • [code=php]
    <?php include ("exec.php"); ?>
    <form action ("exec.php") method='POST'>
    [/php]

    Das macht so sowieso keinen Sinn. was auch immer in der exec.php drin steht wird durch include(); direkt ausgeführt - kaum vorstellbar dass das gewollt ist.
    Das extra aufteilen auf jeweils separate PHP Dateien halte ich hier ebenfalls für überflüssig bzw wenn in exec.php nur so wenig drin steht kann man das auch problemlos direkt in der index.php stehen haben - dann eben mit entsprechenden Abfragen um sicher zu stellen das es nur dann ausgeführt wird wenn gewollt...

    Wenn du aber vor hast ein Python Script über eine Webseite auszuführen und du dich wunderst bzw ärgerst das dann jedes mal die komplette Seite neu geladen wird, solltest du nach einem anderen Weg ausschau halten. Genannt wurde der schon: AJAX.

    Insbesondere wenn du umfangreichere Python Codes ausführen willst, wie zum Beispiel das schalten von GPIO's, solltest du lieber vollständig Abstand von PHP und apache2&Co nehmen. Setze den Webserver dann lieber in Python um:

    FAQ => Nützliche Links / Linksammlung => [Python] Webserver, Websocket und ein bisschen AJAX

    Über erwähnte Forumsuche (oben links) findet man dazu bereits ziemlich viele Beiträge.... In meinem "Sample Code Repo" liegt zB auch ein Projekt für eine Alarmanlage


    Wenn du dennoch bei PHP bleiben willst helfen dir ggf folgende Links:
    FAQ => Nützliche Links / Linksammlung => PHP: Anleitung zum schalten von GPIO ... hier solltest du unbedingt die Einführung und Grundlagen lesen, auch wenn du kein GPIO schalten willst!
    FAQ => Nützliche Links / Linksammlung => Befehle über PHP mit root Rechten ausführen (sudo webscript)


  • [quote='paper12','http://test.forum-raspberrypi.de/forum/index.ph…6704#post286704']
    bei mir hat das nicht geklappt. Also ich habe diesen Code in das "exec.php" File eingefügt.

    Was bedeutet klappt nicht?
    Hast du beachtet, dass der www-data Nutzer (des Webservers) nur verminderte Rechte hat? (Siehe Forensuche)


    Ich habe nun die Rechte des www-data Nutzer auf ALL= (ALL) NOPASSWD: /... gestellt.
    Ich muss ja einen Button auf einer Website klicken. Anschliessend soll es mir per PHP Script ein Python-File ausführen. Dies bekomm ich jedoch noch nicht hin.

    Einmal editiert, zuletzt von paper12 (11. Juni 2017 um 21:44)

  • Umfangreiche Infos, danke dafür (als Querleser hier).

    Ich bin selbst (noch) kein Python-Nutzer, aber hast du ggf. schon Erfahrungen mit der Python-Integration des nginx Webservers gemacht? Ich denke, das könnte auch ein netter Lösungsansatz für den Themenstarter sein und mich selbst interessieren dazu Erfahrungsberichte von Leuten, die das nicht erst drei Wochen machen.

    .NET-, Unity3D-, Web-Dev.
    Mikrocomputer-Hobbyist.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!