Lehrerin: Schülern PHP und WENN DANN erklären

Hallo,

ich muss kurz ausholen ich in Lehrerin in Ausbildung. In zwei Tagen muss ich Vertretung in der Computer AG machen. Mein Problem es ist nicht mein Fach. Laut Lehrplan ist in PHP die Funktion "Wenn/Dann" also IF/Else dran. Die Schüler haben auf Ihren Rechnern weder einen Apache oder PHP Installiert (Es ist auch nicht installierbar). Somit würde sich der Unterricht auf FRONTAL Unterricht beschränken. Das ist für Schüler und Lehrer natürlich absolut Langweilig. Daher habe ich auf dem Lehrerrechner eine VM installiert (ich bin ganz stolz auf mich) in dem ein Apache mit PHP läuft.

Die Schüler sollen nun per Browser (der ist auf jedem Rechner installiert) auf die VM zugreifen bzw. auf ein Formular. Die große Textarea ermöglicht den Code ein zu geben und Sie bekommen das Ergebnis z.B. Eingabe:

$lehrer = "bloed";
if ($Lehrer == "bloed"){ echo "Der Unterricht ist langweilig"; }

Ausgabe:

Der Unterricht ist langweilig

Ich bin auf der Suche nach so eine Lösung über den Beitrag: http://forum.selfhtml.org/self/2015/sep/3/php-per-post-variablen-im-text-uebertragen/1649078#m1649078 gestoßen.

Nur verstehe ich Anwendung vermutlich nicht ganz. Ich kann nicht

echo eval($_POST["inhalt"]);

