Fehler in Ansteuerung PHP <-> GPIO

  • Hallo zusammen,


    ich hab mir in HTML eine Website mit Ansteuerung für die GPIOs gebastelt.

    Allerdings funktioniert mein Code nicht so ganz. Weiss jemand auf Anhieb wo das Problem liegt? :danke_ATDE:


  • Ich sehe keinerlei Aktionen bzw. Dateiaufrufe der Form-Tags, die dann GPIOs steuern könnten.

    Validiere mal deinen Code. So kann man z.B. nur 1x <body> einleiten, nicht 2x.

    • Official Post

    Zusätzlich zu den Anmerkungen von @flyppo und ohne mir den Code genauer angesehen zu haben... ;)


    - Erkläre mir bitte was das trim(@shell_exec soll bzw. ob Du weißt was das bewirkt!

    - Welche Dateiendung hat die Datei?

    - Ist PHP auch installiert?

    - Darf der Webserver www-data die GPIOs verwenden?

    - Zeile 82: Doppelslash nutz man für Kommentare in PHP, nicht bei HTML.

  • Ich sehe keinerlei Aktionen bzw. Dateiaufrufe der Form-Tags

    Ich glaube, wenn das action-Attribut eines form-Elements fehlt wird der POST-Request auf die aktuelle URL abgesetzt. Dass das PHP unvollständig/falsch auskommentiert/für POST nicht vorhanden ist, ist ne andere Sache.

    Validiere mal deinen Code.

    Auf jeden Fall, z.B. hiermit: https://validator.w3.org/check


    16 Fehler, 7 Warnungen. Mich wundert da gar nichts mehr :stumm:



  • @flyppo: Das was unten auskommentiert ist.. Das soll von den Buttons aktiviert werden.. :)


    @ RTFM: Was meinst du damit? :conf:

  • Also PHP ist installiert..


    Hier her habe ich das mit dem trim(@shell_exec...


    Ich hab von HTML/PHP nicht wirklich Ahnung. Habe das Projekt nur nochmal aufgegriffen.. Ist 3-4 Jahre alt :D

    • Official Post

    Da fallen mir doch gleich noch zwei Dinge auf. Im Formular schickst Du per POST-Methode

    <form method="post" >

    und in PHP erwartest Du GET

    if(isset($GET['name']

    Das wird so nüscht! Dann musst Du auch POST abfragen if(isset($_POST['name']


    //Nachtrag: BTW: $_POST bzw. $_GET (mit Unterstrich dazwischen) wäre korrekt.

  • Ich glaube, wenn das action-Attribut eines form-Elements fehlt wird der POST-Request auf die aktuelle URL abgesetzt.

    Möglich. So spartanisch habe ich das nie gemacht, getestet auch noch nicht. Ich schreibe dann immer:


    PHP
    <form name="form action="<?php echo $target; ?>"

    Wobei in $target die eigene Datei deklariert wurde. Ist flexibel, mann kann auch jede andere Empfangsdatei angeben.


    Bin kein PHP-Kenner, nutze es nur schon seit dem Jahr 2000. Da bleibt so manches hängen, anderes hat man noch nie gesehen.


    Danke

  • Ok.. Im Moment verstehe ich nur Bahnhof.. Wäre jemand so nett mir die Ansteuerung für das Lichtan/ Lichtaus korrekt anzupassen? Dann kann ich mir die restlichen Dinge selber anpassen. Außerdem weiss ich dann wie die Ansteuerung korrekt aussieht und welche Befehle von nöten sind.


    Vielen Dank schon mal für eure Hilfe :danke_ATDE:

  • 1. Also, deine Datei muss die Dateiendung php haben, damit sie geparst wird. Geparst heißt, deine Serversoftware, ob Apache oder andere, ruft den PHP-Interpreter auf, wenn eine Dateiendung php vorhanden ist. So werden die PHP-Scripte auch abgearbeitet. Ist die Dateiendung z.B. html statt php, wird die im Browser der PHP-Code angezeigt, aber nicht ausgeführt.

    Und wie RTFM schrieb, müssen die Rechte zum ausführen vorhanden sein.


    2.

    <form method="post">

    Das ist falsch, wenn du im PHP-Teil dann mi...

    if(isset($_Get['name']))

    ...abfragst. Nimm beim form-Tag auch GET.


    3. Ob das mit dem...

    Code
    trim(@shell_exec(

    ...klappt, weiß ich nicht. Da ist jemand anderes gefragt.

    • Official Post
    Code
    klappt, weiß ich nicht. Da ist jemand anderes gefragt.klappt, weiß ich nicht. Da ist jemand anderes gefragt.

    Das klappt schon, ist aber gaaaanz schlechter Stil. ;)


    shell_exec benutzt man um eine ausführliche Rückgabe, inkl. Fehlermeldungen, des ausgeführten Befehls zu bekommen. Das @ sorgt dagegen dafür, dass eben keine Rückgabe erfolgt, was dann wiederum das trim, das Leer und Steuerzeichen direkt vor und nach der Ausgabe entfernen soll, auch obsolet macht. :no_sad:

  • Okay.. Ich könnte aber auch statt dem $_GET auch $_POST nehmen, richtig? Das wäre egal?


    Dann kontrolliere ich später zu Hause mal ob die Rechte entsprechend vergeben sind und korrigiere das falls nötig.


    hyle: Hast du eine bessere Möglichkeit für mich? Dann übernehme ich das gerne..

  • Echt? So übel? Dabei ist er doch nur winzig klein :neutral:


    Alles klar, ich stelle auf $_GET um.. Scheint im Anschluss auch einfacher zu sein..

  • Ich hab mich mal mit C++ daran gewagt.. Aber davon wurde mir recht schnell abgeraten.. Daher bin ich auf PHP umgeschwenkt.. Weil ich da quasi "alles in einem" habe.. Sprich Aufbau der Website und Ansteuerung der GPIOs...

  • Können keine. C++ verstehen und programmieren im kleinen Stil..



    Kann mir den Code denn für die beiden Buttons jemand mal korrigieren? Dann weiss ich wenigstens mal wie man das überhaupt angeht.

    Btw: Rechte für www-data sind übrigens vergeben..

    Edited once, last by Timmi ().