ausführen.

  1. Hallo Lehrerin,

    Die Schüler haben auf Ihren Rechnern weder einen Apache oder PHP Installiert (Es ist auch nicht installierbar). Somit würde sich der Unterricht auf FRONTAL Unterricht beschränken.

    Es gibt beispielsweise http://phptester.net/.

    Bis demnächst
    Matthias

    --
    Signaturen sind bloed (Steel) und Markdown ist mächtig.
    1. Halloechen!

      ... Somit würde sich der Unterricht auf FRONTAL Unterricht beschränken.

      Es gibt beispielsweise http://phptester.net/.

      Ich finde eval.in recht praktisch fuer fixe Codespielereien. Es wird automatisch ein temoraerer Link zu jedem Scriptaufruf generiert. Aus Erfahrung verfallen die Links so etwa nach ner Woche. Vielleicht halten sie mittlerweile laenger.

      Beliebt ist auch Ideone. Ich mags nicht so. Finde es irgendwie schwerfaellig und werbe-ueberladen. Fuer umfangreichere Testereien bietet es aber mehr Moeglichkeiten.

      Jonny 5

  2. Laut Lehrplan ist in PHP die Funktion "Wenn/Dann" also IF/Else dran.

    Ich kenne den Stand dieser "Computer-AG" nicht, aber für das banale Konzept einer if-Klausel kann man keine ganze Unterrichtsstunde brauchen, auch, wenn der Klammerfetisch bei PHP das etwas verkompliziert. Vielleicht solltest du noch was zu while und for vorbereiten, für alle Fälle …

    Ich kann nicht

    echo eval($_POST["inhalt"]);
    

    ausführen.

    "Funzt nicht", dazu gehört auch "ich kann nicht", ist keine Fehlerbeschreibung. Das gilt auch für Lehrerinnen und Lehrer. Was passiert denn bitte? Kommt gar keine Ausgabe, kommt irgendwas unerwartetes, explodiert der Rechner? Da eval zu den hinterletzen Mistfunktionen gehört (in jeder Sprache, merke: "eval is evil"), ist es vielleicht schlicht gesperrt.

    Der übliche Hinweis wäre hier, dass PHP ein Fehlerprotokoll führt, in dem der Fehler, so PHP denn selbst über einen stolpert, ziemlich genau beschrieben wird.

    Zweitens möchtest du für solche einfachen Ausgaben nicht, dass der Browser selbige als HTML-Code interpretiert, alleine schon, weil's kein HTML ist. Führe in deinem Auswerteskript als erstes die Zeile header("Content-Type: text/plain"); aus.

    Und dann noch dieses: Dein Ansinnen in allen Ehren, aber ich bin mir nicht sicher, ob du den Kinderlein wirklich einfach so erlauben willst, beliebigen Code auszuführen. Schau dir auf jeden Fall an, wie du deine virtuelle Lehrermaschine aus einer frischen Kopie (!) neu starten kannst, halte nicht nur eine vor. Hast du Pech, zerlegt dir irgendeines deiner Gören das Arbeitsmaterial – dann ist es von größtem Vorteil, wenn du das in drei Sekunden gerichtet hast (das Arbeitsmaterial, nicht das Gör) und damit jedes hämische Gekicher schon im Ansatz erstickst.

  3. Moin,

    $lehrer = "bloed";
    if ($Lehrer == "bloed"){ echo "Der Unterricht ist langweilig"; }
    

    Ausgabe:

    Der Unterricht ist langweilig

    wird so nicht funktionieren bzw. du wirst direkt ein "NOTICE Undefined variable" zurück bekommen. Fällt dir auf warum? Nein? OK du hast in Zeile eins $lehrer und im if Bereich $Lehrer geschrieben, sind zwei komkpett unterschiedliche Variablen auch wenn du mit beiden das gleiche meinst :)

    Allerdings damit eine Schulstunde zu füllen wird sehr schwer.

    Vielleicht solltest du dich noch etwas mit https://www.join.me/ beschäftigen. Diese Software musst nur du auf deinem Rechner installieren kannst dann deinen Bildschirm für alle anderen freigeben und sofort können deine Kids direkt auf deinem Bildschirm a) sehen was du machst und b) selbst ausprobieren. Dann musst du auch nicht den Umweg über eval() gehen, welches zudem sehr gefährlich ist und wenn du dieses nicht richtig erklärst kann damit mehr Schaden angerichtet werden als alles andere.

    1. Tach!

      Allerdings damit eine Schulstunde zu füllen wird sehr schwer.

      Wenn man beim einfachen if-else stehenbleibt. Man kann dann ja weitergehen und verschachtelte Bedingungen if ... { if ... } else ... und Bedingungsketten if ... else if ... (gibts dafür einen Fachbegriff?) sowie das verwandte switch besprechen.

      dedlfix.

      1. Hallo und guten Morgen,

        Allerdings damit eine Schulstunde zu füllen wird sehr schwer.

        Wenn man beim einfachen if-else stehenbleibt. Man kann dann ja weitergehen und verschachtelte Bedingungen if ... { if ... } else ... und Bedingungsketten if ... else if ... (gibts dafür einen Fachbegriff?) sowie das verwandte switch besprechen.

        Und sollte man auch Dokumentationsmethoden, wie z. B. Nassi-Shneiderman vermitteln?

        Grüße
        TS

        --
        es wachse der Freifunk
        https://harz.freifunk.net
      2. @@dedlfix

        Allerdings damit eine Schulstunde zu füllen wird sehr schwer.

        Wenn man beim einfachen if-else stehenbleibt. Man kann dann ja weitergehen und verschachtelte Bedingungen if ... { if ... } else ... und Bedingungsketten if ... else if ... (gibts dafür einen Fachbegriff?) sowie das verwandte switch besprechen.

        Und das verwandte ?: wie in $a = $condition ? $b : $c;

        LLAP 🖖

        --
        Ist diese Antwort anstößig? Dann könnte sie nützlich sein.
  4. Liebe Lehrerin,

    Laut Lehrplan ist in PHP die Funktion "Wenn/Dann" also IF/Else dran.

    das ist keine Funktion, sondern ein Sprachkonstrukt zum Ablauf von Programmen (eine sogenannte Verzweigung), das nicht nur in PHP so notiert wird, sondern auch in vielen anderen Sprachen (Java, JavaScript, C, C#, C++ usw.).

    Die Schüler haben auf Ihren Rechnern weder einen Apache oder PHP Installiert (Es ist auch nicht installierbar). Somit würde sich der Unterricht auf FRONTAL Unterricht beschränken.

    Nicht unbedingt. Man kann solche Dinge live und in Farbe ausprobieren. Dazu hast Du folgende Möglichkeiten:

    • phptester.net wurde schon genannt
    • boot-fähige DVD/USB-Medien mit einer Linux-Distribution, bei der Apache/PHP schon vorinstalliert ist (erfordert passende BIOS-Einstellung, eventuell mit IT-Verantwortlichen abklären)
    • eine VM (erfordert die Installation von Zusatzsoftware, was nicht immer gern gesehen/erlaubt/möglich ist)
    • Scratch (Wikipedia dazu)
    • JavaScript auf z.B. JSFiddle.net, codepen etc

    Das ist für Schüler und Lehrer natürlich absolut Langweilig. Daher habe ich auf dem Lehrerrechner eine VM installiert (ich bin ganz stolz auf mich) in dem ein Apache mit PHP läuft.

    Sehr gut! Eine VM ist vielleicht eine Option, wenn Du die passende Viewer-Software auf den Rechnern installieren darfst, und wenn das OS in der VM sich nicht an den unterschiedlichen Rechnern stört (Windoof will sich vielleicht erst wieder registrieren lassen).

    Vielleicht ist ein kleines Linux mit vorinstalliertem Apache+PHP für diesen Zweck schlauer? Für meinen Informatik-Unterricht habe ich meine Schüler mit einem Memory-Stick ausgerüstet, auf dem sich ein live-Ubuntu (Linux) befindet, bei dem alle diese Sachen schon installiert sind. Klappt auf jedem Rechner, der beim Hochfahren das Booten von anderen Medien erlaubt.

    Wenn Du nun schöne Spielereien für Verzweigungen im Programm suchst, dann hast Du diese drei Schritte zur Verfügung:

    1. einfache if-Anweisung (ohne else-Zweig)
    2. if-else
    3. switch-Statement für mehrfache Verzweigung

    Meiner Erfahrung nach spielt die verwendete "Programmiersprache" eine absolut untergeordnete Rolle im Unterricht. Ob man da nun mit PHP herumdoktort, oder JavaScript benutzt - für die Schüler ist es lediglich ein Umstand, an den sie sich anpassen. In meinem Unterricht habe ich C#, PHP und JavaScript genutzt. Hat immer gleich gut geklappt. Mit C# mussten wir uns an die starke Typisierung gewöhnen, die PHP und JavaScript nicht haben - aber das ist alles nicht so wichtig, wenn es um rudimentäre Sprachkonstrukte geht.

    Was viel wichtiger ist, sind ansprechende Code-Beispiele, die dazu reizen damit zu experimentieren. Wenn es um User-Eingaben geht, die auszuwerten sind, empfinde ich JavaScript im Rahmen eines HTML-Dokuments viel praktischer, da es in einem Fiddle (siehe oben JSFiddle/codepen) schnell verändert werden kann. Du kannst dort ein Projekt vorbereiten und die Schüler dann damit experimentieren lassen. Wenn Du nicht gar selbst eine solche Umgebung entwickelst.

    Liebe Grüße,

    Felix Riesterer.

    1. Moin Felix,

      Laut Lehrplan ist in PHP die Funktion "Wenn/Dann" also IF/Else dran.

      das ist keine Funktion, sondern ein Sprachkonstrukt zum Ablauf von Programmen (eine sogenannte Verzweigung), das nicht nur in PHP so notiert wird, sondern auch in vielen anderen Sprachen (Java, JavaScript, C, C#, C++ usw.).

      eine weitere übliche Bezeichnung für sowas ist Kontrollstruktur.

      Nicht unbedingt. Man kann solche Dinge live und in Farbe ausprobieren. Dazu hast Du folgende Möglichkeiten:

      • phptester.net wurde schon genannt
      • boot-fähige DVD/USB-Medien mit einer Linux-Distribution, bei der Apache/PHP schon vorinstalliert ist (erfordert passende BIOS-Einstellung, eventuell mit IT-Verantwortlichen abklären)
      • eine VM (erfordert die Installation von Zusatzsoftware, was nicht immer gern gesehen/erlaubt/möglich ist)
      • Scratch (Wikipedia dazu)
      • JavaScript auf z.B. JSFiddle.net, codepen etc

      Ob die letzten beiden Vorschläge Sinn ergeben, entscheidet sich daran, ob es primär um das if/else-Konstrukt allgemein geht, oder speziell um PHP.

      Und du hast vergessen, dass es XAMPP auch als Portable-Version gibt, die direkt von eingem USB-Medium gestartet werden kann.

      Sehr gut! Eine VM ist vielleicht eine Option, wenn Du die passende Viewer-Software auf den Rechnern installieren darfst, und wenn das OS in der VM sich nicht an den unterschiedlichen Rechnern stört (Windoof will sich vielleicht erst wieder registrieren lassen).

      Nein, will es nicht. Eine VM mit einem fertig installierten und aktivierten Windows wird auf jedem Host wieder laufen, als wenn nichts wäre (ausgenommen 64bit-VM auf 32bit-Host). Das ist gerade einer der Vorteile dieser Technik: Die virtuelle Umgebung ist immer dieselbe

      Technisch gesehen kann man also eine fix und fertig eingerichtete Windows-VM auf beliebig viele Rechner verteilen, sogar wenn sie unterschiedliche Hardware-Konfigurationen oder unterschiedliche Host-Bestriebssysteme haben. Allerdings verstößt das gegen die Lizenzbestimmungen von Microsoft.

      Vielleicht ist ein kleines Linux mit vorinstalliertem Apache+PHP für diesen Zweck schlauer?

      Vielleicht. Aber vom Look&Feel für die meisten eine erhebliche Umstellung, weil die Mehrheit der Schüler eben an Windows gewöhnt sein dürfte.

      Schönes Wochenende,
       Martin

  5. Hallo und guten Morgen,

    ich muss kurz ausholen ich in Lehrerin in Ausbildung. In zwei Tagen muss ich Vertretung in der Computer AG machen. Mein Problem es ist nicht mein Fach.

    Dann hole ich auch kurz aus: Gibt es einen Nameservice für den Klassenraum, oder kann die Hosts-Datei auf dem Schülerrechner ergänzt werden oder sind die Rechner so sinnvoll einrichtet, dass beim Start eine (zentrale) Konfigurationsdatei vom Lehrerrechner geladen wird? siehe https://en.wikipedia.org/wiki/LMHOSTS

    Dann wäre es nur noch eine Fleißübung für Dich, den Schülern Verzeihnisse auf dem Server einzurichten, in denen sie lesen und schreiben dürfen (wenn es die nicht sowieso schon gibt) und mittels Copy & Paste und Ersetzen-Funktion auf dem Lehrer-Rechner für jeden einen Virtual Host (eigene Web-Domain) anzulegen. Du musst nur dafür sorgen, dass sie mit ihrem PHP dann nicht doch quer über den Rechner greifen können (openbasedir und die Shell-Funktionen abschalten)

    Dann können sie praktisch üben, jeder kann das Ergebnis des Anderen anschauen, usw.

    Und mach Dich schon mal auf viel Spaß gefasst. Es sind doch bestimmt einige darunter, die die Stunde für Dich übernehmen könnten? Das würde ich übrigens gleich als Option vorsehen. Damit wäre der Wind aus den Segeln genommen. Die Regeln für "Lehrer spielen" gibst Du vor, das Fachliche Feingut liefern die Schüler :-))

    Die "Nicht-Lehrer" dürfen nachher bewerten, wie gut die "Lehrer" den Stoff vermittelt haben.

    @Felix:
    Was würdest Du davon halten?

    Grüße
    TS

    --
    es wachse der Freifunk
    https://harz.freifunk.net
  6. Hallo,

    $lehrer = "bloed";
    if ($Lehrer == "bloed"){ echo "Der Unterricht ist langweilig"; }
    

    also wenn ich an meine Schulzeit zurückdenke, kannst Du Dir die 2. Zeile generell sparen und als Unterrichtsthema 'Konstanten in PHP' (erklärt mit Hilfe von Zeile 1) nehmen! ;)

    Mit lieben Grüßen

    Melvin Cowznofski

    --
    Melvin Cowznofski What – me worry?